diff options
author | Yuri Gorshenin <y@maps.me> | 2017-10-09 16:15:12 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <bykoianko@gmail.com> | 2017-10-13 11:55:26 +0300 |
commit | c3496e52f24a94a0d6bf472ce62e66424ed0f1ee (patch) | |
tree | 326376a3aa326e7f25a691e4cdd0fa016cec60e4 /indexer/indexer_tests | |
parent | 864fd16ddd55b933e3bc9f4c2c0978a94bea9e0c (diff) |
[search] CitiesBoundaryTable is exposed to TestMwmBuilder.
Diffstat (limited to 'indexer/indexer_tests')
-rw-r--r-- | indexer/indexer_tests/cities_boundaries_serdes_tests.cpp | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/indexer/indexer_tests/cities_boundaries_serdes_tests.cpp b/indexer/indexer_tests/cities_boundaries_serdes_tests.cpp index cf608669a1..0d3821941a 100644 --- a/indexer/indexer_tests/cities_boundaries_serdes_tests.cpp +++ b/indexer/indexer_tests/cities_boundaries_serdes_tests.cpp @@ -11,6 +11,7 @@ #include "geometry/point2d.hpp" #include <cstdint> +#include <utility> #include <vector> using namespace indexer; @@ -26,58 +27,63 @@ using Boundaries = vector<Boundary>; static_assert(CitiesBoundariesSerDes::kLatestVersion == 0, ""); static_assert(CitiesBoundariesSerDes::HeaderV0::kDefaultCoordBits == 19, ""); -// Absolute precision of mercator coords encoded with 19 bits. -double const kEps = 1e-3; +struct Result +{ + Result(Boundaries const & boundaries, double eps) : m_boundaries(boundaries), m_eps(eps) {} + + Boundaries m_boundaries; + double m_eps = 0.0; +}; -void TestEqual(vector<PointD> const & lhs, vector<PointD> const & rhs) +void TestEqual(vector<PointD> const & lhs, vector<PointD> const & rhs, double eps) { TEST_EQUAL(lhs.size(), rhs.size(), (lhs, rhs)); for (size_t i = 0; i < lhs.size(); ++i) - TEST(AlmostEqualAbs(lhs[i], rhs[i], kEps), (lhs, rhs)); + TEST(AlmostEqualAbs(lhs[i], rhs[i], eps), (lhs, rhs)); } -void TestEqual(BoundingBox const & lhs, BoundingBox const & rhs) +void TestEqual(BoundingBox const & lhs, BoundingBox const & rhs, double eps) { - TEST(AlmostEqualAbs(lhs.Min(), rhs.Min(), kEps), (lhs, rhs)); - TEST(AlmostEqualAbs(lhs.Max(), rhs.Max(), kEps), (lhs, rhs)); + TEST(AlmostEqualAbs(lhs.Min(), rhs.Min(), eps), (lhs, rhs)); + TEST(AlmostEqualAbs(lhs.Max(), rhs.Max(), eps), (lhs, rhs)); } -void TestEqual(CalipersBox const & lhs, CalipersBox const & rhs) +void TestEqual(CalipersBox const & lhs, CalipersBox const & rhs, double eps) { - TestEqual(lhs.Points(), rhs.Points()); + TestEqual(lhs.Points(), rhs.Points(), eps); } -void TestEqual(DiamondBox const & lhs, DiamondBox const & rhs) +void TestEqual(DiamondBox const & lhs, DiamondBox const & rhs, double eps) { auto const lps = lhs.Points(); auto const rps = rhs.Points(); TEST_EQUAL(lps.size(), 4, (lhs)); TEST_EQUAL(rps.size(), 4, (rhs)); - TestEqual(lps, rps); + TestEqual(lps, rps, eps); } -void TestEqual(CityBoundary const & lhs, CityBoundary const & rhs) +void TestEqual(CityBoundary const & lhs, CityBoundary const & rhs, double eps) { - TestEqual(lhs.m_bbox, rhs.m_bbox); - TestEqual(lhs.m_cbox, rhs.m_cbox); - TestEqual(lhs.m_dbox, rhs.m_dbox); + TestEqual(lhs.m_bbox, rhs.m_bbox, eps); + TestEqual(lhs.m_cbox, rhs.m_cbox, eps); + TestEqual(lhs.m_dbox, rhs.m_dbox, eps); } -void TestEqual(Boundary const & lhs, Boundary const & rhs) +void TestEqual(Boundary const & lhs, Boundary const & rhs, double eps) { TEST_EQUAL(lhs.size(), rhs.size(), (lhs, rhs)); for (size_t i = 0; i < lhs.size(); ++i) - TestEqual(lhs[i], rhs[i]); + TestEqual(lhs[i], rhs[i], eps); } -void TestEqual(Boundaries const & lhs, Boundaries const & rhs) +void TestEqual(Boundaries const & lhs, Boundaries const & rhs, double eps) { TEST_EQUAL(lhs.size(), rhs.size(), (lhs, rhs)); for (size_t i = 0; i < lhs.size(); ++i) - TestEqual(lhs[i], rhs[i]); + TestEqual(lhs[i], rhs[i], eps); } -Boundaries EncodeDecode(Boundaries const & boundaries) +Result EncodeDecode(Boundaries const & boundaries) { vector<uint8_t> buffer; { @@ -87,17 +93,18 @@ Boundaries EncodeDecode(Boundaries const & boundaries) { Boundaries boundaries; + double precision; MemReader reader(buffer.data(), buffer.size()); NonOwningReaderSource source(reader); - CitiesBoundariesSerDes::Deserialize(source, boundaries); - return boundaries; + CitiesBoundariesSerDes::Deserialize(source, boundaries, precision); + return Result(boundaries, precision); } } void TestEncodeDecode(Boundaries const & expected) { - Boundaries const actual = EncodeDecode(expected); - TestEqual(expected, actual); + auto const r = EncodeDecode(expected); + TestEqual(expected, r.m_boundaries, r.m_eps); } UNIT_TEST(CitiesBoundariesSerDes_Smoke) |