test/submap_iterator.cpp
Go to the documentation of this file.
1 
4 /*****************************************************************************
5 ** Includes
6 *****************************************************************************/
7 
8 #include "../include/cost_map_core/common.hpp"
9 #include "../include/cost_map_core/iterators/submap_iterator.hpp"
10 
11 #include <Eigen/Core>
12 
13 // gtest
14 #include <gtest/gtest.h>
15 
16 // Limits
17 #include <cfloat>
18 
19 // Vector
20 #include <vector>
21 #include "../include/cost_map_core/cost_map.hpp"
22 
23 using namespace std;
24 using namespace Eigen;
25 
26 TEST(SubmapIterator, Simple)
27 {
28  Eigen::Array2i submapTopLeftIndex(3, 1);
29  Eigen::Array2i submapBufferSize(3, 2);
30  Eigen::Array2i index;
31  Eigen::Array2i submapIndex;
32 
33  vector<string> types;
34  types.push_back("type");
35  cost_map::CostMap map(types);
36  map.setGeometry(Array2d(8.1, 5.1), 1.0, Vector2d(0.0, 0.0)); // bufferSize(8, 5)
37 
38  cost_map::SubmapIterator iterator(map, submapTopLeftIndex, submapBufferSize);
39 
40  EXPECT_FALSE(iterator.isPastEnd());
41  EXPECT_EQ(submapTopLeftIndex(0), (*iterator)(0));
42  EXPECT_EQ(submapTopLeftIndex(1), (*iterator)(1));
43  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
44  EXPECT_EQ(0, iterator.getSubmapIndex()(1));
45 
46  ++iterator;
47  EXPECT_FALSE(iterator.isPastEnd());
48  EXPECT_EQ(3, (*iterator)(0));
49  EXPECT_EQ(2, (*iterator)(1));
50  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
51  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
52 
53  ++iterator;
54  EXPECT_FALSE(iterator.isPastEnd());
55  EXPECT_EQ(4, (*iterator)(0));
56  EXPECT_EQ(1, (*iterator)(1));
57  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
58  EXPECT_EQ(0, iterator.getSubmapIndex()(1));
59 
60  ++iterator;
61  EXPECT_FALSE(iterator.isPastEnd());
62  EXPECT_EQ(4, (*iterator)(0));
63  EXPECT_EQ(2, (*iterator)(1));
64  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
65  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
66 
67  ++iterator;
68  EXPECT_FALSE(iterator.isPastEnd());
69  EXPECT_EQ(5, (*iterator)(0));
70  EXPECT_EQ(1, (*iterator)(1));
71  EXPECT_EQ(2, iterator.getSubmapIndex()(0));
72  EXPECT_EQ(0, iterator.getSubmapIndex()(1));
73 
74  ++iterator;
75  EXPECT_FALSE(iterator.isPastEnd());
76  EXPECT_EQ(5, (*iterator)(0));
77  EXPECT_EQ(2, (*iterator)(1));
78  EXPECT_EQ(2, iterator.getSubmapIndex()(0));
79  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
80 
81  ++iterator;
82  EXPECT_TRUE(iterator.isPastEnd());
83  EXPECT_EQ(5, (*iterator)(0));
84  EXPECT_EQ(2, (*iterator)(1));
85  EXPECT_EQ(2, iterator.getSubmapIndex()(0));
86  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
87 }
88 
89 TEST(SubmapIterator, CircularBuffer)
90 {
91  Eigen::Array2i submapTopLeftIndex(6, 3);
92  Eigen::Array2i submapBufferSize(2, 4);
93  Eigen::Array2i index;
94  Eigen::Array2i submapIndex;
95 
96  vector<string> types;
97  types.push_back("type");
98  cost_map::CostMap map(types);
99  map.setGeometry(Array2d(8.1, 5.1), 1.0, Vector2d(0.0, 0.0)); // bufferSize(8, 5)
100  map.move(Vector2d(-3.0, -2.0)); // bufferStartIndex(3, 2)
101 
102  cost_map::SubmapIterator iterator(map, submapTopLeftIndex, submapBufferSize);
103 
104  EXPECT_FALSE(iterator.isPastEnd());
105  EXPECT_EQ(submapTopLeftIndex(0), (*iterator)(0));
106  EXPECT_EQ(submapTopLeftIndex(1), (*iterator)(1));
107  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
108  EXPECT_EQ(0, iterator.getSubmapIndex()(1));
109 
110  ++iterator;
111  EXPECT_FALSE(iterator.isPastEnd());
112  EXPECT_EQ(6, (*iterator)(0));
113  EXPECT_EQ(4, (*iterator)(1));
114  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
115  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
116 
117  ++iterator;
118  EXPECT_FALSE(iterator.isPastEnd());
119  EXPECT_EQ(6, (*iterator)(0));
120  EXPECT_EQ(0, (*iterator)(1));
121  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
122  EXPECT_EQ(2, iterator.getSubmapIndex()(1));
123 
124  ++iterator;
125  EXPECT_FALSE(iterator.isPastEnd());
126  EXPECT_EQ(6, (*iterator)(0));
127  EXPECT_EQ(1, (*iterator)(1));
128  EXPECT_EQ(0, iterator.getSubmapIndex()(0));
129  EXPECT_EQ(3, iterator.getSubmapIndex()(1));
130 
131  ++iterator;
132  EXPECT_FALSE(iterator.isPastEnd());
133  EXPECT_EQ(7, (*iterator)(0));
134  EXPECT_EQ(3, (*iterator)(1));
135  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
136  EXPECT_EQ(0, iterator.getSubmapIndex()(1));
137 
138  ++iterator;
139  EXPECT_FALSE(iterator.isPastEnd());
140  EXPECT_EQ(7, (*iterator)(0));
141  EXPECT_EQ(4, (*iterator)(1));
142  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
143  EXPECT_EQ(1, iterator.getSubmapIndex()(1));
144 
145  ++iterator;
146  EXPECT_FALSE(iterator.isPastEnd());
147  EXPECT_EQ(7, (*iterator)(0));
148  EXPECT_EQ(0, (*iterator)(1));
149  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
150  EXPECT_EQ(2, iterator.getSubmapIndex()(1));
151 
152  ++iterator;
153  EXPECT_FALSE(iterator.isPastEnd());
154  EXPECT_EQ(7, (*iterator)(0));
155  EXPECT_EQ(1, (*iterator)(1));
156  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
157  EXPECT_EQ(3, iterator.getSubmapIndex()(1));
158 
159  ++iterator;
160  EXPECT_TRUE(iterator.isPastEnd());
161  EXPECT_EQ(7, (*iterator)(0));
162  EXPECT_EQ(1, (*iterator)(1));
163  EXPECT_EQ(1, iterator.getSubmapIndex()(0));
164  EXPECT_EQ(3, iterator.getSubmapIndex()(1));
165 }
166 
167 int main(int argc, char **argv)
168 {
169  testing::InitGoogleTest(&argc, argv);
170  srand((int)time(0));
171  return RUN_ALL_TESTS();
172 }
void setGeometry(const Length &length, const double resolution, const Position &position=Position::Zero())
bool move(const Position &position, std::vector< BufferRegion > &newRegions)
int main(int argc, char **argv)
TEST(SubmapIterator, Simple)


cost_map_core
Author(s): Daniel Stonier
autogenerated on Mon Jun 10 2019 13:03:41