@@ -24,9 +24,11 @@ import kotlin.test.assertFailsWith
24
24
import tools.aqua.stars.data.av.*
25
25
import tools.aqua.stars.data.av.dataclasses.Lane
26
26
import tools.aqua.stars.data.av.dataclasses.SpeedLimit
27
+ import tools.aqua.stars.data.av.dataclasses.Vehicle
27
28
import tools.aqua.stars.importer.carla.dataclasses.JsonLandmark
28
29
import tools.aqua.stars.importer.carla.dataclasses.JsonLandmarkType
29
30
31
+ /* * Tests various configurations of speed limits on a lane. */
30
32
class JSONSpeedLimitTest {
31
33
32
34
private lateinit var jsonSpeedLimit1: JsonLandmark
@@ -35,6 +37,7 @@ class JSONSpeedLimitTest {
35
37
private lateinit var speedLimitLane: Lane
36
38
private lateinit var speedLimits: List <SpeedLimit >
37
39
40
+ /* * Creates the speed limits, landmarks and the lane. */
38
41
@BeforeTest
39
42
fun setup () {
40
43
jsonSpeedLimit1 = emptyJsonLandmark()
@@ -59,6 +62,10 @@ class JSONSpeedLimitTest {
59
62
assertEquals(2 , speedLimits.size)
60
63
}
61
64
65
+ /* *
66
+ * Asserts that the landmark type is [JsonLandmarkType.MaximumSpeed], unit is "mph" and the values
67
+ * are identical.
68
+ */
62
69
@Test
63
70
fun testMPHUnitConversion () {
64
71
assertEquals(JsonLandmarkType .MaximumSpeed , jsonSpeedLimit1.type)
@@ -71,6 +78,7 @@ class JSONSpeedLimitTest {
71
78
assertEquals(speedLimits[1 ].speedLimit, jsonLandmarks[1 ].value)
72
79
}
73
80
81
+ /* * Tests [getSpeedLimitsFromLandmarks] with unis "kmh". */
74
82
@Test
75
83
fun testOtherUnitConversions () {
76
84
val jsonLandmark = emptyJsonLandmark()
@@ -84,6 +92,7 @@ class JSONSpeedLimitTest {
84
92
assertEquals(30.0 , resultSpeedLimits[0 ].speedLimit)
85
93
}
86
94
95
+ /* * Tests speed limits if multiple exists on the lane. */
87
96
@Test
88
97
fun testBoundariesForMultipleSpeedLimits () {
89
98
assertEquals(10.0 , speedLimits[0 ].fromDistanceFromStart)
@@ -93,6 +102,9 @@ class JSONSpeedLimitTest {
93
102
assertEquals(40.0 , speedLimits[1 ].toDistanceFromStart)
94
103
}
95
104
105
+ /* *
106
+ * Tests that [JsonLandmark]s other than [JsonLandmarkType.MaximumSpeed] have a speed limit of 0.
107
+ */
96
108
@Test
97
109
fun testNonSpeedLimitLandmarks () {
98
110
val invalidLandmarks: List <JsonLandmark > =
@@ -106,12 +118,13 @@ class JSONSpeedLimitTest {
106
118
107
119
assertEquals(0 , getSpeedLimitsFromLandmarks(speedLimitLane, invalidLandmarks).size)
108
120
}
109
-
121
+ /* * Tests [getSpeedLimitsFromLandmarks] returns 0 if no landmark is given. */
110
122
@Test
111
123
fun testEmptyLandmarksList () {
112
124
assertEquals(0 , getSpeedLimitsFromLandmarks(speedLimitLane, listOf ()).size)
113
125
}
114
126
127
+ /* * Tests [getSpeedLimitsFromLandmarks] from midpoint of lane. */
115
128
@Test
116
129
fun testSingleSpeedLimitBoundariesStartingInMidOfLane () {
117
130
// Single SpeedLimit sign at s=10
@@ -126,6 +139,7 @@ class JSONSpeedLimitTest {
126
139
assertEquals(speedLimitLane.laneLength, resultSpeedLimits[0 ].toDistanceFromStart)
127
140
}
128
141
142
+ /* * Tests [getSpeedLimitsFromLandmarks] from start of lane. */
129
143
@Test
130
144
fun testSingleSpeedLimitBoundariesStartingAtStartOfLane () {
131
145
// Single SpeedLimit sign at s=0
@@ -140,6 +154,7 @@ class JSONSpeedLimitTest {
140
154
assertEquals(speedLimitLane.laneLength, resultSpeedLimits[0 ].toDistanceFromStart)
141
155
}
142
156
157
+ /* * Tests [getSpeedLimitsFromLandmarks] from end of lane. Should throw [IllegalStateException]. */
143
158
@Test
144
159
fun testSingleSpeedLimitBoundariesStartingAtEndOfLane () {
145
160
// Single SpeedLimit sign at s=lane_length
@@ -153,6 +168,10 @@ class JSONSpeedLimitTest {
153
168
}
154
169
}
155
170
171
+ /* *
172
+ * Tests [getSpeedLimitsFromLandmarks] from behind end of lane. Should throw
173
+ * [IllegalStateException].
174
+ */
156
175
@Test
157
176
fun testSingleSpeedLimitBoundariesStartAfterEndOfLane () {
158
177
// Single SpeedLimit sign at s=lane_length+1
@@ -166,6 +185,7 @@ class JSONSpeedLimitTest {
166
185
}
167
186
}
168
187
188
+ /* * Tests [Vehicle.applicableSpeedLimit] for multiple speed limits on lane. */
169
189
@Test
170
190
fun testApplicableSpeedLimitsForVehicle () {
171
191
val speedLimit1 =
@@ -174,10 +194,10 @@ class JSONSpeedLimitTest {
174
194
SpeedLimit (speedLimit = 50.0 , fromDistanceFromStart = 30.0 , toDistanceFromStart = 50.0 )
175
195
val speedLimit3 =
176
196
SpeedLimit (speedLimit = 80.0 , fromDistanceFromStart = 50.0 , toDistanceFromStart = 80.0 )
177
- val vehicleLane = emptyLane()
197
+ val vehicleLane: Lane = emptyLane()
178
198
vehicleLane.speedLimits = listOf (speedLimit1, speedLimit2, speedLimit3)
179
199
180
- val vehicle = emptyVehicle()
200
+ val vehicle: Vehicle = emptyVehicle()
181
201
vehicle.lane = vehicleLane
182
202
183
203
vehicle.positionOnLane = 0.0
@@ -208,6 +228,7 @@ class JSONSpeedLimitTest {
208
228
assertEquals(null , vehicle.applicableSpeedLimit)
209
229
}
210
230
231
+ /* * Tests [Lane.speedAt] for multiple speed limits on lane. */
211
232
@Test
212
233
fun testSpeedAt () {
213
234
val speedLimit1 =
@@ -229,6 +250,7 @@ class JSONSpeedLimitTest {
229
250
assertEquals(30.0 , lane.speedAt(80.0 ))
230
251
}
231
252
253
+ /* * Tests speed limit conversion from json. */
232
254
@Test
233
255
fun testSpeedLimitCreationFromJsonLaneConversion () {
234
256
val jsonLane = emptyJsonLane()
0 commit comments