SlidingWindowIteratorTest.cpp
Go to the documentation of this file.
1 /*
2  * SlidingWindowIteratorTest.cpp
3  *
4  * Created on: Aug 16, 2017
5  * Author: Péter Fankhauser
6  * Institute: ETH Zurich
7  */
8 
11 
12 #include <gtest/gtest.h>
13 #include <vector>
14 
15 using grid_map::GridMap;
16 using grid_map::Index;
17 using grid_map::Length;
18 using grid_map::Position;
20 
21 TEST(SlidingWindowIterator, WindowSize3Cutoff)
22 {
23  GridMap map;
24  map.setGeometry(Length(8.1, 5.1), 1.0, Position(0.0, 0.0)); // bufferSize(8, 5)
25  map.add("layer");
26  map["layer"].setRandom();
27 
28  SlidingWindowIterator iterator(map, "layer", SlidingWindowIterator::EdgeHandling::CROP, 3);
29  EXPECT_EQ(iterator.getData().rows(), 2);
30  EXPECT_EQ(iterator.getData().cols(), 2);
31  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 2, 2)));
32 
33  ++iterator;
34  EXPECT_EQ(iterator.getData().rows(), 3);
35  EXPECT_EQ(iterator.getData().cols(), 2);
36  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 3, 2)));
37 
38  ++iterator;
39  EXPECT_EQ(iterator.getData().rows(), 3);
40  EXPECT_EQ(iterator.getData().cols(), 2);
41  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(1, 0, 3, 2)));
42 
43  for (; !iterator.isPastEnd(); ++iterator) {
44  EXPECT_FALSE(iterator.isPastEnd());
45  if ((*iterator == Index(3, 2)).all()) {
46  break;
47  }
48  }
49 
50  EXPECT_EQ(iterator.getData().rows(), 3);
51  EXPECT_EQ(iterator.getData().cols(), 3);
52  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(2, 1, 3, 3)));
53 
54  for (; !iterator.isPastEnd(); ++iterator) {
55  EXPECT_FALSE(iterator.isPastEnd());
56  if ((*iterator == Index(7, 4)).all()) {
57  break;
58  }
59  }
60 
61  EXPECT_EQ(iterator.getData().rows(), 2);
62  EXPECT_EQ(iterator.getData().cols(), 2);
63  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(6, 3, 2, 2)));
64 
65  ++iterator;
66  EXPECT_TRUE(iterator.isPastEnd());
67 }
68 
70 {
71  GridMap map;
72  map.setGeometry(Length(8.1, 5.1), 1.0, Position(0.0, 0.0)); // bufferSize(8, 5)
73  map.add("layer");
74  map["layer"].setRandom();
75 
76  SlidingWindowIterator iterator(map, "layer", SlidingWindowIterator::EdgeHandling::CROP, 5);
77  EXPECT_EQ(iterator.getData().rows(), 3);
78  EXPECT_EQ(iterator.getData().cols(), 3);
79  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 3, 3)));
80 
81  ++iterator;
82  EXPECT_EQ(iterator.getData().rows(), 4);
83  EXPECT_EQ(iterator.getData().cols(), 3);
84  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 4, 3)));
85 
86  ++iterator;
87  EXPECT_EQ(iterator.getData().rows(), 5);
88  EXPECT_EQ(iterator.getData().cols(), 3);
89  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 5, 3)));
90 
91  for (; !iterator.isPastEnd(); ++iterator) {
92  EXPECT_FALSE(iterator.isPastEnd());
93  if ((*iterator == Index(3, 2)).all()) {
94  break;
95  }
96  }
97 
98  EXPECT_EQ(iterator.getData().rows(), 5);
99  EXPECT_EQ(iterator.getData().cols(), 5);
100  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(1, 0, 5, 5)));
101 
102  for (; !iterator.isPastEnd(); ++iterator) {
103  EXPECT_FALSE(iterator.isPastEnd());
104  if ((*iterator == Index(7, 4)).all()) {
105  break;
106  }
107  }
108 
109  EXPECT_EQ(iterator.getData().rows(), 3);
110  EXPECT_EQ(iterator.getData().cols(), 3);
111  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(5, 2, 3, 3)));
112 
113  ++iterator;
114  EXPECT_TRUE(iterator.isPastEnd());
115 }
116 
117 TEST(SlidingWindowIterator, WindowSize3Inside)
118 {
119  GridMap map;
120  map.setGeometry(Length(8.1, 5.1), 1.0, Position(0.0, 0.0)); // bufferSize(8, 5)
121  map.add("layer");
122  map["layer"].setRandom();
123 
124  SlidingWindowIterator iterator(map, "layer", SlidingWindowIterator::EdgeHandling::INSIDE, 3);
125  EXPECT_EQ(iterator.getData().rows(), 3);
126  EXPECT_EQ(iterator.getData().cols(), 3);
127  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(0, 0, 3, 3)));
128 
129  for (; !iterator.isPastEnd(); ++iterator) {
130  EXPECT_FALSE(iterator.isPastEnd());
131  if ((*iterator == Index(3, 2)).all()) {
132  break;
133  }
134  }
135 
136  EXPECT_EQ(iterator.getData().rows(), 3);
137  EXPECT_EQ(iterator.getData().cols(), 3);
138  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(2, 1, 3, 3)));
139 
140  for (; !iterator.isPastEnd(); ++iterator) {
141  EXPECT_FALSE(iterator.isPastEnd());
142  if ((*iterator == Index(6, 3)).all()) {
143  break;
144  }
145  }
146 
147  EXPECT_EQ(iterator.getData().rows(), 3);
148  EXPECT_EQ(iterator.getData().cols(), 3);
149  EXPECT_TRUE(iterator.getData().isApprox(map["layer"].block(5, 2, 3, 3)));
150 
151  ++iterator;
152  EXPECT_TRUE(iterator.isPastEnd());
153 }
void setGeometry(const Length &length, const double resolution, const Position &position=Position::Zero())
Definition: GridMap.cpp:44
TEST(SlidingWindowIterator, WindowSize3Cutoff)
Eigen::Vector2d Position
Definition: TypeDefs.hpp:18
Eigen::Array2i Index
Definition: TypeDefs.hpp:22
Eigen::Array2d Length
Definition: TypeDefs.hpp:24
void add(const std::string &layer, const double value=NAN)
Definition: GridMap.cpp:82


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