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 "metadata.hh"
8
9 class MetaDataTest : public CppUnit::TestFixture {
10 public:
suite()11 static CppUnit::TestSuite *suite() {
12 CppUnit::TestSuite *suiteOfTests =
13 new CppUnit::TestSuite("Meta Data Test");
14
15 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
16 "should set and get meta data", &MetaDataTest::basic));
17
18 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
19 "should get proper size", &MetaDataTest::size));
20
21 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
22 "should throw on non-existing key",
23 &MetaDataTest::throwOnNonExistingKey));
24
25 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
26 "should deserialize empty SecureArray",
27 &MetaDataTest::serializeEmptySecureArray));
28
29 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
30 "should throw on deserializing invalid SecureArray",
31 &MetaDataTest::throwOnInvalidSecureArray));
32
33 suiteOfTests->addTest(new CppUnit::TestCaller<MetaDataTest>(
34 "should serialize and deserialize",
35 &MetaDataTest::serializeAndDeserialize));
36 return suiteOfTests;
37 }
38
basic()39 void basic() {
40 yapet::MetaData metaData;
41
42 metaData.setValue("test", 42);
43 CPPUNIT_ASSERT(metaData.getValue("test") == 42);
44 }
45
size()46 void size() {
47 yapet::MetaData metaData;
48 CPPUNIT_ASSERT(metaData.size() == 0);
49
50 metaData.setValue("test", 42);
51 CPPUNIT_ASSERT(metaData.size() == 1);
52 }
53
throwOnNonExistingKey()54 void throwOnNonExistingKey() {
55 yapet::MetaData metaData;
56
57 CPPUNIT_ASSERT_THROW(metaData.getValue("non-existing"),
58 std::out_of_range);
59 }
60
serializeEmptySecureArray()61 void serializeEmptySecureArray() {
62 yapet::MetaData metaData{yapet::SecureArray{}};
63 }
64
throwOnInvalidSecureArray()65 void throwOnInvalidSecureArray() {
66 yapet::SecureArray secureArray{yapet::toSecureArray("test")};
67
68 CPPUNIT_ASSERT_THROW(yapet::MetaData{secureArray},
69 std::invalid_argument);
70 }
71
serializeAndDeserialize()72 void serializeAndDeserialize() {
73 yapet::MetaData metaData;
74 metaData.setValue("a", 42);
75 metaData.setValue("longerName", 5);
76 metaData.setValue("b", 3);
77
78 auto serialized{metaData.serialize()};
79
80 yapet::MetaData deserialized{serialized};
81 CPPUNIT_ASSERT(deserialized.getValue("a") == 42);
82 CPPUNIT_ASSERT(deserialized.getValue("b") == 3);
83 CPPUNIT_ASSERT(deserialized.getValue("longerName") == 5);
84 }
85 };
86
main()87 int main() {
88 CppUnit::TextUi::TestRunner runner;
89 runner.addTest(MetaDataTest::suite());
90 return runner.run() ? 0 : 1;
91 }
92