7 #include <gtest/gtest.h>
10 TEST(fields2cover_types_cells, constructor) {
15 EXPECT_EQ(
cells.size(), 0);
19 EXPECT_EQ(
cells.area(), 1);
20 EXPECT_EQ(cells_clone.area(), 1);
21 EXPECT_EQ(cells_clone.getGeometry(0).area(), 1);
24 auto ring2 = ring1.clone();
26 auto ring3 = ring1 +
F2CPoint(0.5, 0.5);
28 EXPECT_EQ(cell2.
area(), 0);
29 cells.addGeometry(cell2);
30 cells.addRing(1, ring2);
31 cells.addRing(1, ring3);
32 EXPECT_EQ(
cells.getInteriorRing(1, 0).length(), 4);
34 OGRGeometryCollection gc;
36 EXPECT_EQ(empty_cells.size(), 0);
39 EXPECT_THROW(
cells.getGeometry(100, error_cell), std::out_of_range);
40 EXPECT_THROW(cells_clone.getGeometry(100, error_cell), std::out_of_range);
41 EXPECT_THROW(
cells.getGeometry(100), std::out_of_range);
42 EXPECT_THROW(cells_clone.getGeometry(100), std::out_of_range);
45 TEST(fields2cover_types_cells, difference) {
52 EXPECT_EQ(ring1.size(), 5);
53 EXPECT_EQ(ring2.size(), 5);
54 EXPECT_EQ(cell1.
area(), 4);
55 EXPECT_EQ(cell2.
area(), 4);
56 EXPECT_EQ(
F2CCells(cell1).area(), 4);
57 EXPECT_EQ(
F2CCells(cell2).area(), 4);
61 TEST(fields2cover_types_cells, unionOp) {
68 EXPECT_EQ(ring1.size(), 5);
69 EXPECT_EQ(ring2.size(), 5);
70 EXPECT_EQ(cell1.
area(), 4);
71 EXPECT_EQ(cell2.
area(), 4);
72 EXPECT_EQ(
F2CCells(cell1).area(), 4);
73 EXPECT_EQ(
F2CCells(cell2).area(), 4);
77 TEST(fields2cover_types_cells, buffer) {
81 EXPECT_GE(
cells.area(), 32);
82 EXPECT_LE(
cells.area(), 36);
84 EXPECT_EQ(
cells.area(), 0);
89 EXPECT_GT(cells2.
area(), 0.8 *
cells.area());
92 EXPECT_EQ(
cells.area(), 0);
95 TEST(fields2cover_types_cells, intersection) {
103 EXPECT_EQ(cells2.intersection(cell1).area(), 2);
107 TEST(fields2cover_types_cells, LongLines) {
117 EXPECT_NEAR(
line1.getX(0), 0, 1e-3);
118 EXPECT_NEAR(
line1.getY(0), 0, 1e-3);
119 EXPECT_NEAR(
line1.getX(1), -2*sqrt(2.), 1e-3);
120 EXPECT_NEAR(
line1.getY(1), 2*sqrt(2.), 1e-3);
121 EXPECT_NEAR(
line2.getX(0), 2*sqrt(2.), 1e-3);
122 EXPECT_NEAR(
line2.getY(0), -2*sqrt(2.), 1e-3);
123 EXPECT_NEAR(
line2.getX(1), -2*sqrt(2.), 1e-3);
124 EXPECT_NEAR(
line2.getY(1), 2*sqrt(2.), 1e-3);
127 TEST(fields2cover_types_cells, WherePoint) {
142 EXPECT_EQ(
cells.getCellWherePoint(
F2CPoint(5, 5)).area(), 0);
143 EXPECT_EQ(
cells.getCellWherePoint(
F2CPoint(1, 1)).area(), 4);
144 EXPECT_EQ(
cells.getCellWherePoint(
F2CPoint(0, 0)).area(), 4);
145 EXPECT_EQ(
cells.getCellWherePoint(
F2CPoint(11, 11)).area(), 6);
148 TEST(fields2cover_types_cells, setGeometry) {
157 EXPECT_EQ(
cells.area(), 0);
158 EXPECT_EQ(
cells.size(), 0);
160 cells.setGeometry(0, cell2);
161 EXPECT_EQ(
cells.area(), 16);
162 EXPECT_EQ(
cells.size(), 1);
164 cells.setGeometry(0, cell1);
165 EXPECT_EQ(
cells.area(), 4);
166 EXPECT_EQ(
cells.size(), 1);
169 EXPECT_EQ(
cells.area(), 4);
170 EXPECT_EQ(
cells.size(), 2);
172 cells.setGeometry(10, cell2);
173 EXPECT_EQ(
cells.area(), 20);
174 EXPECT_EQ(
cells.size(), 11);
176 cells.setGeometry(0, cell3);
177 EXPECT_EQ(
cells.area(), 32);
178 EXPECT_EQ(
cells.size(), 11);
182 TEST(fields2cover_types_cells, splitByLine) {
192 EXPECT_NEAR(split_cells.
size(), 4, 1e-7);
193 EXPECT_NEAR(split_cells.
getGeometry(0).area(), 9, 1e-7);
194 EXPECT_NEAR(split_cells.
getGeometry(1).area(), 3, 1e-7);
195 EXPECT_NEAR(split_cells.
getGeometry(2).area(), 2, 1e-7);
196 EXPECT_NEAR(split_cells.
getGeometry(3).area(), 6, 1e-7);
199 TEST(fields2cover_types_cells, isPointIn) {