]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/commitdiff
Fix ut v0.8.0
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Wed, 19 Jan 2022 10:43:32 +0000 (11:43 +0100)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Wed, 19 Jan 2022 11:00:38 +0000 (12:00 +0100)
This is due to refining minimum turning radius (MTR) computation
introduced in 42cfdd7. (Please note that approach of fixing ut after the
change is bad practice against TDD and will not be accepted next time.)

MTR computation has changed because front track is used instead of car
width (including mirrors).

ut/bcar.t.cc

index b01a07e72682489a654eade5f5f791b1f0ca4202..73aaaefc5518b8e0fafe32982813a091d6288903 100644 (file)
@@ -40,16 +40,16 @@ WVTEST_MAIN("bcar basic geometry")
 
        // min. turning radius circle centers
        WVPASSEQ_DOUBLE(bc.h(), M_PI / 2.0, 0.00001);
-       WVPASSEQ_DOUBLE(-3.08257569495584, bc.ccl().x(), 0.00001);
+       WVPASSEQ_DOUBLE(-2.827076, bc.ccl().x(), 0.00001);
        WVPASSEQ_DOUBLE(1.0000000000000004, bc.ccl().y(), 0.00001);
-       WVPASSEQ_DOUBLE(5.08257569495584, bc.ccr().x(), 0.00001);
+       WVPASSEQ_DOUBLE(4.827076, bc.ccr().x(), 0.00001);
        WVPASSEQ_DOUBLE(1.0, bc.ccr().y(), 0.00001);
 
        // car radiuses (inner radius, outer front radius, outer rear radius)
        bc.h(1.2345);
-       WVPASSEQ_DOUBLE(bc.iradi(), 3.58257569495584, 0.00001);
-       WVPASSEQ_DOUBLE(bc.ofradi(), 5.220153254455275, 0.00001);
-       WVPASSEQ_DOUBLE(bc.orradi(), 4.6097722286464435, 0.00001);
+       WVPASSEQ_DOUBLE(3.327076, bc.iradi(), 0.00001);
+       WVPASSEQ_DOUBLE(4.997358, bc.ofradi(), 0.00001);
+       WVPASSEQ_DOUBLE(4.355868, bc.orradi(), 0.00001);
        bc.h(M_PI / 2.0);
 
        // moving
@@ -60,7 +60,7 @@ WVTEST_MAIN("bcar basic geometry")
        WVPASSEQ_DOUBLE(2.0, bc.y(), 0.00001);
 
        bc.set_max_steer();
-       WVPASSEQ_DOUBLE(0.45552437743483687, bc.st(), 0.00001);
+       WVPASSEQ_DOUBLE(0.481558, bc.st(), 0.00001);
 
        // rotate
        bc.x(-1.0);
@@ -184,6 +184,8 @@ WVTEST_MAIN("drivable")
        tmp_double_2 = std::abs(g.mtr() * 2 * sin(-M_PI/2 / 2));
        WVPASSEQ_DOUBLE(tmp_double_1, tmp_double_2, 0.00001);
        WVPASS(g.drivable(n)); // pass right corner case
+       n.rotate(g.ccr(), -0.1);
+       WVPASS(!g.drivable(n)); // fail right corner case
 
        n = BicycleCar(g);
        n.rotate(g.ccl(), M_PI/2);
@@ -192,7 +194,7 @@ WVTEST_MAIN("drivable")
        tmp_double_2 = std::abs(g.mtr() * 2 * sin(M_PI/2 / 2));
        WVPASSEQ_DOUBLE(tmp_double_1, tmp_double_2, 0.00001);
        WVPASS(g.drivable(n)); // pass left corner case
-       n.rotate(g.ccl(), 0.01);
+       n.rotate(g.ccl(), 0.1);
        WVPASS(!g.drivable(n)); // fail left corner case
 
        n = BicycleCar(g);