Branch data Line data Source code
1 : : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 : : //
3 : : // Copyright (C) 2018-2021 Intel Corporation
4 : : //
5 : : // SPDX-License-Identifier: LGPL-2.1-only
6 : : //
7 : : // ----------------- END LICENSE BLOCK -----------------------------------
8 : :
9 : : #include "TestSupport.hpp"
10 : : #include "ad/rss/situation/Physics.hpp"
11 : :
12 : : namespace ad {
13 : : namespace rss {
14 : : namespace situation {
15 : :
16 : 2 : TEST(PhysicsUnitTestsStoppingDistance, positive_deceleration)
17 : : {
18 : 1 : Distance stoppingDistance(0.);
19 [ + - - + : 1 : ASSERT_FALSE(calculateStoppingDistance(Speed(10.), Acceleration(4.), stoppingDistance));
- - - - -
- - - ]
20 : : }
21 : :
22 : 2 : TEST(PhysicsUnitTestsStoppingDistance, zero_deceleration)
23 : : {
24 : 1 : Distance stoppingDistance(0.);
25 [ + - - + : 1 : ASSERT_FALSE(calculateStoppingDistance(Speed(10.), Acceleration(0.), stoppingDistance));
- - - - -
- - - ]
26 : : }
27 : :
28 : 2 : TEST(PhysicsUnitTestsStoppingDistance, acceleration_positive_speed)
29 : : {
30 : 1 : Distance stoppingDistance(0.);
31 [ + - - + : 1 : ASSERT_FALSE(calculateStoppingDistance(Speed(10.), Acceleration(1.), stoppingDistance));
- - - - -
- - - ]
32 : : }
33 : :
34 : 2 : TEST(PhysicsUnitTestsStoppingDistance, deceleration_negative_speed)
35 : : {
36 : 1 : Distance stoppingDistance(0.);
37 [ + - - + : 1 : ASSERT_FALSE(calculateStoppingDistance(Speed(-10.), Acceleration(-1.), stoppingDistance));
- - - - -
- - - ]
38 : : }
39 : :
40 : 2 : TEST(PhysicsUnitTestsStoppingDistance, checks_100kmh)
41 : : {
42 : 1 : Distance stoppingDistance(0.);
43 [ + - - + : 1 : ASSERT_TRUE(calculateStoppingDistance(kmhToMeterPerSec(100.), Acceleration(-6.), stoppingDistance));
- - - - -
- - - ]
44 [ + - - + : 1 : ASSERT_NEAR(static_cast<double>(stoppingDistance), 64.3, cDoubleNear);
- - - - -
- ]
45 : : }
46 : :
47 : 2 : TEST(PhysicsUnitTestsStoppingDistance, checks_negative_speed)
48 : : {
49 : 1 : Distance stoppingDistance(0.);
50 [ + - - + : 1 : ASSERT_TRUE(calculateStoppingDistance(kmhToMeterPerSec(-100.), Acceleration(6.), stoppingDistance));
- - - - -
- - - ]
51 [ + - - + : 1 : ASSERT_NEAR(static_cast<double>(stoppingDistance), -64.3, cDoubleNear);
- - - - -
- ]
52 : : }
53 : :
54 : 2 : TEST(PhysicsUnitTestsStoppingDistance, checks_0kmh)
55 : : {
56 : 1 : Distance stoppingDistance(0.);
57 [ + - - + : 1 : ASSERT_TRUE(calculateStoppingDistance(kmhToMeterPerSec(0.), Acceleration(-6.), stoppingDistance));
- - - - -
- - - ]
58 [ + - - + : 1 : ASSERT_NEAR(static_cast<double>(stoppingDistance), 0., cDoubleNear);
- - - - -
- ]
59 : : }
60 : :
61 : 2 : TEST(PhysicsUnitTestsStoppingDistance, checks_value_range)
62 : : {
63 [ + + ]: 601 : for (int i = -300; i < 300; i++)
64 : : {
65 : 600 : Acceleration deceleration;
66 [ + + ]: 600 : if (i < 0)
67 : : {
68 : 300 : deceleration = Acceleration(2.);
69 : : }
70 : : else
71 : : {
72 : 300 : deceleration = Acceleration(-2.);
73 : : }
74 : :
75 : 600 : Speed startVelocity = kmhToMeterPerSec(i);
76 [ + - + - : 600 : Distance resultingDistance = (startVelocity * startVelocity) / (2. * -deceleration);
+ - + - ]
77 : :
78 : 600 : Distance stoppingDistance(0.);
79 [ + - - + : 600 : ASSERT_TRUE(calculateStoppingDistance(startVelocity, deceleration, stoppingDistance));
- - - - -
- - - ]
80 [ + - - + : 600 : ASSERT_NEAR(static_cast<double>(stoppingDistance), static_cast<double>(resultingDistance), cDoubleNear);
- - - - -
- ]
81 : : }
82 : : }
83 : :
84 : : } // namespace situation
85 : : } // namespace rss
86 : : } // namespace ad
|