LinearRing_test.cpp
Go to the documentation of this file.
1 //=============================================================================
2 // Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
3 // Author: Gonzalo Mier
4 // BSD-3 License
5 //=============================================================================
6 
7 #include <gtest/gtest.h>
8 #include "fields2cover/types.h"
9 
10 TEST(fields2cover_types_linearring, init) {
11  F2CLinearRing ring1;
12  EXPECT_EQ(ring1.size(), 0);
13 
14  ring1.addPoint(1,1);
15  ring1.addPoint(2,1);
16  EXPECT_EQ(ring1.size(), 2);
17 
18  F2CLinearRing ring2{F2CPoint(1,2), F2CPoint(3,2), F2CPoint(1,3)};
19  EXPECT_EQ(ring2.size(), 3);
20 
21 
22  F2CPoint error_p;
23  const F2CLinearRing c_line = ring1.clone();
24  EXPECT_THROW(ring1.getGeometry(100, error_p), std::out_of_range);
25  EXPECT_THROW(c_line.getGeometry(100, error_p), std::out_of_range);
26  EXPECT_THROW(ring1.getGeometry(100), std::out_of_range);
27  EXPECT_THROW(c_line.getGeometry(100), std::out_of_range);
28 }
29 
30 TEST(fields2cover_types_linearring, area) {
31  std::vector<F2CPoint> ps{F2CPoint(-1,2), F2CPoint(3,2), F2CPoint(-1,3), F2CPoint(-1,2)};
33  EXPECT_EQ(ring.area(), 2);
34 }
35 
36 TEST(fields2cover_types_linearring, mult_equal) {
37  std::vector<F2CPoint> ps{F2CPoint(1,2), F2CPoint(3,2), F2CPoint(1,3)};
39  ring *= 10.0;
40  EXPECT_EQ(ring.size(), 3);
41  EXPECT_EQ(ring.getGeometry(0).getX(), 10);
42  EXPECT_EQ(ring.getGeometry(1).getX(), 30);
43  EXPECT_EQ(ring.getGeometry(2).getX(), 10);
44  EXPECT_EQ(ring.getY(0), 20);
45  EXPECT_EQ(ring.getY(1), 20);
46  EXPECT_EQ(ring.getY(2), 30);
47  EXPECT_EQ(ring.getZ(2), 0);
48  ring *= -0.01;
49  auto p = ring.endPoint();
50  EXPECT_EQ(p.getX(), -0.1);
51  EXPECT_EQ(p.getY(), -0.3);
52  EXPECT_EQ(p.getZ(), 0);
53  const auto ring2 = ring.clone();
54  auto c_p = ring2.getGeometry(1);
55  EXPECT_EQ(c_p.getX(), -0.3);
56  EXPECT_EQ(c_p.getY(), -0.2);
57 }
58 
59 
60 TEST(fields2cover_types_linearring, loop) {
61  F2CLinearRing line(std::vector<F2CPoint>({F2CPoint(1,2), F2CPoint(3,4), F2CPoint(5,6)}));
62  int i = 1;
63  for (const F2CPoint& p : line) {
64  EXPECT_EQ(p, F2CPoint(i, i+1));
65  i += 2;
66  }
67  i = 1;
68  for (F2CPoint& p : line) {
69  EXPECT_EQ(p, F2CPoint(i, i+1));
70  i += 2;
71  }
72  i = 1;
73  for (auto&& p : line) {
74  EXPECT_EQ(p, F2CPoint(i, i+1));
75  i += 2;
76  }
77 }
78 
79 
types.h
f2c::types::Geometries::clone
SAMETYPE clone() const
Definition: Geometries_impl.hpp:19
f2c::types::LinearRing::addPoint
void addPoint(double x, double y, double z=0)
Definition: LinearRing.cpp:105
f2c::types::LinearRing
Definition: LinearRing.h:18
TEST
TEST(fields2cover_types_linearring, init)
Definition: LinearRing_test.cpp:10
f2c::types::LinearRing::getGeometry
void getGeometry(size_t i, Point &point)
Definition: LinearRing.cpp:59
1_basic_types.ring
ring
Definition: 1_basic_types.py:68
8_complete_flow.ps
list ps
Definition: 8_complete_flow.py:43
f2c::types::Point
Definition: Point.h:21
f2c::types::LinearRing::size
size_t size() const
Definition: LinearRing.cpp:55
F2CPoint
f2c::types::Point F2CPoint
Definition: types.h:38


fields2cover
Author(s):
autogenerated on Fri Apr 25 2025 02:18:31