import java.util.Arrays; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Assertions; public class SimpleTest { ParkingSimulator simulator = new QueueParkingSimulator(); @Test public void testNoCars() { Assertions.assertEquals(0, simulator.simulate(1, 1, Arrays.asList())); } @Test public void testOneCar() { Assertions.assertEquals(10, simulator.simulate(1, 1, Arrays.asList( new Event(0, true, 10) ))); } @Test public void testTwoConsecutiveCars() { Assertions.assertEquals(20, simulator.simulate(1, 1, Arrays.asList( new Event(0, true, 10), new Event(10, true, 10) ))); } @Test public void testCarInBetween() { Assertions.assertEquals(10, simulator.simulate(2, 1, Arrays.asList( new Event(0, true, 10), new Event(2, true, 5) ))); } @Test public void testTwoSeparateCars() { Assertions.assertEquals(25, simulator.simulate(1, 1, Arrays.asList( new Event(0, true, 10), new Event(15, true, 10) ))); } @Test public void testTwoSimultanousCarsOneSpotImmediateReturn() { Assertions.assertEquals(20, simulator.simulate(1, 1, Arrays.asList( new Event(0, true, 10), new Event(0, true, 10) ))); } @Test public void testTwoSimultanousCarsOneSpotLateReturn() { Assertions.assertEquals(24, simulator.simulate(1, 7, Arrays.asList( new Event(0, true, 10), new Event(0, true, 10) ))); } @Test public void testTwoSimultanousCarsTwoSpots() { Assertions.assertEquals(10, simulator.simulate(2, 1, Arrays.asList( new Event(0, true, 10), new Event(0, true, 10) ))); } @Test public void testTwoSimultanousCarsTwoSpotsOneLate() { Assertions.assertEquals(15, simulator.simulate(2, 1, Arrays.asList( new Event(0, true, 10), new Event(5, true, 10) ))); } @Test public void testAmbiguous() { Assertions.assertEquals(20, simulator.simulate(2, 1, Arrays.asList( new Event(0, true, 10), new Event(5, true, 5), new Event(10, true, 10), new Event(10, true, 5) ))); } @Test public void testRaceCondition1() { Assertions.assertEquals(30, simulator.simulate(1, 20, Arrays.asList( new Event(0, true, 10), new Event(0, true, 5) ))); } @Test public void testRaceCondition2() { Assertions.assertEquals(30, simulator.simulate(1, 20, Arrays.asList( new Event(0, true, 5), new Event(0, true, 10) ))); } @Test public void testRaceCondition3() { Assertions.assertEquals(35, simulator.simulate(1, 10, Arrays.asList( new Event(0, true, 15), new Event(0, true, 10), new Event(10,true,7) ))); } }