MCPcopy Create free account
hub / github.com/comaps/comaps / UNIT_TEST

Function UNIT_TEST

generator/generator_tests/coasts_test.cpp:110–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108};
109
110UNIT_TEST(CellID_CheckRectPoints)
111{
112 int const level = 6;
113 int const count = 1 << 2 * level;
114
115 using Id = m2::CellId<19>;
116 using Converter = CellIdConverter<mercator::Bounds, Id>;
117
118 for (size_t i = 0; i < count; ++i)
119 {
120 Id const cell = Id::FromBitsAndLevel(i, level);
121 std::pair<uint32_t, uint32_t> const xy = cell.XY();
122 uint32_t const r = 2 * cell.Radius();
123 uint32_t const bound = (1 << level) * r;
124
125 double minX, minY, maxX, maxY;
126 Converter::GetCellBounds(cell, minX, minY, maxX, maxY);
127
128 double minX_, minY_, maxX_, maxY_;
129 if (xy.first > r)
130 {
131 Id neighbour = Id::FromXY(xy.first - r, xy.second, level);
132 Converter::GetCellBounds(neighbour, minX_, minY_, maxX_, maxY_);
133
134 TEST_ALMOST_EQUAL_ULPS(minX, maxX_, ());
135 TEST_ALMOST_EQUAL_ULPS(minY, minY_, ());
136 TEST_ALMOST_EQUAL_ULPS(maxY, maxY_, ());
137
138 TEST_EQUAL(D2I(minX, minY), D2I(maxX_, minY_), ());
139 TEST_EQUAL(D2I(minX, maxY), D2I(maxX_, maxY_), ());
140 }
141
142 if (xy.first + r < bound)
143 {
144 Id neighbour = Id::FromXY(xy.first + r, xy.second, level);
145 Converter::GetCellBounds(neighbour, minX_, minY_, maxX_, maxY_);
146
147 TEST_ALMOST_EQUAL_ULPS(maxX, minX_, ());
148 TEST_ALMOST_EQUAL_ULPS(minY, minY_, ());
149 TEST_ALMOST_EQUAL_ULPS(maxY, maxY_, ());
150
151 TEST_EQUAL(D2I(maxX, minY), D2I(minX_, minY_), ());
152 TEST_EQUAL(D2I(maxX, maxY), D2I(minX_, maxY_), ());
153 }
154
155 if (xy.second > r)
156 {
157 Id neighbour = Id::FromXY(xy.first, xy.second - r, level);
158 Converter::GetCellBounds(neighbour, minX_, minY_, maxX_, maxY_);
159
160 TEST_ALMOST_EQUAL_ULPS(minY, maxY_, ());
161 TEST_ALMOST_EQUAL_ULPS(minX, minX_, ());
162 TEST_ALMOST_EQUAL_ULPS(maxX, maxX_, ());
163
164 TEST_EQUAL(D2I(minX, minY), D2I(minX_, maxY_), ());
165 TEST_EQUAL(D2I(maxX, minY), D2I(maxX_, maxY_), ());
166 }
167

Callers

nothing calls this directly

Calls 3

XYMethod · 0.80
RadiusMethod · 0.80
D2IFunction · 0.70

Tested by

no test coverage detected