7 #include <gtest/gtest.h>
10 TEST(fields2cover_types_cell, constructor) {
16 F2CCell cell3 {
static_cast<OGRGeometry*
>(
cell.get())};
18 EXPECT_EQ(
cell.area(), 4);
19 EXPECT_EQ(cell2.area(), 4);
20 EXPECT_EQ(cell3.area(), 4);
21 EXPECT_EQ(cell_clone.area(), 4);
24 EXPECT_THROW(
F2CCell(line.get()), std::invalid_argument);
27 TEST(fields2cover_types_cell, setGeometry) {
33 EXPECT_EQ(
cell.area(), 0);
34 EXPECT_EQ(
cell.size(), 0);
37 EXPECT_EQ(
cell.area(), 16);
38 EXPECT_EQ(
cell.size(), 1);
40 cell.setGeometry(0, line);
41 EXPECT_EQ(
cell.area(), 4);
42 EXPECT_EQ(
cell.size(), 1);
45 EXPECT_EQ(
cell.area(), 4);
46 EXPECT_EQ(
cell.size(), 2);
48 cell.setGeometry(10, line);
49 EXPECT_EQ(
cell.area(), 0);
50 EXPECT_EQ(
cell.size(), 11);
53 EXPECT_EQ(
cell.area(), 12);
54 EXPECT_EQ(
cell.size(), 11);
57 TEST(fields2cover_types_cell, area) {
60 EXPECT_EQ(
cell.area(), 4);
63 TEST(fields2cover_types_cell, eq_mult_operator) {
67 EXPECT_EQ(
cell.area(), 400);
71 TEST(fields2cover_types_cell, addRing) {
79 EXPECT_EQ(ring1.size(), 5);
80 EXPECT_EQ(ring2.size(), 5);
83 EXPECT_EQ(cell1.
area(), 4);
86 EXPECT_EQ(cell1.
area(), 3);
87 EXPECT_EQ(cell1.
size(), 2);
90 EXPECT_EQ(cell_ring1.size(), 5);
91 EXPECT_EQ(cell_ring1.length(), 8);
93 EXPECT_EQ(cell_ring2.size(), 5);
94 EXPECT_EQ(cell_ring2.length(), 4);
98 EXPECT_EQ(cell_ring3.
size(), 5);
99 EXPECT_EQ(cell_ring3.
length(), 8);
101 EXPECT_EQ(cell_ring4.
size(), 5);
102 EXPECT_EQ(cell_ring4.
length(), 4);
108 EXPECT_EQ(cell_ring5.
size(), 5);
109 EXPECT_EQ(cell_ring5.
length(), 8);
111 EXPECT_EQ(cell_ring6.
size(), 5);
112 EXPECT_EQ(cell_ring6.
length(), 4);
115 EXPECT_EQ(cell_ring7.size(), 5);
116 EXPECT_EQ(cell_ring7.length(), 8);
118 EXPECT_EQ(cell_ring8.size(), 5);
119 EXPECT_EQ(cell_ring8.length(), 4);
122 EXPECT_THROW(cell1.
getGeometry(100, error_ring), std::out_of_range);
123 EXPECT_THROW(cell2.
getGeometry(100, error_ring), std::out_of_range);
124 EXPECT_THROW(cell1.
getGeometry(100), std::out_of_range);
125 EXPECT_THROW(cell2.
getGeometry(100), std::out_of_range);
128 TEST(fields2cover_types_cell, createLineUntilBorder) {
134 auto line =
cell.createLineUntilBorder(
F2CPoint(1, 1), 0);
136 EXPECT_EQ(line.size(), 2);
137 if (line.size() == 2) {
138 EXPECT_EQ(line.getX(0), 1);
139 EXPECT_EQ(line.getY(0), 1);
140 EXPECT_EQ(line.getX(1), 2);
141 EXPECT_EQ(line.getY(1), 1);
145 EXPECT_EQ(
line2.size(), 2);
146 EXPECT_EQ(
line2.getX(0), -1);
147 EXPECT_EQ(
line2.getY(0), 1);
148 EXPECT_EQ(
line2.getX(1), 0);
149 EXPECT_EQ(
line2.getY(1), 1);
152 TEST(fields2cover_types_cell, isPointInBorder) {
164 TEST(fields2cover_types_cell, isPointIn) {
176 TEST(fields2cover_types_cell, convexHull) {
178 F2CPoint(0,0),
F2CPoint(1,0),
F2CPoint(1,1),
F2CPoint(0.5, 0.5),
F2CPoint(0,1),
F2CPoint(0,0)};
180 EXPECT_EQ(
cell.area(), 0.75);
181 EXPECT_EQ(
cell.convexHull().area(), 1.0);
185 TEST(fields2cover_types_cell, buffer) {
189 EXPECT_EQ(
cell.area(), 1);
192 EXPECT_NEAR(ring_buffer.area(), 0.08, 1e-5);
195 EXPECT_EQ(
cell.area(), 1);
196 EXPECT_NEAR(cell_buffer.area(), 5*5, 1e-2);
200 EXPECT_NEAR(point_buffer.area(), 9*3.141593, 1e-1);
201 EXPECT_EQ(p.getX(), 1);
202 EXPECT_EQ(p.getY(), 2);
206 EXPECT_NEAR(line_buffer.area(), 2 * 2 * 4, 1e-1);
209 TEST(fields2cover_types_sstr, NumberStringConcat) {
211 EXPECT_EQ(result,
"word10another word2030");
213 std::stringstream ss;
216 EXPECT_EQ(result,
"a101010a");
219 EXPECT_EQ(result,
"aa1010");