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 : : bool calculateTimeForDistance(Speed const currentSpeed,
17 : : Speed const maxSpeedOnAcceleration,
18 : : Acceleration const acceleration,
19 : : Distance const distanceToCover,
20 : : Duration &requiredTime);
21 : :
22 : 2 : TEST(PhysicsUnitTestsInputRangeChecks, negative_speed)
23 : : {
24 : 1 : Duration requiredTime(0.);
25 [ + - - + : 1 : EXPECT_FALSE(calculateTimeForDistance(Speed(-1.), Speed(2.), Acceleration(0.), Distance(1.), requiredTime));
- - - - -
- - - ]
26 : 1 : }
27 : :
28 : 2 : TEST(PhysicsUnitTestsInputRangeChecks, speed_and_acceleration_zero)
29 : : {
30 : 1 : Duration requiredTime(0.);
31 [ + - - + : 1 : EXPECT_TRUE(calculateTimeForDistance(Speed(0.), Speed(2.), Acceleration(0.), Distance(1.), requiredTime));
- - - - -
- - - ]
32 [ + - - + : 1 : EXPECT_EQ(requiredTime, std::numeric_limits<Duration>::max());
- - - - -
- ]
33 : 1 : }
34 : :
35 : : #if INVALID_AD_PHYSICS_SPEED_THROWS_EXCEPTION && INVALID_AD_PHYSICS_ACCELERATION_THROWS_EXCEPTION \
36 : : && INVALID_AD_PHYSICS_DURATION_THROWS_EXCEPTION && INVALID_AD_PHYSICS_DISTANCE_THROWS_EXCEPTION
37 : : TEST(PhysicsUnitTestsInputRangeChecks, calculateDistanceOffsetInAccerlatedMovementThrows)
38 : : {
39 : : Distance distanceOffset;
40 : : EXPECT_THROW(calculateDistanceOffsetInAcceleratedMovement(Speed(), Acceleration(0), Duration(0), distanceOffset),
41 : : std::out_of_range);
42 : : EXPECT_THROW(calculateDistanceOffsetInAcceleratedMovement(Speed(0), Acceleration(), Duration(0), distanceOffset),
43 : : std::out_of_range);
44 : : EXPECT_THROW(calculateDistanceOffsetInAcceleratedMovement(Speed(0), Acceleration(0), Duration(), distanceOffset),
45 : : std::out_of_range);
46 : : }
47 : :
48 : : TEST(PhysicsUnitTestsInputRangeChecks, calculateAcceleratedLimitedMovementThrows)
49 : : {
50 : : Speed speed;
51 : : Distance distanceOffset;
52 : : EXPECT_THROW(
53 : : calculateAcceleratedLimitedMovement(Speed(), Speed(0), Acceleration(0), Duration(0), speed, distanceOffset),
54 : : std::out_of_range);
55 : : EXPECT_THROW(
56 : : calculateAcceleratedLimitedMovement(Speed(0), Speed(), Acceleration(0), Duration(0), speed, distanceOffset),
57 : : std::out_of_range);
58 : : EXPECT_THROW(
59 : : calculateAcceleratedLimitedMovement(Speed(0), Speed(0), Acceleration(), Duration(0), speed, distanceOffset),
60 : : std::out_of_range);
61 : : EXPECT_THROW(
62 : : calculateAcceleratedLimitedMovement(Speed(0), Speed(0), Acceleration(0), Duration(), speed, distanceOffset),
63 : : std::out_of_range);
64 : : }
65 : :
66 : : TEST(PhysicsUnitTestsInputRangeChecks, calculateSpeedInAcceleratedMovementThrows)
67 : : {
68 : : Speed speed;
69 : : EXPECT_THROW(calculateSpeedInAcceleratedMovement(Speed(), Acceleration(0), Duration(0), speed), std::out_of_range);
70 : : EXPECT_THROW(calculateSpeedInAcceleratedMovement(Speed(0), Acceleration(), Duration(0), speed), std::out_of_range);
71 : : EXPECT_THROW(calculateSpeedInAcceleratedMovement(Speed(0), Acceleration(0), Duration(), speed), std::out_of_range);
72 : : }
73 : :
74 : : TEST(PhysicsUnitTestsInputRangeChecks, calculateTimeToCoverDistanceThrows)
75 : : {
76 : : Duration requiredTime(0.);
77 : : EXPECT_THROW(calculateTimeToCoverDistance(Speed(),
78 : : cMaxSpeedOnAcceleration,
79 : : Duration(0.),
80 : : Acceleration(0.),
81 : : std::numeric_limits<Acceleration>::epsilon(),
82 : : Distance(1.),
83 : : requiredTime),
84 : : std::out_of_range);
85 : : EXPECT_THROW(calculateTimeToCoverDistance(Speed(0.),
86 : : cMaxSpeedOnAcceleration,
87 : : Duration(),
88 : : Acceleration(0.),
89 : : std::numeric_limits<Acceleration>::epsilon(),
90 : : Distance(1.),
91 : : requiredTime),
92 : : std::out_of_range);
93 : : EXPECT_THROW(calculateTimeToCoverDistance(Speed(0.),
94 : : cMaxSpeedOnAcceleration,
95 : : Duration(0.),
96 : : Acceleration(),
97 : : std::numeric_limits<Acceleration>::epsilon(),
98 : : Distance(1.),
99 : : requiredTime),
100 : : std::out_of_range);
101 : : EXPECT_THROW(
102 : : calculateTimeToCoverDistance(
103 : : Speed(0.), cMaxSpeedOnAcceleration, Duration(0.), Acceleration(0.), Acceleration(), Distance(1.), requiredTime),
104 : : std::out_of_range);
105 : : EXPECT_THROW(calculateTimeToCoverDistance(Speed(0.),
106 : : cMaxSpeedOnAcceleration,
107 : : Duration(0.),
108 : : Acceleration(0.),
109 : : std::numeric_limits<Acceleration>::epsilon(),
110 : : Distance(),
111 : : requiredTime),
112 : : std::out_of_range);
113 : : }
114 : : #endif
115 : :
116 : : } // namespace situation
117 : : } // namespace rss
118 : : } // namespace ad
|