1 #include <gtest/gtest.h>
9 using namespace std::string_literals;
15 TEST(UniqueId, registerIdParallel) {
16 Ids ids{2000, 3000, 2001, -5, -200};
25 EXPECT_FALSE(map->pointLayer.exists(p5.id()));
27 EXPECT_TRUE(map->pointLayer.exists(p5.id()));
28 EXPECT_TRUE(map->laneletLayer.exists(ll2.id()));
34 Points3d pointsInLayer(map->pointLayer.begin(), map->pointLayer.end());
35 std::sort(pointsInLayer.begin(), pointsInLayer.end(), utils::idLess<Point3d>);
40 auto regelemData = std::make_shared<RegulatoryElementData>(
InvalId);
47 EXPECT_EQ(
InvalId, regelem->id());
49 EXPECT_NE(
InvalId, regelem->id());
59 auto regelemData = std::make_shared<RegulatoryElementData>(
InvalId);
62 EXPECT_NE(
InvalId, regelem->id());
66 EXPECT_EQ(map->areaLayer.size(), 1ul);
68 testConstAndNonConst([](
auto& map) { EXPECT_EQ(map->areaLayer.size(), 1ul); });
76 EXPECT_TRUE(newPoint.
id() <
p1.id() || newPoint.
id() > p4.id());
80 auto elem = map->laneletLayer.get(ll1.id());
85 testConstAndNonConst([](
auto& map) {
92 testConstAndNonConst([](
auto& map) {
94 EXPECT_FALSE(map->areaLayer.empty());
99 testConstAndNonConst([
this](
auto& map) {
100 auto pts = map->pointLayer.nearest(
Point2d(p3), 1);
101 ASSERT_EQ(pts.size(), 1ul);
102 EXPECT_EQ(pts[0], p3);
108 testConstAndNonConst([
this](
auto& map) {
109 auto llts = map->laneletLayer.nearest(
Point2d(
p2), 1);
110 ASSERT_EQ(llts.size(), 1ul);
111 EXPECT_EQ(llts[0], ll1);
117 testConstAndNonConst([
this](
auto& map) {
119 auto in = [pts](
const Point3d&
p) {
return std::find(pts.begin(), pts.end(),
p) != pts.end(); };
120 ASSERT_EQ(pts.size(), 5ul);
131 testConstAndNonConst([
this](
auto& map) {
133 ASSERT_EQ(llts.size(), 1ul);
134 EXPECT_EQ(llts[0], ll1);
139 testConstAndNonConst([
this](
auto& map) {
141 ASSERT_EQ(llts.size(), 1ul);
142 EXPECT_EQ(llts[0], ll1);
148 testConstAndNonConst([
this](
auto& map) {
150 ASSERT_EQ(2ul, llts.size());
151 EXPECT_DOUBLE_EQ(9, llts.front().first);
152 EXPECT_EQ(ll2, llts.front().second);
157 testConstAndNonConst([
this](
auto& map) {
159 ASSERT_EQ(1ul, regElem.size());
160 EXPECT_DOUBLE_EQ(1, regElem.front().first);
161 EXPECT_EQ(regelem1, regElem.front().second);
167 {
"test"s, {ll1}}, {
"point"s, {
p1, p9}}, {
"areas"s, {ar1}}, {
"linestr"s, {outside}}, {
"poly"s, {poly1}}};
168 auto regelem = std::make_shared<GenericRegulatoryElement>(
getId(), rules);
169 ll1.addRegulatoryElement(regelem);
170 ar1.addRegulatoryElement(regelem);
173 testConstAndNonConst([
this, regelem](
auto& map) {
175 ASSERT_EQ(1ul, regElem.size());
176 EXPECT_DOUBLE_EQ(0, regElem.front().first);
177 EXPECT_EQ(regelem, regElem.front().second);
183 testConstAndNonConst([](
auto& map) {
185 ASSERT_EQ(0ul, pts.size());
190 testConstAndNonConst([
this](
auto& map) {
192 ASSERT_EQ(llts.size(), 1ul);
193 EXPECT_EQ(llts[0], ll1);
198 testConstAndNonConst([
this](
auto& map) {
200 ASSERT_EQ(ars.size(), 1ul);
201 EXPECT_EQ(ars[0], ar1);
207 EXPECT_FALSE(pointMap->empty());
208 EXPECT_EQ(pointMap->size(), pointMap->pointLayer.size());
213 ll2.addRegulatoryElement(regelem1);
215 testConstAndNonConst([
this](
auto& map) {
216 auto usages = map->laneletLayer.findUsages(regelem1);
217 ASSERT_EQ(1ul, usages.size());
218 EXPECT_EQ(ll2, usages[0]);
223 ar1.addRegulatoryElement(regelem1);
225 testConstAndNonConst([
this](
auto& map) {
226 auto usages = map->areaLayer.findUsages(regelem1);
227 ASSERT_EQ(1ul, usages.size());
228 EXPECT_EQ(ar1, usages[0]);
233 testConstAndNonConst([
this](
auto& map) {
234 auto polys = map->polygonLayer.findUsages(
p1);
235 ASSERT_EQ(polys.size(), 1ul);
236 EXPECT_EQ(poly1, polys[0]);
238 polys = map->polygonLayer.findUsages(p9);
239 EXPECT_TRUE(polys.empty());
244 ll1.setCenterline(front);
246 EXPECT_TRUE(map->lineStringLayer.exists(front.id()));
251 EXPECT_TRUE(map->laneletLayer.exists(ll1.id()));
252 EXPECT_TRUE(map->areaLayer.exists(ar1.id()));
257 EXPECT_EQ(submap->size(), 2ul);
258 auto llMap = submap->laneletMap();
259 EXPECT_LT(0ul, llMap->lineStringLayer.size());
260 EXPECT_LT(0ul, llMap->pointLayer.size());