Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2017-10-31 10:04:16 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2017-10-31 17:49:30 +0300
commit6ead5a1b79f76db69ccf81e3401b75f5119b490a (patch)
treeeeef3e98d55667cc682e71ec85adbd4b667fbfc9
parent9b695237032e0b705fdd6741efc8b55b90dec570 (diff)
Test on transit section header rewriting.
-rw-r--r--routing_common/routing_common_tests/transit_test.cpp34
-rw-r--r--routing_common/transit_types.hpp3
2 files changed, 36 insertions, 1 deletions
diff --git a/routing_common/routing_common_tests/transit_test.cpp b/routing_common/routing_common_tests/transit_test.cpp
index 8e258b5c65..49fcb1ecee 100644
--- a/routing_common/routing_common_tests/transit_test.cpp
+++ b/routing_common/routing_common_tests/transit_test.cpp
@@ -47,6 +47,40 @@ void TestSerialization(Obj const & obj)
TestCommonSerialization<Serializer<MemWriter<vector<uint8_t>>>,
Deserializer<ReaderSource<MemReader>>>(obj);
}
+
+UNIT_TEST(Transit_HeaderRewriting)
+{
+ TransitHeader const bigHeader(1 /* version */, 1000 /* gatesOffset */, 200000 /* edgesOffset */,
+ 300000 /* transfersOffset */, 400000 /* linesOffset */,
+ 5000000 /* shapesOffset */, 6000000 /* networksOffset */,
+ 700000000 /* endOffset */);
+
+ TransitHeader header;
+ vector<uint8_t> buffer;
+ MemWriter<vector<uint8_t>> writer(buffer);
+
+ // Writing.
+ auto const startOffset = writer.Pos();
+ FixSizeNumberSerializer<MemWriter<vector<uint8_t>>> serializer(writer);
+ header.Visit(serializer);
+ auto const endOffset = writer.Pos();
+
+ // Rewriting.
+ header = bigHeader;
+
+ writer.Seek(startOffset);
+ header.Visit(serializer);
+ writer.Seek(endOffset);
+
+ // Reading.
+ MemReader reader(buffer.data(), buffer.size());
+ ReaderSource<MemReader> src(reader);
+ TransitHeader deserializedHeader;
+ FixSizeNumberDeserializer<ReaderSource<MemReader>> deserializer(src);
+ deserializedHeader.Visit(deserializer);
+
+ TEST(deserializedHeader.IsEqualForTesting(bigHeader), (deserializedHeader, bigHeader));
+}
} // namespace transit
} // namespace routing
diff --git a/routing_common/transit_types.hpp b/routing_common/transit_types.hpp
index 395da67b9e..915132ed69 100644
--- a/routing_common/transit_types.hpp
+++ b/routing_common/transit_types.hpp
@@ -48,7 +48,8 @@ Weight constexpr kInvalidWeight = -1.0;
std::string const & osmIdsToFeatureIdPath, \
std::string const & transitDir); \
template <class Ser, class Deser, class Obj> \
- void friend TestCommonSerialization(Obj const & obj); \
+ friend void TestCommonSerialization(Obj const & obj); \
+ friend void UnitTest_Transit_HeaderRewriting(); \
struct TransitHeader
{