6 WVTEST_MAIN("parallel parking slot planner")
9 psp.ps().border(3, 3, 5, 3, 5, 8, 3, 8);
18 psp.cc() = BicycleCar(psp.gc());
21 WVPASS(!psp.collide());
22 WVPASS(!psp.forward());
23 WVPASSEQ_DOUBLE(psp.ps().heading(), psp.gc().h(), 0.00001);
25 std::vector<std::tuple<double, double>> slot;
26 slot.push_back(std::make_tuple(psp.ps().x1(), psp.ps().y1()));
27 slot.push_back(std::make_tuple(psp.ps().x2(), psp.ps().y2()));
28 slot.push_back(std::make_tuple(psp.ps().x3(), psp.ps().y3()));
29 slot.push_back(std::make_tuple(psp.ps().x4(), psp.ps().y4()));
30 WVPASS(inside(psp.gc().x(), psp.gc().y(), slot));
31 WVPASS(inside(psp.gc().lfx(), psp.gc().lfy(), slot));
32 WVPASS(inside(psp.gc().lrx(), psp.gc().lry(), slot));
33 WVPASS(inside(psp.gc().rrx(), psp.gc().rry(), slot));
34 WVPASS(inside(psp.gc().rfx(), psp.gc().rfy(), slot));
38 tpsp.ps().border(2, 3, 4, 3, 4, 8, 2, 8);
39 tpsp.gc() = BicycleCar(psp.gc());
40 tpsp.cc() = BicycleCar(tpsp.gc());
41 WVPASS(tpsp.collide());
43 tpsp.ps().border(3, 4.1, 3, 2.1, 8, 2.1, 8, 4.1);
46 // entry point found by reverse
53 psp.cc() = BicycleCar(psp.gc());
60 WVTEST_MAIN("backward perpendicullar parking slot planner")
63 psp.ps().border(3, 3, 8, 3, 8, 5, 3, 5);
72 psp.cc() = BicycleCar(psp.gc());
75 WVPASS(!psp.collide());
76 WVPASS(!psp.forward());
77 WVPASSEQ_DOUBLE(psp.ps().heading() + M_PI / 2, psp.gc().h(), 0.00001);
80 // entry point found by reverse
87 psp.cc() = BicycleCar(psp.gc());
94 WVTEST_MAIN("forward perpendicullar parking slot planner")
97 psp.ps().border(3, 3, 8, 3, 8, 5, 3, 5);
106 psp.gc().df(2 + 0.5);
108 psp.cc() = BicycleCar(psp.gc());
111 WVPASS(!psp.collide());
112 WVPASS(psp.forward());
113 WVPASSEQ_DOUBLE(psp.ps().heading() - M_PI / 2, psp.gc().h(), 0.00001);
114 WVPASS(psp.parked());
116 // entry point found by reverse
120 WVPASS(psp.parked());
123 psp.cc() = BicycleCar(psp.gc());
127 WVPASS(psp.parked());
130 WVTEST_MAIN("possible goals test")
141 psp.gc().df(2 + 0.5);
143 psp.cc() = BicycleCar(psp.gc());
147 WVPASSEQ_DOUBLE(psp.gc().x() + 1, psp.cc().x(), 0.00001);
148 WVPASSEQ_DOUBLE(psp.gc().y(), psp.cc().y(), 0.00001);
149 WVPASSEQ_DOUBLE(psp.gc().h(), psp.cc().h(), 0.00001);
150 WVPASS(psp.possible_goals().size() > 0);
152 for (auto &c: psp.possible_goals()) {
153 WVPASSEQ_DOUBLE(psp.gc().x() + 1 + i, c.x(), 0.00001);
154 WVPASSEQ_DOUBLE(psp.gc().y(), c.y(), 0.00001);
155 WVPASSEQ_DOUBLE(psp.gc().h(), c.h(), 0.00001);
158 WVPASSEQ_DOUBLE(psp.gc().x() + 1, psp.cc().x(), 0.00001);
159 WVPASSEQ_DOUBLE(psp.gc().y(), psp.cc().y(), 0.00001);
160 WVPASSEQ_DOUBLE(psp.gc().h(), psp.cc().h(), 0.00001);