#include #include #include #include #include #include #include #include #include TEST_CASE("Point", "Test1") { ais::Point p(2, 2); CHECK(p.in_line(ais::Point(0, 0), ais::Point(1, 1), false)); CHECK(p.in_line(ais::Point(0, 0), ais::Point(3, 3))); std::vector region{{0, 0}, {0, 1}, {1, 1}, {1, 0}, {0, 0}}; std::vector region1{{0, 0}, {0, 3}, {3, 3}, {3, 0}, {0, 0}}; std::vector region2{{0, 0}, {0, 2}, {2, 2}, {2, 0}, {0, 0}}; std::vector region3{{1, 1}, {2, 3}, {4, 2}, {2, 0}, {1, 1}}; CHECK(!p.in_polygon(region)); CHECK(p.in_polygon(region1)); CHECK(p.in_polygon(region2)); CHECK(p.in_polygon(region3)); ais::PointXYZ p1("2.3,15,-1"); REQUIRE(p1 == ais::PointXYZ(2.3, 15, -1)); } TEST_CASE("PointInterpolate", "Test1") { ais::Point3D p1(2, 2, 2); ais::Point3D p2(4, 4, 4); ais::Point3D p3(2, 4, 6); ais::Point3D p(3.5, 2.5, INFINITY); auto z1 = p.point_interpolate(p1, p2, p3); auto z2 = p.point_interpolate(p2, p3, p1); auto z3 = p.point_interpolate(p3, p1, p2); std::cout << z1 << std::endl; std::cout << z2 << std::endl; std::cout << z3 << std::endl; } TEST_CASE("Polygon", "Test1") { std::vector p1{{2, 5}, {7, 5}, {7, 10}, {2, 10}, {2, 5}}; std::vector p2{{2, 2}, {2, 3}, {3, 3}, {3, 2}, {2, 2}}; CHECK(!ais::polygon_intersect(p1, p2)); } TEST_CASE("Triangle", "Test1") { std::vector p{{1.78, 1.4}, {2, 1.1}, {2.43, 3.3}, {3.3, 2.22}, {2.3, 1.88}}; std::vector> t; ais::delaunay_triangulation(p, t); CHECK(t.size() == 4); } TEST_CASE("PointInterpolate0", "Test2") { ais::Point3D p1(2, 2, 2); ais::Point3D p2(4, 4, 0); ais::Point3D p3(2, 4, 0); ais::Point3D p(3.5, 2.5, INFINITY); auto z1 = p.point_interpolate(p1, p2, p3); auto z2 = p.point_interpolate(p2, p3, p1); auto z3 = p.point_interpolate(p3, p1, p2); std::cout << z1 << std::endl; std::cout << z2 << std::endl; std::cout << z3 << std::endl; } TEST_CASE("BreakLine", "Test1") { ais::BreakLine bl("4,1\n0.0465, 2.1455,-10\n4.6455, 3.5975,-8\n6.969, 5.4365,-4.5\n8.9055, 6.89,-5.5\n"); CHECK(bl.points.size() == 4); std::cout << bl << std::endl; ais::BreakLineFile blf("DemoBreakLine.bln"); for (auto kv : blf.lines) { std::cout << kv.second << std::endl; } } TEST_CASE("Fault", "Test1") { ais::Fault fault("4,1\n0.0465, 2.1455,-10\n4.6455, 3.5975,-8\n6.969, 5.4365,-4.5\n8.9055, 6.89,-5.5\n"); CHECK(fault.points.size() == 4); std::cout << fault << std::endl; ais::FaultFile blf("DemoFault.bln"); for (auto kv : blf.faults) { std::cout << kv.second << std::endl; } ais::FaultFile blf2("Faults.dat"); for (auto kv : blf2.faults) { std::cout << kv.second << std::endl; } ais::FaultFile blf3("Faults.dfd"); for (auto kv : blf3.faults) { std::cout << kv.second << std::endl; } ais::Fault fault2("4,1\n0,0\n2,2\n2,5\n5,5\n"); std::cout << fault2 << std::endl; ais::Point p1{2, 3}; CHECK(p1.in_polylines(fault2.points)); }