Branch data Line data Source code
1 : : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 : : //
3 : : // Copyright (C) 2018-2021 Intel Corporation
4 : : //
5 : : // SPDX-License-Identifier: MIT
6 : : //
7 : : // ----------------- END LICENSE BLOCK -----------------------------------
8 : :
9 : : #include <ad/map/serialize/SerializerFileCRC32.hpp>
10 : : #include <gtest/gtest.h>
11 : :
12 : : #include "../access/FactoryTests.hpp"
13 : :
14 : : using namespace ::ad::map::serialize;
15 : :
16 : : struct SerializationTest : public FactoryTest
17 : : {
18 : 3 : SerializationTest()
19 : 3 : {
20 : 3 : }
21 : :
22 : 1 : bool compareStores(access::Store const &left, access::Store const &right)
23 : : {
24 [ + - + - : 1 : if (left.isValid() && right.isValid())
+ - ]
25 : : {
26 [ + - + - : 3 : bool equal = (left.getMetaData() == right.getMetaData()) && (left.getPartitions() == right.getPartitions())
+ - + - +
- + - - -
- - ]
27 [ + - + - : 3 : && (left.getLanes() == right.getLanes()) && (left.getLandmarks() == right.getLandmarks());
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- - - - -
- - - - ]
28 : :
29 [ + - + + ]: 4 : for (auto laneId : left.getLanes())
30 : : {
31 [ + - + - : 3 : equal = equal && *left.getLanePtr(laneId) == *right.getLanePtr(laneId);
+ - + - +
- + - + -
- - - - ]
32 : : }
33 [ + - + + ]: 2 : for (auto landmarkId : left.getLandmarks())
34 : : {
35 [ + - + - : 1 : equal = equal && *left.getLandmarkPtr(landmarkId) == *right.getLandmarkPtr(landmarkId);
+ - + - +
- + - + -
- - - - ]
36 : : }
37 : 1 : return equal;
38 : : }
39 : : else
40 : : {
41 : 0 : return false;
42 : : }
43 : : }
44 : :
45 : 1 : template <typename SerializationFile> void TestSerializationFile(const char *test_file_name)
46 : : {
47 : 1 : size_t version_major_write = ::ad::map::serialize::SerializerFileCRC32::VERSION_MAJOR;
48 : 1 : size_t version_minor_write = ::ad::map::serialize::SerializerFileCRC32::VERSION_MINOR;
49 : :
50 [ + - ]: 1 : SerializationFile serializer(true);
51 [ + - + - : 1 : ASSERT_TRUE(serializer.open(test_file_name, version_major_write, version_minor_write));
- + - - -
- - - -
- ]
52 [ + - - + : 1 : ASSERT_TRUE(mStorePtr->save(serializer));
- - - - -
- - - ]
53 [ + - - + : 1 : ASSERT_TRUE(serializer.close());
- - - - -
- - - ]
54 : :
55 : 1 : size_t version_major_read = 0xBAD;
56 : 1 : size_t version_minor_read = 0xBAD;
57 : :
58 [ + - ]: 1 : SerializationFile deserializer(false);
59 [ + - + - : 1 : ASSERT_TRUE(deserializer.open(test_file_name, version_major_read, version_minor_read));
- + - - -
- - - -
- ]
60 [ + - - + : 1 : ASSERT_EQ(version_major_write, version_major_read);
- - - - -
- ]
61 [ + - - + : 1 : ASSERT_EQ(version_minor_read, version_minor_write);
- - - - -
- ]
62 [ + - + - : 1 : access::Store::Ptr readStore(new access::Store());
+ - ]
63 [ + - - + : 1 : ASSERT_TRUE(readStore->load(deserializer));
- - - - -
- - - ]
64 [ + - - + : 1 : ASSERT_TRUE(deserializer.close());
- - - - -
- - - ]
65 : :
66 [ + - - + : 1 : ASSERT_TRUE(compareStores(*mStorePtr, *readStore));
- - - - -
- - - ]
67 : : }
68 : : };
69 : :
70 : 2 : TEST_F(SerializationTest, TestSerializationFileCRC32)
71 : : {
72 : 1 : TestSerializationFile<SerializerFileCRC32>("test_files/test_serialization_crc32.adm");
73 : 1 : }
74 : :
75 : 2 : TEST_F(SerializationTest, TestMapVersion)
76 : : {
77 : 1 : size_t version_major = 0;
78 : 1 : size_t version_minor = 0;
79 : : // read the map
80 [ + - ]: 1 : SerializerFileCRC32 deserializer(false);
81 [ + - + - : 4 : ASSERT_THROW(deserializer.open("test_files/testmap_wrong_version.adm", version_major, version_minor),
+ - + - -
+ - + - -
- - - - -
- ]
82 : : std::runtime_error);
83 : :
84 [ + - + - : 1 : access::Store::Ptr store(new access::Store());
+ - ]
85 : :
86 : : // write the map
87 [ + - ]: 1 : SerializerFileCRC32 serializer(true);
88 [ + - + - ]: 1 : serializer.open("test_files/test_map_version_correct.adm", version_major, version_minor);
89 [ + - ]: 1 : store->save(serializer);
90 [ + - ]: 1 : serializer.close();
91 : :
92 [ + - ]: 1 : SerializerFileCRC32 deserializer_correct(false);
93 [ + - + - : 1 : ASSERT_TRUE(deserializer_correct.open("test_files/test_map_version_correct.adm", version_major, version_minor));
- + - - -
- - - -
- ]
94 [ + - - + : 1 : ASSERT_TRUE(store->load(deserializer_correct));
- - - - -
- - - ]
95 [ + - - + : 1 : ASSERT_TRUE(deserializer_correct.close());
- - - - -
- - - ]
96 : :
97 : : // check the version number
98 [ + - - + : 1 : ASSERT_EQ(::ad::map::serialize::SerializerFileCRC32::VERSION_MAJOR, version_major);
- - - - -
- ]
99 [ + - - + : 1 : ASSERT_EQ(::ad::map::serialize::SerializerFileCRC32::VERSION_MINOR, version_minor);
- - - - -
- ]
100 : : }
101 : :
102 : 2 : TEST_F(SerializationTest, BadBranch)
103 : : {
104 : 1 : size_t version_major = 0;
105 : 1 : size_t version_minor = 0;
106 [ + - + - : 1 : access::Store::Ptr store0(new access::Store());
+ - ]
107 [ + - + - : 1 : access::Store::Ptr store1(new access::Store());
+ - ]
108 : :
109 : 1 : uint16_t temp = 0;
110 [ + - ]: 1 : SerializerFileCRC32 serializerW(true);
111 [ + - - + : 1 : ASSERT_FALSE(serializerW.close());
- - - - -
- - - ]
112 [ + - - + : 1 : ASSERT_FALSE(serializerW.serialize(temp));
- - - - -
- - - ]
113 [ + - + - : 1 : ASSERT_TRUE(serializerW.open("test_files/test_map_version_correct.adm", version_major, version_minor));
- + - - -
- - - -
- ]
114 [ + - + - : 1 : ASSERT_FALSE(serializerW.open("test_files/test_map_version_correct.adm", version_major, version_minor));
- + - - -
- - - -
- ]
115 [ + - - + : 1 : ASSERT_FALSE(store0->load(serializerW));
- - - - -
- - - ]
116 [ + - - + : 1 : ASSERT_TRUE(store0->save(serializerW));
- - - - -
- - - ]
117 [ + - - + : 1 : ASSERT_TRUE(serializerW.close());
- - - - -
- - - ]
118 [ + - - + : 1 : ASSERT_FALSE(serializerW.close());
- - - - -
- - - ]
119 : :
120 [ + - ]: 1 : SerializerFileCRC32 serializerR(false);
121 [ + - - + : 1 : ASSERT_FALSE(serializerR.close());
- - - - -
- - - ]
122 [ + - - + : 1 : ASSERT_FALSE(serializerR.serialize(temp));
- - - - -
- - - ]
123 [ + - + - : 1 : ASSERT_TRUE(serializerR.open("test_files/test_map_version_correct.adm", version_major, version_minor));
- + - - -
- - - -
- ]
124 [ + - + - : 1 : ASSERT_FALSE(serializerR.open("test_files/test_map_version_correct.adm", version_major, version_minor));
- + - - -
- - - -
- ]
125 [ + - - + : 1 : ASSERT_FALSE(store1->save(serializerR));
- - - - -
- - - ]
126 [ + - - + : 1 : ASSERT_TRUE(store1->load(serializerR));
- - - - -
- - - ]
127 [ + - - + : 1 : ASSERT_TRUE(serializerR.close());
- - - - -
- - - ]
128 [ + - - + : 1 : ASSERT_FALSE(serializerR.close());
- - - - -
- - - ]
129 : : }
|