7 #include <gtest/gtest.h>
10 TEST(fields2cover_types_multipoint, init) {
12 EXPECT_EQ(ps1.
size(), 0);
15 EXPECT_EQ(ps1.
size(), 2);
17 EXPECT_EQ(ps2.size(), 3);
19 EXPECT_EQ(ps3.
size(), 3);
22 for (
int i = 0; i < 10; ++i) {
25 EXPECT_EQ(ps4.
size(), 10);
26 EXPECT_EQ(ps4[5],
F2CPoint(5, -5, 15));
28 for (
const auto& p : ps4) {
32 for (
auto&& p : ps4) {
36 for (
auto&& p : ps4) {
37 EXPECT_EQ(p.getX(), i -1);
38 EXPECT_EQ(p.getY(), -i +2);
39 EXPECT_EQ(p.getZ(), 3*i -3);
43 EXPECT_THROW(ps4.getGeometry(30, p_error), std::out_of_range);
44 EXPECT_THROW(ps4.getGeometry(30), std::out_of_range);
47 const auto ps5 = ps4.clone();
48 EXPECT_EQ(ps5.size(), 10);
49 for (
int i = 0; i < ps5.size(); ++i) {
51 EXPECT_EQ(p.
getX(), 2*(i -1));
52 EXPECT_EQ(p.
getY(), 2*(-i +2));
53 EXPECT_EQ(p.
getZ(), 2*(3*i -3));
55 EXPECT_THROW(ps5.getGeometry(30, p_error), std::out_of_range);
56 EXPECT_THROW(ps5.getGeometry(30), std::out_of_range);
59 EXPECT_EQ(ps4.size(), 12);
60 for (
int i = 0; i < ps5.size(); ++i) {
62 EXPECT_EQ(p.
getX(), 2*(i -1));
63 EXPECT_EQ(p.
getY(), 2*(-i +2));
64 EXPECT_EQ(p.
getZ(), 2*(3*i -3));
66 EXPECT_EQ(ps4.getGeometry(10),
F2CPoint(1,1));
67 EXPECT_EQ(ps4.getGeometry(11),
F2CPoint(2,1));
70 TEST(fields2cover_types_multipoint, getGeometry) {
72 EXPECT_EQ(ps1.size(), 4);
73 EXPECT_EQ(ps1.getGeometry(0).getX(), 1);
74 EXPECT_EQ(ps1.getGeometry(0).getY(), 2);
75 EXPECT_EQ(ps1.getGeometry(0).getZ(), 0);
76 EXPECT_EQ(ps1.getGeometry(3).getX(), 9);
77 EXPECT_EQ(ps1.getGeometry(3).getY(), 4);
78 EXPECT_EQ(ps1.getGeometry(3).getZ(), 0.2);
81 EXPECT_EQ(ps2.
size(), 4);
90 TEST(fields2cover_types_multipoint, getAngles) {
92 EXPECT_EQ(ps1.size(), 4);
93 EXPECT_NEAR(ps1.getOutAngle(0), M_PI / 4.0, 1e-7);
94 EXPECT_NEAR(ps1.getInAngle(1), M_PI / 4.0, 1e-7);
95 EXPECT_NEAR(ps1.getOutAngle(1), M_PI, 1e-7);
96 EXPECT_NEAR(ps1.getInAngle(2), M_PI, 1e-7);
97 EXPECT_NEAR(ps1.getOutAngle(2), 7.0 * M_PI / 4.0, 1e-7);
98 EXPECT_NEAR(ps1.getInAngle(3), 7.0 * M_PI / 4.0, 1e-7);
99 EXPECT_THROW(ps1.getInAngle(0), std::invalid_argument);
100 EXPECT_THROW(ps1.getOutAngle(3), std::invalid_argument);