@@ -47,10 +47,12 @@ import org.junit.jupiter.api.Test
4747 */
4848@DisplayName(" DefaultNetworkPerceptionPort — unit coverage" )
4949class DefaultNetworkPerceptionPortTest {
50-
5150 // ── Helpers ────────────────────────────────────────────────────────────
5251
53- private fun semaphore (name : String , signal : Signal = Signal .STOP ): DynamicRailSemaphore =
52+ private fun semaphore (
53+ name : String ,
54+ signal : Signal = Signal .STOP
55+ ): DynamicRailSemaphore =
5456 mockk<DynamicRailSemaphore >(relaxed = true ).also {
5557 every { it.name } returns name
5658 every { it.signal } returns signal
@@ -60,7 +62,7 @@ class DefaultNetworkPerceptionPortTest {
6062 name : String? = null,
6163 state : TrackFacility .State = TrackFacility .State .FREE ,
6264 trainName : String? = null,
63- occupantName : String? = null,
65+ occupantName : String? = null
6466 ): DynamicTrackBlock =
6567 mockk<DynamicTrackBlock >(relaxed = true ).also {
6668 every { it.name } returns name
@@ -85,7 +87,7 @@ class DefaultNetworkPerceptionPortTest {
8587 originName : String = "A ",
8688 destName : String = "B ",
8789 departureTime : Double = 0.0,
88- arrivalTime : Double = 60.0,
90+ arrivalTime : Double = 60.0
8991 ): Train {
9092 val inOut = mockk<DynamicInOut >(relaxed = true )
9193 every { inOut.name } returns originName
@@ -115,7 +117,7 @@ class DefaultNetworkPerceptionPortTest {
115117 @Suppress(" UNCHECKED_CAST" )
116118 private fun env (
117119 cells : Map <Pair <Int , Int >, Cell ? > = emptyMap(),
118- blocks : Collection <DynamicTrackBlock > = emptyList(),
120+ blocks : Collection <DynamicTrackBlock > = emptyList()
119121 ): SimulationEnvironment {
120122 val grid = mockk<RailwayNetGrid <Cell >>(relaxed = true )
121123 every { grid.cols } returns 3
@@ -138,15 +140,15 @@ class DefaultNetworkPerceptionPortTest {
138140 @Nested
139141 @DisplayName(" signalAspect()" )
140142 inner class SignalAspect {
141-
142143 @Test
143144 @DisplayName(" returns SemaphoreReading for a known semaphore" )
144145 fun knownSemaphoreReturnsReading () {
145146 val sem = semaphore(" zA" , Signal .FREE )
146- val port = DefaultNetworkPerceptionPort (
147- env(cells = mapOf ((0 to 0 ) to sem)),
148- activeTrains = { emptyList() },
149- )
147+ val port =
148+ DefaultNetworkPerceptionPort (
149+ env(cells = mapOf ((0 to 0 ) to sem)),
150+ activeTrains = { emptyList() }
151+ )
150152
151153 val result = port.signalAspect(" zA" )
152154
@@ -156,10 +158,11 @@ class DefaultNetworkPerceptionPortTest {
156158 @Test
157159 @DisplayName(" returns null for an unknown semaphore name" )
158160 fun unknownSemaphoreReturnsNull () {
159- val port = DefaultNetworkPerceptionPort (
160- env(cells = emptyMap()),
161- activeTrains = { emptyList() },
162- )
161+ val port =
162+ DefaultNetworkPerceptionPort (
163+ env(cells = emptyMap()),
164+ activeTrains = { emptyList() }
165+ )
163166
164167 assertThat(port.signalAspect(" noSuchSem" )).isNull()
165168 }
@@ -168,32 +171,33 @@ class DefaultNetworkPerceptionPortTest {
168171 @Nested
169172 @DisplayName(" allSignalAspects()" )
170173 inner class AllSignalAspects {
171-
172174 @Test
173175 @DisplayName(" returns one reading per semaphore in the grid" )
174176 fun returnsTwoSemaphores () {
175177 val semA = semaphore(" zA" , Signal .STOP )
176178 val semB = semaphore(" doB1" , Signal .S60 )
177- val port = DefaultNetworkPerceptionPort (
178- env(cells = mapOf ((0 to 0 ) to semA, (1 to 0 ) to semB)),
179- activeTrains = { emptyList() },
180- )
179+ val port =
180+ DefaultNetworkPerceptionPort (
181+ env(cells = mapOf ((0 to 0 ) to semA, (1 to 0 ) to semB)),
182+ activeTrains = { emptyList() }
183+ )
181184
182185 val result = port.allSignalAspects()
183186
184187 assertThat(result).containsExactlyInAnyOrder(
185188 SemaphoreReading (" zA" , Signal .STOP ),
186- SemaphoreReading (" doB1" , Signal .S60 ),
189+ SemaphoreReading (" doB1" , Signal .S60 )
187190 )
188191 }
189192
190193 @Test
191194 @DisplayName(" returns empty list when no semaphores in the grid" )
192195 fun emptyGridReturnsEmptyList () {
193- val port = DefaultNetworkPerceptionPort (
194- env(cells = emptyMap()),
195- activeTrains = { emptyList() },
196- )
196+ val port =
197+ DefaultNetworkPerceptionPort (
198+ env(cells = emptyMap()),
199+ activeTrains = { emptyList() }
200+ )
197201
198202 assertThat(port.allSignalAspects()).isEmpty()
199203 }
@@ -204,7 +208,6 @@ class DefaultNetworkPerceptionPortTest {
204208 @Nested
205209 @DisplayName(" blockOccupancy()" )
206210 inner class BlockOccupancy {
207-
208211 @Test
209212 @DisplayName(" FREE block returns reading with null trainId" )
210213 fun freeBlockTrainIdIsNull () {
@@ -234,11 +237,12 @@ class DefaultNetworkPerceptionPortTest {
234237 @Test
235238 @DisplayName(" OCCUPIED block returns reading with occupant name as trainId" )
236239 fun occupiedBlockTrainIdIsOccupantName () {
237- val b = block(
238- name = " k2" ,
239- state = TrackFacility .State .OCCUPIED ,
240- occupantName = " Train #2" ,
241- )
240+ val b =
241+ block(
242+ name = " k2" ,
243+ state = TrackFacility .State .OCCUPIED ,
244+ occupantName = " Train #2"
245+ )
242246 val port = DefaultNetworkPerceptionPort (env(blocks = listOf (b)), { emptyList() })
243247
244248 val result = port.blockOccupancy(" k2" )
@@ -260,7 +264,6 @@ class DefaultNetworkPerceptionPortTest {
260264 @Nested
261265 @DisplayName(" allBlockOccupancies()" )
262266 inner class AllBlockOccupancies {
263-
264267 @Test
265268 @DisplayName(" returns one reading per block" )
266269 fun returnsTwoBlocks () {
@@ -272,7 +275,7 @@ class DefaultNetworkPerceptionPortTest {
272275
273276 assertThat(result).containsExactlyInAnyOrder(
274277 BlockOccupancyReading (" k1" , TrackFacility .State .FREE , null ),
275- BlockOccupancyReading (" k2" , TrackFacility .State .RESERVED , " Train #1" ),
278+ BlockOccupancyReading (" k2" , TrackFacility .State .RESERVED , " Train #1" )
276279 )
277280 }
278281
@@ -290,7 +293,6 @@ class DefaultNetworkPerceptionPortTest {
290293 @Nested
291294 @DisplayName(" trainPosition()" )
292295 inner class TrainPosition {
293-
294296 @Test
295297 @DisplayName(" returns reading for an active train" )
296298 fun activeTrainReturnsReading () {
@@ -305,7 +307,7 @@ class DefaultNetworkPerceptionPortTest {
305307 velocity = 20.0 ,
306308 acceleration = 1.5 ,
307309 totalDistance = 300.0 ,
308- frontSectionName = null ,
310+ frontSectionName = null
309311 )
310312 )
311313 }
@@ -345,7 +347,6 @@ class DefaultNetworkPerceptionPortTest {
345347 @Nested
346348 @DisplayName(" allTrainPositions()" )
347349 inner class AllTrainPositions {
348-
349350 @Test
350351 @DisplayName(" returns one reading per active train" )
351352 fun returnsAllActiveTrains () {
@@ -372,17 +373,17 @@ class DefaultNetworkPerceptionPortTest {
372373 @Nested
373374 @DisplayName(" trainTimetable()" )
374375 inner class TrainTimetable {
375-
376376 @Test
377377 @DisplayName(" returns timetable reading for an active train" )
378378 fun activeTrainReturnsTimetable () {
379- val t = train(
380- " Train #1" ,
381- originName = " A" ,
382- destName = " B" ,
383- departureTime = 10.0 ,
384- arrivalTime = 120.0 ,
385- )
379+ val t =
380+ train(
381+ " Train #1" ,
382+ originName = " A" ,
383+ destName = " B" ,
384+ departureTime = 10.0 ,
385+ arrivalTime = 120.0
386+ )
386387 val port = DefaultNetworkPerceptionPort (env(), { listOf (t) })
387388
388389 val result = port.trainTimetable(" Train #1" )
@@ -393,7 +394,7 @@ class DefaultNetworkPerceptionPortTest {
393394 originInOutName = " A" ,
394395 destinationInOutName = " B" ,
395396 scheduledDepartureTime = 10.0 ,
396- scheduledArrivalTime = 120.0 ,
397+ scheduledArrivalTime = 120.0
397398 )
398399 )
399400 }
@@ -410,7 +411,6 @@ class DefaultNetworkPerceptionPortTest {
410411 @Nested
411412 @DisplayName(" allTrainTimetables()" )
412413 inner class AllTrainTimetables {
413-
414414 @Test
415415 @DisplayName(" returns one reading per active train" )
416416 fun returnsAllActiveTimetables () {
0 commit comments