From 448e23b60361aaced96574ed9039a1d3437b9002 Mon Sep 17 00:00:00 2001 From: Denis Koronchik Date: Sun, 13 Jul 2014 23:49:16 +0200 Subject: [PATCH] [routing] Fix tests for new algorithms and data --- data/route_test2.mwm | Bin 724 -> 1206 bytes data/route_test2.osm.bz2 | Bin 823 -> 1230 bytes .../routing_tests/dijkstra_router_test.cpp | 11 +++--- .../features_road_graph_test.cpp | 34 +++++++++--------- .../features_road_graph_test.hpp | 2 +- routing/routing_tests/road_graph_builder.cpp | 16 ++++----- 6 files changed, 32 insertions(+), 31 deletions(-) diff --git a/data/route_test2.mwm b/data/route_test2.mwm index 187631d7aa8e9c569b569bda8b4692da547b38c9..8d408df8733c6c65f7d7877e541b05779993c1de 100644 GIT binary patch literal 1206 zcmaKpe@K*f9LK-Ep6C1A&9l2qowp4uw4Ml>U26*#QP4IRD-wzz_ArDy>Yy|eDv{;5$qmb_x^mo z&-e5FzCWMm4MFCA&yBaFhuc2=IB(+iy^gQ1cKgOBx`#(Wg)<}5L&T1~I|xgRXsh*Y zis=uO1}h|?zx;WR#bQcdo5>!JPSIF(n0``w%axot!wU6nUemgqem@&*Cem+qzJD{QJSqTV>WJ8MlYr0Y2e{Wz^f%rNarJM-t)Hc1a@`0S=5 zoOreV?mKNG!Kw@SkE8CfsC%Kt$H~dhk2@M0O?p1PJQGiSiGA?LeKyq?7TK6?5aips zo7y+At&L}E*!8d{2Uj-=GB%fFU4voq-E0$`I43-~{4ytZ#tt=ugN8Au7gvhZc~jrV zwpN?&6X%po5nh0pRpNVZZ_T` zH9W#=)o5;=B(u-hC&LL(Iks=hhj%N1LO=)B0>? zg(S@kN$m@Y#bg2pOUP@J_#e{hQJVN8l#{Fr<+QdItu*t)m?c&eW7f`wF&khlC_~!Y zC=cjPl)oG<+_EJ0#I5mc>UOeRU!kmV<^S3DjMZvK3KmP_!ff=5U2+NCH_FUwwwq3m7{!!@d|(CDfJ=~N6PnOEh?6x SVkIgT%69|h6~VGnUHcbdicN6< literal 724 zcmaLU&r1|x7zgm@dEa+ur@@_FtxPR83!|wh*4^AZZjxO>@Dd$j4#Ey*pvEe(hYn*D zu4|XDL!d|y`J)B#>tZHWi<$CI9 zwQdy>`Z6!+b)u@Cvg_qJ%qd!RHbv<4x8R`_*w6$iI00>N25!R>2;mu2;04s-1AKkep1ltM CM|YI~ diff --git a/data/route_test2.osm.bz2 b/data/route_test2.osm.bz2 index 256e8add51f6bf94a70d54d57c287d1639556d8b..0092c7597ddbc8ce189f993ad76afac6c32340f3 100644 GIT binary patch literal 1230 zcmV;<1Tp(UT4*^jL0KkKS@b}{d;ka8f{IeG|&P{pcoL)dWJ?u1Zkrn0;BO%41j3J00x1O z00070)S9R=14fzyKmcR_002a#1lpN2$Z4R+XlM^m0000|q)kSt`e~X?DT#z(27no; z8W|YhodcSMh=sC((nQD%QF(n#0~Rozf*FwW)mV`9`ep!&+B$e9+Lba*G`5;*hGvG- zW@4mj)~i}-nW+j3P0%V92bEJCL|Y>E46YlR{TmlaBHhYE4+=sAO^k{7MG%s}k|ePq z5;du85hSSIFrZ`sAO^`ukU>Cz2uP;UNdTBiV1cHX!5>Y-V=Z2V3|aGiS4>O;pOdIKiTJ(}Ykj#>0H!LbiBHSc_V zc0fP}C1Ms?#faoKtVKCRt^>gM>e4Eo3P5JTbRz8<4z*ek0K=I!FwodkbmiK!t?mm|TQ;Ir zXuxNyw93qmRfUw%j~Fm5j$Px7rFy*PaI;rh9WNwvZT7~O=2H<3B!K5Z83?S3_9HGX zwXCD)Xv8W+6Rs@M=1WQ~!*wx_#?*?rX~x?qaDo>Cy@iUGZfraw*?O2>mQ6c|9DL_8?k z=)tg1r7mW`th}nwK&1f!ir0;jGDyW%6j4P56j4P{MNwfz6jf1FQAI%*gS)L*1b`PH zfgarSQ-M;_0|jWsh`=r6Kx_c)9AP4o5)wud43aF1At0j3xgfk;mU7oh`RnMjr>X|B z1Iz)45G{3q(N_Y@ekgbI9nxN?UzqLNlr6bcUGbe-LdNto!Y=|H)Hf%r5h$*b15h2{ zUsZ7Bs{TU)g;o|+t8E&>)P|e0tEg*M`oBn8LhFUjt;N4R9k9B%!oz6}SVOuOJ$rT0 z494doOj4i`GP)Hn1?hYnR% z!MwQDrCK_Pax9V8j6%_)kkD=%Mo4iXtSq`J(3eRrz5^92rdzn91%ZWGyP~OZ7^$>? s#cy3u{y+ne2oH@3rgOn0t#K&ZEce|q!Uv#mBtMI}BAh5ldLUsw0CgE4N&o-= literal 823 zcmV-71IYYBT4*^jL0KkKS-L&L)c^$HUw}XmK!gA1ff9}Yzwh7RPy{|)_h14V0Eko2 z6k;+wnj<4j0GepXU;t>-Kp8X!gCH~p5SnO|plBKcKmZJaDntzdpwJB(10VnjQiv4B zss5%?ZA_0-Y8nTqG|Z-mp46)pt6G)1MWl>X>-uI{lQEfQW?7l~g{qH|84J(PLKdhOnUPdzi8*#3v2>>_7~Ri?e?3PRfRk=hjO zUzc%_ZYyz{w@|(?2z7hb=3AzaN>ph2k_99Tpu_|fXH;0w-6UclV?k(wOMFiHJ@PLk z(Y89_$2&QEb)$B=b?KJ5!>+H@2bbw$lic-Z8-Hcskpht|9c`W>`O6&%B{`s$Oo`!= zs1!&DR<h6n-(L!IPj1#P$?1zVQ6*XS`&dF zCTK@FTJQ#0X&9g>Ub4(SX8W03j2apPmUo>407n!`7#~4Pm=oedt2F0UOWZpr z=~`T1WCf)OfFB@Ch6Ut2==-%EkbMgIjyP5!?-~tC&d|OTdJ~j=Mv>ZAA?Q1(clGDu z{3*v(h;SPfuv?t9k6`H?k^dFEuJXOH*;;en`%2KQySW9|DD*44p0sQ`8&>hGdgw>G z7Dr#j4ApRZx7+CFbsK3$#dvaVqYC1>$1g4;VC~^u-1&E*ymYOH0l~pnO46Ll-rndp zk6zKoyl$hsE`@2xZN*n&t+g17y9(tV9kvW{Aw|Rq77FSGf)^D2F64@Ep&@j8hpI#y Bd=vlx diff --git a/routing/routing_tests/dijkstra_router_test.cpp b/routing/routing_tests/dijkstra_router_test.cpp index 329f642ebc..b6ce916284 100644 --- a/routing/routing_tests/dijkstra_router_test.cpp +++ b/routing/routing_tests/dijkstra_router_test.cpp @@ -87,6 +87,7 @@ UNIT_TEST(Dijkstra_Router_City_Simple) TestDijkstraRouterMWM(finalPos, startPos, expected2, 4); } + UNIT_TEST(Dijkstra_Router_City_ReallyFunnyLoop) { // Uncomment to see debug log. @@ -95,22 +96,20 @@ UNIT_TEST(Dijkstra_Router_City_ReallyFunnyLoop) RoadPos finalPos[] = { RoadPos(1, true, 0) }; RoadPos startPos[] = { RoadPos(1, true, 1) }; RoadPos expected1[] = { RoadPos(1, true, 1), + RoadPos(8, true, 0), RoadPos(8, true, 1), - RoadPos(8, true, 2), - RoadPos(5, false, 0), + RoadPos(8, true, 3), // algorithm skips 8,2 segment + RoadPos(4, false, 0), RoadPos(0, false, 1), RoadPos(0, false, 0), RoadPos(1, true, 0) }; TestDijkstraRouterMock(finalPos, startPos, expected1); RoadPos expected2[] = { RoadPos(1, true, 1), - RoadPos(8, true, 1), - RoadPos(8, true, 2), - RoadPos(8, true, 3), RoadPos(8, true, 4), - RoadPos(2, true, 0), RoadPos(2, true, 1), RoadPos(0, false, 0), RoadPos(1, true, 0) }; TestDijkstraRouterMWM(finalPos, startPos, expected2, 9); + } diff --git a/routing/routing_tests/features_road_graph_test.cpp b/routing/routing_tests/features_road_graph_test.cpp index 6f03640f2a..8ee3c9def2 100644 --- a/routing/routing_tests/features_road_graph_test.cpp +++ b/routing/routing_tests/features_road_graph_test.cpp @@ -105,10 +105,10 @@ void FeatureRoadGraphTester::Name2FeatureID(vector & vec) vec[i].GetPointId()); } -void FeatureRoadGraphTester::GetPossibleTurns(RoadPos const & pos, IRoadGraph::TurnsVectorT & vec) +void FeatureRoadGraphTester::GetPossibleTurns(RoadPos const & pos, IRoadGraph::TurnsVectorT & vec, bool noOptimize/* = true*/) { m_graph->GetPossibleTurns(RoadPos(m_mapping.GetId(strings::to_string(pos.GetFeatureId())), - pos.IsForward(), pos.GetPointId()), vec); + pos.IsForward(), pos.GetPointId()), vec, noOptimize); FeatureID2Name(vec); } @@ -128,6 +128,7 @@ void FeatureRoadGraphTester::ReconstructPath(routing::RoadPos (&arr)[N], vector< using namespace routing_test; + UNIT_TEST(FRG_TurnsTest_MWM1) { FeatureRoadGraphTester tester("route_test1.mwm"); @@ -135,20 +136,21 @@ UNIT_TEST(FRG_TurnsTest_MWM1) { IRoadGraph::TurnsVectorT vec; tester.GetPossibleTurns(RoadPos(0, true, 1), vec); - TEST_EQUAL(vec.size(), 0, ()); + TEST_EQUAL(vec.size(), 1, ()); + TEST(TestResult(vec, RoadPos(0, true, 0), -1), ()); } { IRoadGraph::TurnsVectorT vec; tester.GetPossibleTurns(RoadPos(0, false, 1), vec); TEST_EQUAL(vec.size(), 7, ()); - TEST(TestResult(vec, RoadPos(0, false, 2), 5), ()); - TEST(TestResult(vec, RoadPos(0, false, 3), 10), ()); - TEST(TestResult(vec, RoadPos(1, true, 1), 5), ()); - TEST(TestResult(vec, RoadPos(1, false, 2), 5), ()); - TEST(TestResult(vec, RoadPos(2, true, 0), 10), ()); - TEST(TestResult(vec, RoadPos(3, false, 0), 15), ()); - TEST(TestResult(vec, RoadPos(3, true, 2), 15), ()); + TEST(TestResult(vec, RoadPos(0, false, 2), -1), ()); + TEST(TestResult(vec, RoadPos(0, false, 3), -1), ()); + TEST(TestResult(vec, RoadPos(1, true, 1), -1), ()); + TEST(TestResult(vec, RoadPos(1, false, 2), -1), ()); + TEST(TestResult(vec, RoadPos(2, true, 0), -1), ()); + TEST(TestResult(vec, RoadPos(3, false, 0), -1), ()); + TEST(TestResult(vec, RoadPos(3, true, 2), -1), ()); } { @@ -159,7 +161,7 @@ UNIT_TEST(FRG_TurnsTest_MWM1) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(1, false, 0), vec); + tester.GetPossibleTurns(RoadPos(1, false, 0), vec, false); TEST_EQUAL(vec.size(), 3, ()); TEST(TestResult(vec, RoadPos(1, false, 2), 10), ()); TEST(TestResult(vec, RoadPos(0, true, 1), 10), ()); @@ -173,7 +175,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(0, false, 0), vec); + tester.GetPossibleTurns(RoadPos(0, false, 0), vec, false); TEST_EQUAL(vec.size(), 8, ()); TEST(TestResult(vec, RoadPos(0, false, 1), -1), ()); TEST(TestResult(vec, RoadPos(0, false, 2), -1), ()); @@ -187,7 +189,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(8, true, 0), vec); + tester.GetPossibleTurns(RoadPos(8, true, 0), vec, false); TEST_EQUAL(vec.size(), 2, ()); TEST(TestResult(vec, RoadPos(1, true, 1), -1), ()); TEST(TestResult(vec, RoadPos(8, true, 5), -1), ()); @@ -195,7 +197,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(2, true, 1), vec); + tester.GetPossibleTurns(RoadPos(2, true, 1), vec, false); TEST_EQUAL(vec.size(), 4, ()); TEST(TestResult(vec, RoadPos(3, true, 0), -1), ()); TEST(TestResult(vec, RoadPos(3, false, 1), -1), ()); @@ -205,7 +207,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(3, false, 0), vec); + tester.GetPossibleTurns(RoadPos(3, false, 0), vec, false); TEST_EQUAL(vec.size(), 5, ()); TEST(TestResult(vec, RoadPos(3, false, 1), -1), ()); TEST(TestResult(vec, RoadPos(3, false, 2), -1), ()); @@ -229,7 +231,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2) { IRoadGraph::TurnsVectorT vec; - tester.GetPossibleTurns(RoadPos(8, true, 3), vec); + tester.GetPossibleTurns(RoadPos(8, true, 3), vec, false); TEST_EQUAL(vec.size(), 7, ()); TEST(TestResult(vec, RoadPos(8, true, 2), -1), ()); TEST(TestResult(vec, RoadPos(5, true, 0), -1), ()); diff --git a/routing/routing_tests/features_road_graph_test.hpp b/routing/routing_tests/features_road_graph_test.hpp index 1e5ebc239f..d391596df7 100644 --- a/routing/routing_tests/features_road_graph_test.hpp +++ b/routing/routing_tests/features_road_graph_test.hpp @@ -39,7 +39,7 @@ public: void FeatureID2Name(vector & vec); void Name2FeatureID(vector & vec); - void GetPossibleTurns(routing::RoadPos const & pos, routing::IRoadGraph::TurnsVectorT & vec); + void GetPossibleTurns(routing::RoadPos const & pos, routing::IRoadGraph::TurnsVectorT & vec, bool noOptimize = true); template void ReconstructPath(routing::RoadPos (&arr)[N], vector & vec); diff --git a/routing/routing_tests/road_graph_builder.cpp b/routing/routing_tests/road_graph_builder.cpp index 29c079c3cc..d6607ac4a2 100644 --- a/routing/routing_tests/road_graph_builder.cpp +++ b/routing/routing_tests/road_graph_builder.cpp @@ -159,21 +159,21 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph) RoadInfo ri1; ri1.m_bothSides = false; - ri1.m_speedMS = 20; + ri1.m_speedMS = 40; ri1.m_points.push_back(m2::PointD(0, 0)); ri1.m_points.push_back(m2::PointD(5, 10)); ri1.m_points.push_back(m2::PointD(5, 40)); RoadInfo ri2; ri2.m_bothSides = false; - ri2.m_speedMS = 20; + ri2.m_speedMS = 40; ri2.m_points.push_back(m2::PointD(12, 25)); ri2.m_points.push_back(m2::PointD(10, 10)); ri2.m_points.push_back(m2::PointD(10, 0)); RoadInfo ri3; ri3.m_bothSides = true; - ri3.m_speedMS = 30; + ri3.m_speedMS = 40; ri3.m_points.push_back(m2::PointD(5, 10)); ri3.m_points.push_back(m2::PointD(10, 10)); ri3.m_points.push_back(m2::PointD(70, 10)); @@ -181,13 +181,13 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph) RoadInfo ri4; ri4.m_bothSides = true; - ri4.m_speedMS = 20; + ri4.m_speedMS = 40; ri4.m_points.push_back(m2::PointD(25, 0)); ri4.m_points.push_back(m2::PointD(27, 25)); RoadInfo ri5; ri5.m_bothSides = true; - ri5.m_speedMS = 30; + ri5.m_speedMS = 40; ri5.m_points.push_back(m2::PointD(35, 0)); ri5.m_points.push_back(m2::PointD(37, 30)); ri5.m_points.push_back(m2::PointD(70, 30)); @@ -195,20 +195,20 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph) RoadInfo ri6; ri6.m_bothSides = true; - ri6.m_speedMS = 20; + ri6.m_speedMS = 40; ri6.m_points.push_back(m2::PointD(70, 0)); ri6.m_points.push_back(m2::PointD(70, 10)); ri6.m_points.push_back(m2::PointD(70, 30)); RoadInfo ri7; ri7.m_bothSides = true; - ri7.m_speedMS = 20; + ri7.m_speedMS = 40; ri7.m_points.push_back(m2::PointD(39, 55)); ri7.m_points.push_back(m2::PointD(80, 55)); RoadInfo ri8; ri8.m_bothSides = false; - ri8.m_speedMS = 30; + ri8.m_speedMS = 40; ri8.m_points.push_back(m2::PointD(5, 40)); ri8.m_points.push_back(m2::PointD(18, 55)); ri8.m_points.push_back(m2::PointD(39, 55));