Add explicit test for type mismatch on binary serialization

This commit is contained in:
Martchus 2019-03-08 17:40:36 +01:00
parent 04852627b2
commit 0bf19df0d9
1 changed files with 8 additions and 0 deletions

View File

@ -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<int> 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<int>(42);
deserializer.read(readPtr);
CPPUNIT_ASSERT(readPtr != nullptr);