1 #include <cppunit/CompilerOutputter.h> 2 #include <cppunit/TestCaller.h> 3 #include <cppunit/TestFixture.h> 4 #include <cppunit/extensions/TestFactoryRegistry.h> 5 #include <cppunit/ui/text/TestRunner.h> 6 7 #include "header10.hh" 8 #include "headererror.hh" 9 10 class Header10Test : public CppUnit::TestFixture { 11 public: suite()12 static CppUnit::TestSuite *suite() { 13 CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite("Header 1.0"); 14 15 suiteOfTests->addTest(new CppUnit::TestCaller<Header10Test>( 16 "should serialize and deserialize with constructor", 17 &Header10Test::serializeAndDeserializeWithCtor)); 18 suiteOfTests->addTest(new CppUnit::TestCaller<Header10Test>( 19 "should serialize and deserialize by assignment", 20 &Header10Test::serializeAndDeserializeWithAssignment)); 21 suiteOfTests->addTest(new CppUnit::TestCaller<Header10Test>( 22 "should throw on deserializing invalid header", 23 &Header10Test::invalidHeader)); 24 25 return suiteOfTests; 26 } 27 serializeAndDeserializeWithCtor()28 void serializeAndDeserializeWithCtor() { 29 yapet::Header10 header10{}; 30 31 yapet::SecureArray serialized{header10.serialize()}; 32 33 yapet::Header10 fromSerializedHeader{serialized}; 34 35 CPPUNIT_ASSERT(header10.passwordSetTime() == 36 fromSerializedHeader.passwordSetTime()); 37 CPPUNIT_ASSERT(header10.version() == fromSerializedHeader.version()); 38 } 39 serializeAndDeserializeWithAssignment()40 void serializeAndDeserializeWithAssignment() { 41 yapet::Header10 header10{}; 42 43 yapet::SecureArray serialized = header10.serialize(); 44 45 yapet::Header10 fromSerializedHeader{serialized}; 46 47 CPPUNIT_ASSERT(header10.passwordSetTime() == 48 fromSerializedHeader.passwordSetTime()); 49 CPPUNIT_ASSERT(header10.version() == fromSerializedHeader.version()); 50 } 51 invalidHeader()52 void invalidHeader() { 53 yapet::Header10 invalidHeader{std::time(0), 3}; 54 55 yapet::SecureArray serialized{invalidHeader.serialize()}; 56 57 yapet::Header10 deserializedHeader{}; 58 CPPUNIT_ASSERT_THROW(deserializedHeader = serialized, 59 yapet::HeaderError); 60 61 yapet::Header10 header{}; 62 63 serialized = header.serialize(); 64 (*serialized)[4] = 'Z'; 65 66 CPPUNIT_ASSERT_THROW(deserializedHeader = serialized, 67 yapet::ControlStringMismatch); 68 } 69 }; 70 main()71int main() { 72 CppUnit::TextUi::TestRunner runner; 73 runner.addTest(Header10Test::suite()); 74 return runner.run() ? 0 : 1; 75 }