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:
authorYury Melnichek <melnichek@gmail.com>2011-09-10 17:11:54 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:23:33 +0300
commitacd44853d0a81f7f44d157393d1330eeacf96403 (patch)
treee4e1e24c841fd5106be70034537129b7e449a363 /geometry/geometry_tests/covering_test.cpp
parent4be41d23fef29b2565b5daa62f81fa77a487352e (diff)
Restore class Covering.
Diffstat (limited to 'geometry/geometry_tests/covering_test.cpp')
-rw-r--r--geometry/geometry_tests/covering_test.cpp128
1 files changed, 128 insertions, 0 deletions
diff --git a/geometry/geometry_tests/covering_test.cpp b/geometry/geometry_tests/covering_test.cpp
index e67fc6acfb..a419b4354c 100644
--- a/geometry/geometry_tests/covering_test.cpp
+++ b/geometry/geometry_tests/covering_test.cpp
@@ -1,4 +1,132 @@
#include "../../testing/testing.hpp"
+#include "../cellid.hpp"
+#include "../covering.hpp"
#include "../covering_utils.hpp"
+#include "../point2d.hpp"
+#include "../../base/stl_add.hpp"
+
// TODO: Add covering unit tests here.
+
+
+typedef m2::CellId<5> CellId;
+
+UNIT_TEST(CoverTriangle_Simple)
+{
+ vector<CellId> v;
+ covering::Covering<CellId> c(m2::PointD(3*2, 3*2), m2::PointD(4*2, 12*2), m2::PointD(14*2, 3*2));
+ c.OutputToVector(v);
+ vector<CellId> e;
+ e.push_back(CellId("03"));
+ e.push_back(CellId("003"));
+ e.push_back(CellId("012"));
+ e.push_back(CellId("013"));
+ e.push_back(CellId("102"));
+ e.push_back(CellId("103"));
+ e.push_back(CellId("112"));
+ e.push_back(CellId("120"));
+ e.push_back(CellId("121"));
+ e.push_back(CellId("122"));
+ e.push_back(CellId("210"));
+ e.push_back(CellId("211"));
+ e.push_back(CellId("212"));
+ e.push_back(CellId("0211"));
+ e.push_back(CellId("0213"));
+ e.push_back(CellId("0231"));
+ e.push_back(CellId("0233"));
+ e.push_back(CellId("1130"));
+ e.push_back(CellId("1132"));
+ e.push_back(CellId("1230"));
+ e.push_back(CellId("1300"));
+ e.push_back(CellId("2011"));
+ e.push_back(CellId("2013"));
+ e.push_back(CellId("2031"));
+ e.push_back(CellId("2033"));
+ e.push_back(CellId("2130"));
+ e.push_back(CellId("2211"));
+ e.push_back(CellId("2300"));
+ e.push_back(CellId("3000"));
+ TEST_EQUAL(v, e, ());
+}
+
+UNIT_TEST(CoverTriangle_TriangleInsideCell)
+{
+ vector<CellId> v;
+ covering::Covering<CellId> c(m2::PointD(0.1, 0.1), m2::PointD(0.2, 0.2), m2::PointD(0.2, 0.4));
+ c.OutputToVector(v);
+ vector<CellId> e;
+ e.push_back(CellId("0000"));
+ TEST_EQUAL(v, e, ());
+}
+
+UNIT_TEST(Covering_Append_Simple)
+{
+ vector<CellId> v1, v2, v3;
+
+ v1.push_back(CellId("012"));
+ v2.push_back(CellId("0123"));
+ v3.push_back(CellId("012"));
+
+ v1.push_back(CellId("023"));
+ v2.push_back(CellId("023"));
+ v3.push_back(CellId("023"));
+
+ v1.push_back(CellId("130"));
+ v1.push_back(CellId("131"));
+ v2.push_back(CellId("133"));
+ v1.push_back(CellId("1320"));
+ v1.push_back(CellId("1321"));
+ v2.push_back(CellId("1322"));
+ v2.push_back(CellId("1323"));
+ v3.push_back(CellId("13"));
+
+ covering::Covering<CellId> c1(v1);
+ c1.Append(covering::Covering<CellId>(v2));
+ vector<CellId> v4;
+ c1.OutputToVector(v4);
+ sort(v4.begin(), v4.end(), CellId::LessStackOrder());
+ TEST_EQUAL(v3, v4, ());
+}
+
+UNIT_TEST(IntersectCellWithTriangle_EmptyTriangle)
+{
+ m2::PointU pt(27, 31);
+ TEST_EQUAL(covering::CELL_OBJECT_NO_INTERSECTION,
+ covering::IntersectCellWithTriangle(CellId("0"), pt, pt, pt), ());
+ TEST_EQUAL(covering::CELL_OBJECT_NO_INTERSECTION,
+ covering::IntersectCellWithTriangle(CellId("1"), pt, pt, pt), ());
+ TEST_EQUAL(covering::CELL_OBJECT_NO_INTERSECTION,
+ covering::IntersectCellWithTriangle(CellId("2"), pt, pt, pt), ());
+ TEST_EQUAL(covering::OBJECT_INSIDE_CELL,
+ covering::IntersectCellWithTriangle(CellId("3"), pt, pt, pt), ());
+}
+
+UNIT_TEST(Covering_EmptyTriangle)
+{
+ m2::PointU pt(27, 31);
+ CellId const expectedCellId = CellId::FromXY(pt.x, pt.y);
+ TEST_GREATER(expectedCellId.ToInt64(), 5, ());
+ covering::Covering<CellId> covering(pt, pt, pt);
+ vector<CellId> ids;
+ covering.OutputToVector(ids);
+ TEST_EQUAL(ids, vector<CellId>(1, expectedCellId), ());
+}
+
+UNIT_TEST(Covering_Simplify_Smoke)
+{
+ vector<CellId> v;
+ v.push_back(CellId("03"));
+ v.push_back(CellId("020"));
+ v.push_back(CellId("021"));
+ v.push_back(CellId("022"));
+ v.push_back(CellId("0012"));
+ covering::Covering<CellId> covering(v);
+ v.clear();
+ covering.Simplify();
+ covering.OutputToVector(v);
+ vector<CellId> e;
+ e.push_back(CellId("02"));
+ e.push_back(CellId("03"));
+ e.push_back(CellId("0012"));
+ TEST_EQUAL(v, e, ());
+}