diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2017-10-31 10:04:16 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-10-31 17:49:30 +0300 |
commit | 6ead5a1b79f76db69ccf81e3401b75f5119b490a (patch) | |
tree | eeef3e98d55667cc682e71ec85adbd4b667fbfc9 | |
parent | 9b695237032e0b705fdd6741efc8b55b90dec570 (diff) |
Test on transit section header rewriting.
-rw-r--r-- | routing_common/routing_common_tests/transit_test.cpp | 34 | ||||
-rw-r--r-- | routing_common/transit_types.hpp | 3 |
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 { |