From 0bf19df0d9da55a142b6e908245b967d1d987fc1 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 8 Mar 2019 17:40:36 +0100 Subject: [PATCH] Add explicit test for type mismatch on binary serialization --- lib/tests/binaryreflector.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/tests/binaryreflector.cpp b/lib/tests/binaryreflector.cpp index 56af157..01a805e 100644 --- a/lib/tests/binaryreflector.cpp +++ b/lib/tests/binaryreflector.cpp @@ -313,7 +313,15 @@ void BinaryReflectorTests::testSharedPointer(uintptr_t fakePointer) serializer.m_pointer[fakePointer] = true; serializer.write(sharedPointer); + // deserialize the shared pointer assuming it has already been read and the type does not match + BinaryReflector::BinaryDeserializer deserializer(&stream); + shared_ptr readPtr; + deserializer.m_pointer[fakePointer] = "foo"; + CPPUNIT_ASSERT_THROW(deserializer.read(readPtr), ConversionUtilities::ConversionException); + CPPUNIT_ASSERT(readPtr == nullptr); + // deserialize the shared pointer assuming it has already been read and the type matches + stream.seekg(0); deserializer.m_pointer[fakePointer] = make_shared(42); deserializer.read(readPtr); CPPUNIT_ASSERT(readPtr != nullptr);