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:
authorAlex Zolotarev <deathbaba@gmail.com>2010-12-05 19:24:16 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-22 22:33:57 +0300
commitd6e12b7ce4bcbf0ccd1c07eb25de143422913c34 (patch)
treea7e910c330ce4da9b4f2d8be76067adece2561c4 /geometry/geometry_tests/point_test.cpp
One Month In Minsk. Made in Belarus.
Diffstat (limited to 'geometry/geometry_tests/point_test.cpp')
-rw-r--r--geometry/geometry_tests/point_test.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/geometry/geometry_tests/point_test.cpp b/geometry/geometry_tests/point_test.cpp
new file mode 100644
index 0000000000..609ce8c84d
--- /dev/null
+++ b/geometry/geometry_tests/point_test.cpp
@@ -0,0 +1,59 @@
+#include "../../base/SRC_FIRST.hpp"
+#include "../../testing/testing.hpp"
+#include "equality.hpp"
+#include "../point2d.hpp"
+
+UNIT_TEST(Point_Rotate)
+{
+ m2::PointD p(1.0, 0.0);
+ p.Rotate(math::pi / 6.0);
+ TEST(test::is_equal(p.x, sqrt(3.0) / 2.0), ());
+ TEST(test::is_equal(p.y, 1.0 / 2.0), ());
+}
+
+UNIT_TEST(PointInTriangle)
+{
+ m2::PointD const a(1, 0);
+ m2::PointD const b(2, 0);
+ m2::PointD const c(-1, 3);
+
+ TEST(!m2::IsPointStrictlyInsideTriangle(a, a, a, a), ());
+
+ TEST(!m2::IsPointStrictlyInsideTriangle(a, a, a, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(b, a, a, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(a, a, b, a), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(b, a, b, a), ());
+
+ TEST(!m2::IsPointStrictlyInsideTriangle(a, a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(a, a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(b, a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(b, a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(c, a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(c, a, c, b), ());
+
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.5), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.5), a, c, b), ());
+ TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.77), a, b, c), ());
+ TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.77), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 2), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 2), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 1), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 1), a, c, b), ());
+ TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 0.5), a, b, c), ());
+ TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 0.5), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(100, 100), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(100, 100), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(5, 0), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(5, 0), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(-1, -1), a, c, b), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 0.5), a, b, c), ());
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 0.5), a, c, b), ());
+}
+
+UNIT_TEST(PointInTriangle_EmptyTriangle)
+{
+ m2::PointD pt(27, 31);
+ TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 16), pt, pt, pt), ());
+}