LineIteratorTest.cpp
Go to the documentation of this file.
1 /*
2  * LineIteratorTest.cpp
3  *
4  * Created on: Sep 14, 2016
5  * Author: Dominic Jud
6  * Institute: ETH Zurich, ANYbotics
7  */
8 
11 
12 // gtest
13 #include <gtest/gtest.h>
14 
15 namespace grid_map {
16 
17 TEST(LineIterator, StartOutsideMap) {
18  GridMap map( { "types" });
19  map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0));
20 
21  EXPECT_NO_THROW(LineIterator iterator(map, Position(2.0, 2.0), Position(0.0, 0.0)));
22  LineIterator iterator(map, Position(2.0, 2.0), Position(0.0, 0.0));
23 
24  EXPECT_FALSE(iterator.isPastEnd());
25  EXPECT_EQ(2, (*iterator)(0));
26  EXPECT_EQ(0, (*iterator)(1));
27 
28  ++iterator;
29  EXPECT_FALSE(iterator.isPastEnd());
30  EXPECT_EQ(3, (*iterator)(0));
31  EXPECT_EQ(1, (*iterator)(1));
32 
33  ++iterator;
34  EXPECT_FALSE(iterator.isPastEnd());
35  EXPECT_EQ(4, (*iterator)(0));
36  EXPECT_EQ(2, (*iterator)(1));
37 
38  ++iterator;
39  EXPECT_TRUE(iterator.isPastEnd());
40 }
41 
42 TEST(LineIterator, EndOutsideMap)
43 {
44  GridMap map( { "types" });
45  map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0));
46 
47  EXPECT_NO_THROW(LineIterator iterator(map, Position(0.0, 0.0), Position(9.0, 6.0)));
48  LineIterator iterator(map, Position(0.0, 0.0), Position(9.0, 6.0));
49 
50  EXPECT_FALSE(iterator.isPastEnd());
51  EXPECT_EQ(4, (*iterator)(0));
52  EXPECT_EQ(2, (*iterator)(1));
53 
54  ++iterator;
55  EXPECT_FALSE(iterator.isPastEnd());
56  EXPECT_EQ(3, (*iterator)(0));
57  EXPECT_EQ(1, (*iterator)(1));
58 
59  ++iterator;
60  EXPECT_FALSE(iterator.isPastEnd());
61  EXPECT_EQ(2, (*iterator)(0));
62  EXPECT_EQ(1, (*iterator)(1));
63 
64  ++iterator;
65  EXPECT_FALSE(iterator.isPastEnd());
66  ++iterator;
67  EXPECT_FALSE(iterator.isPastEnd());
68  ++iterator;
69  EXPECT_TRUE(iterator.isPastEnd());
70 }
71 
72 TEST(LineIterator, StartAndEndOutsideMap)
73 {
74  GridMap map( { "types" });
75  map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0));
76 
77  EXPECT_NO_THROW(LineIterator iterator(map, Position(-7.0, -9.0), Position(8.0, 8.0)));
78  LineIterator iterator(map, Position(-7.0, -9.0), Position(8.0, 8.0));
79 
80  EXPECT_FALSE(iterator.isPastEnd());
81  EXPECT_EQ(5, (*iterator)(0));
82  EXPECT_EQ(4, (*iterator)(1));
83 
84  ++iterator;
85  EXPECT_FALSE(iterator.isPastEnd());
86  EXPECT_EQ(4, (*iterator)(0));
87  EXPECT_EQ(3, (*iterator)(1));
88 
89  ++iterator;
90  EXPECT_FALSE(iterator.isPastEnd());
91  EXPECT_EQ(3, (*iterator)(0));
92  EXPECT_EQ(2, (*iterator)(1));
93 
94  ++iterator;
95  ++iterator;
96  ++iterator;
97  EXPECT_TRUE(iterator.isPastEnd());
98 }
99 
100 TEST(LineIterator, StartAndEndOutsideMapWithoutIntersectingMap)
101 {
102  GridMap map( { "types" });
103  map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0));
104 
105  EXPECT_THROW(LineIterator iterator(map, Position(-8.0, 8.0), Position(8.0, 8.0)), std::invalid_argument);
106 }
107 
108 TEST(LineIterator, MovedMap)
109 {
110  GridMap map( { "types" });
111  map.setGeometry(Length(7.0, 5.0), 1.0, Position(0.0, 0.0));
112  map.move(Position(2.0, 2.0));
113 
114  EXPECT_NO_THROW(LineIterator iterator(map, Position(0.0, 0.0), Position(2.0, 2.0)));
115  LineIterator iterator(map, Position(0.0, 0.0), Position(2.0, 2.0));
116  Position point;
117 
118  EXPECT_FALSE(iterator.isPastEnd());
119  map.getPosition(*iterator, point);
120  EXPECT_EQ(0, point.x());
121  EXPECT_EQ(0, point.y());
122 
123  ++iterator;
124  EXPECT_FALSE(iterator.isPastEnd());
125  map.getPosition(*iterator, point);
126  EXPECT_EQ(1, point.x());
127  EXPECT_EQ(1, point.y());
128 
129  ++iterator;
130  EXPECT_FALSE(iterator.isPastEnd());
131  map.getPosition(*iterator, point);
132  EXPECT_EQ(2, point.x());
133  EXPECT_EQ(2, point.y());
134 
135  ++iterator;
136  EXPECT_TRUE(iterator.isPastEnd());
137 }
138 
139 TEST(LineIterator, StartAndEndOutsideMovedMap)
140 {
141  GridMap map( { "types" });
142  map.setGeometry(Length(7.0, 5.0), 1.0, Position(0.0, 0.0));
143  map.move(Position(2.0, 2.0));
144 
145  EXPECT_NO_THROW(LineIterator iterator(map, Position(0.0, 0.0), Position(8.0, 8.0)));
146  LineIterator iterator(map, Position(0.0, 0.0), Position(8.0, 8.0));
147  Position point;
148 
149  EXPECT_FALSE(iterator.isPastEnd());
150  map.getPosition(*iterator, point);
151  EXPECT_EQ(0, point.x());
152  EXPECT_EQ(0, point.y());
153 
154  ++iterator;
155  map.getPosition(*iterator, point);
156  EXPECT_EQ(1, point.x());
157  EXPECT_EQ(1, point.y());
158  //
159  ++iterator;
160  map.getPosition(*iterator, point);
161  EXPECT_EQ(2, point.x());
162  EXPECT_EQ(2, point.y());
163  //
164  ++iterator;
165  map.getPosition(*iterator, point);
166  EXPECT_EQ(3, point.x());
167  EXPECT_EQ(3, point.y());
168 
169  ++iterator;
170  map.getPosition(*iterator, point);
171  EXPECT_EQ(4, point.x());
172  EXPECT_EQ(4, point.y());
173 
174  ++iterator;
175  EXPECT_TRUE(iterator.isPastEnd());
176 }
177 
178 } // namespace grid_map
void setGeometry(const Length &length, const double resolution, const Position &position=Position::Zero())
Definition: GridMap.cpp:44
Eigen::Vector2d Position
Definition: TypeDefs.hpp:18
Eigen::Array2d Length
Definition: TypeDefs.hpp:24
TEST(PositionFromIndex, Simple)


grid_map_core
Author(s): Péter Fankhauser
autogenerated on Wed Jul 5 2023 02:23:35