Branch data Line data Source code
1 : : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 : : //
3 : : // Copyright (C) 2019-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 : : #include "ad/rss/unstructured/Geometry.hpp"
12 : :
13 : : namespace ad {
14 : : namespace rss {
15 : : namespace situation {
16 : :
17 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, decelerationAfterResponseNotStoppedYet)
18 : : {
19 : 1 : Speed speed;
20 : 1 : Distance distanceOffset;
21 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(2.0), // currentTime
- - - - -
- - - ]
22 : : Speed(4.0), // initialSpeed
23 : : Duration(1.0), // responseTime
24 : : Speed(36.0), // maxSpeedOnAcceleration
25 : : Acceleration(2.0), // aUntilResponseTime
26 : : Acceleration(-3.0), // double acceleration
27 : : speed,
28 : : distanceOffset));
29 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(9.5));
- - - - -
- ]
30 [ + - - + : 1 : ASSERT_EQ(speed, Speed(3.));
- - - - -
- ]
31 : : }
32 : :
33 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, decelerationAfterResponseStopped)
34 : : {
35 : 1 : Speed speed;
36 : 1 : Distance distanceOffset;
37 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(5.0), // currentTime
- - - - -
- - - ]
38 : : Speed(4.0), // initialSpeed
39 : : Duration(1.0), // responseTime
40 : : Speed(36.0), // maxSpeedOnAcceleration
41 : : Acceleration(2.0), // aUntilResponseTime
42 : : Acceleration(-3.0), // double acceleration
43 : : speed,
44 : : distanceOffset));
45 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(11.0));
- - - - -
- ]
46 [ + - - + : 1 : ASSERT_EQ(speed, Speed(0.));
- - - - -
- ]
47 : : }
48 : :
49 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, accelerationAfterResponse)
50 : : {
51 : 1 : Speed speed;
52 : 1 : Distance distanceOffset;
53 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(2.0), // currentTime
- - - - -
- - - ]
54 : : Speed(4.0), // initialSpeed
55 : : Duration(1.0), // responseTime
56 : : Speed(36.0), // maxSpeedOnAcceleration
57 : : Acceleration(2.0), // aUntilResponseTime
58 : : Acceleration(2.0), // double acceleration
59 : : speed,
60 : : distanceOffset));
61 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(12.0));
- - - - -
- ]
62 [ + - - + : 1 : ASSERT_EQ(speed, Speed(8.));
- - - - -
- ]
63 : : }
64 : :
65 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, accelerationAfterResponseWithMaxSpeedOnAcceleration)
66 : : {
67 : 1 : Speed speed;
68 : 1 : Distance distanceOffset;
69 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(3.0), // currentTime
- - - - -
- - - ]
70 : : Speed(4.0), // initialSpeed
71 : : Duration(1.0), // responseTime
72 : : Speed(8.0), // maxSpeedOnAcceleration
73 : : Acceleration(2.0), // aUntilResponseTime
74 : : Acceleration(2.0), // double acceleration
75 : : speed,
76 : : distanceOffset));
77 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(20.0));
- - - - -
- ]
78 [ + - - + : 1 : ASSERT_EQ(speed, Speed(8.));
- - - - -
- ]
79 : : }
80 : :
81 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, responseTimeNotReachedAccel)
82 : : {
83 : 1 : Speed speed;
84 : 1 : Distance distanceOffset;
85 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(1.0), // currentTime
- - - - -
- - - ]
86 : : Speed(4.0), // initialSpeed
87 : : Duration(2.0), // responseTime
88 : : Speed(8.0), // maxSpeedOnAcceleration
89 : : Acceleration(2.0), // aUntilResponseTime
90 : : Acceleration(0.0), // double acceleration
91 : : speed,
92 : : distanceOffset));
93 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(5.0));
- - - - -
- ]
94 [ + - - + : 1 : ASSERT_EQ(speed, Speed(6.));
- - - - -
- ]
95 : : }
96 : :
97 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, responseTimeNotReachedDecel)
98 : : {
99 : 1 : Speed speed;
100 : 1 : Distance distanceOffset;
101 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(1.0), // currentTime
- - - - -
- - - ]
102 : : Speed(4.0), // initialSpeed
103 : : Duration(2.0), // responseTime
104 : : Speed(8.0), // maxSpeedOnAcceleration
105 : : Acceleration(-2.0), // aUntilResponseTime
106 : : Acceleration(0.0), // double acceleration
107 : : speed,
108 : : distanceOffset));
109 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(3.0));
- - - - -
- ]
110 [ + - - + : 1 : ASSERT_EQ(speed, Speed(2.));
- - - - -
- ]
111 : : }
112 : :
113 : 2 : TEST(MathUnitTestsSpeedAndDistanceOffset, responseTimeNotReachedAccelMaxSpeedOnAccelerationReached)
114 : : {
115 : 1 : Speed speed;
116 : 1 : Distance distanceOffset;
117 [ + - - + : 1 : ASSERT_TRUE(calculateSpeedAndDistanceOffset(Duration(2.0), // currentTime
- - - - -
- - - ]
118 : : Speed(4.0), // initialSpeed
119 : : Duration(2.0), // responseTime
120 : : Speed(6.0), // maxSpeedOnAcceleration
121 : : Acceleration(2.0), // aUntilResponseTime
122 : : Acceleration(0.0), // double acceleration
123 : : speed,
124 : : distanceOffset));
125 [ + - - + : 1 : ASSERT_EQ(distanceOffset, Distance(11.0));
- - - - -
- ]
126 [ + - - + : 1 : ASSERT_EQ(speed, Speed(6.));
- - - - -
- ]
127 : : }
128 : :
129 : : } // namespace situation
130 : : } // namespace rss
131 : : } // namespace ad
|