diff --git a/geometry/geometry_tests/polyline_tests.cpp b/geometry/geometry_tests/polyline_tests.cpp index 0fcbf4587e..2fa253501f 100644 --- a/geometry/geometry_tests/polyline_tests.cpp +++ b/geometry/geometry_tests/polyline_tests.cpp @@ -14,19 +14,18 @@ void TestClosest(m2::PolylineD const & poly, m2::PointD const & point, double ex uint32_t expectedIndex) { auto const closest = poly.CalcMinSquaredDistance(m2::PointD(point)); - TEST(base::AlmostEqualAbs(closest.first, expectedSquaredDist, kEps), - (closest.first, expectedSquaredDist)); - TEST_EQUAL(closest.second, expectedIndex, (closest.second, expectedIndex)); + TEST_ALMOST_EQUAL_ABS(closest.first, expectedSquaredDist, kEps, ()); + TEST_EQUAL(closest.second, expectedIndex, ()); } UNIT_TEST(Rect_PolylineSmokeTest) { m2::PolylineD poly = {{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}}; TEST_EQUAL(poly.GetSize(), 3, ()); - TEST(base::AlmostEqualAbs(poly.GetLength(), 2.0, kEps), ()); + TEST_ALMOST_EQUAL_ABS(poly.GetLength(), 2.0, kEps, ()); auto const limitRect = poly.GetLimitRect(); - TEST(base::AlmostEqualAbs(limitRect.LeftBottom(), m2::PointD(0.0, 0.0), kEps), ()); + TEST_ALMOST_EQUAL_ABS(limitRect.LeftBottom(), m2::PointD(0.0, 0.0), kEps, ()); TEST(base::AlmostEqualAbs(limitRect.RightTop(), m2::PointD(1.0, 1.0), kEps), ()); poly.PopBack(); @@ -51,4 +50,3 @@ UNIT_TEST(Rect_PolylineMinDistanceTest) TestClosest(poly, m2::PointD(3.0, 1.0), 0.0 /* expectedSquaredDist */, 4 /* expectedIndex */); } } // namespace - diff --git a/geometry/polyline2d.hpp b/geometry/polyline2d.hpp index 7132798fc2..8e7328571b 100644 --- a/geometry/polyline2d.hpp +++ b/geometry/polyline2d.hpp @@ -69,8 +69,8 @@ public: /// a zero-based closest segment index. std::pair CalcMinSquaredDistance(m2::Point const & point) const { - CHECK(!m_points.empty(), ()); - auto squaredClosetSegDist = std::numeric_limits::max(); + CHECK_GREATER(m_points.size(), 1, ()); + auto squaredClosestSegDist = std::numeric_limits::max(); Iter const beginning = Begin(); Iter i = beginning; @@ -79,14 +79,14 @@ public: { m2::ParametrizedSegment> seg(*i, *j); auto const squaredSegDist = seg.SquaredDistanceToPoint(point); - if (squaredSegDist < squaredClosetSegDist) + if (squaredSegDist < squaredClosestSegDist) { closestSeg = i; - squaredClosetSegDist = squaredSegDist; + squaredClosestSegDist = squaredSegDist; } } - return std::make_pair(squaredClosetSegDist, + return std::make_pair(squaredClosestSegDist, static_cast(std::distance(beginning, closestSeg))); }