|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
4 | 4 |
|
5 | 5 | import com.thealgorithms.devutils.entities.ProcessDetails;
|
6 |
| -import java.util.ArrayList; |
7 | 6 | import java.util.List;
|
8 |
| -import org.junit.jupiter.api.Test; |
| 7 | +import java.util.stream.Stream; |
| 8 | +import org.junit.jupiter.params.ParameterizedTest; |
| 9 | +import org.junit.jupiter.params.provider.Arguments; |
| 10 | +import org.junit.jupiter.params.provider.MethodSource; |
9 | 11 |
|
10 | 12 | /**
|
11 | 13 | * Test Cases of Preemptive Priority Scheduling Algorithm
|
12 | 14 | *
|
13 | 15 | * @author [Bama Charan Chhandogi](https://www.github.com/BamaCharanChhandogi)
|
14 | 16 | */
|
15 | 17 | class PreemptivePrioritySchedulingTest {
|
16 |
| - |
17 |
| - @Test |
18 |
| - void testPreemptivePriorityScheduling() { |
19 |
| - List<ProcessDetails> processes = new ArrayList<>(); |
20 |
| - processes.add(new ProcessDetails("P1", 0, 5, 2)); |
21 |
| - processes.add(new ProcessDetails("P2", 1, 4, 4)); |
22 |
| - processes.add(new ProcessDetails("P3", 2, 2, 6)); |
23 |
| - processes.add(new ProcessDetails("P4", 4, 1, 8)); |
24 |
| - |
| 18 | + @ParameterizedTest |
| 19 | + @MethodSource("provideProcessesAndExpectedSchedules") |
| 20 | + void testPreemptivePriorityScheduling(List<ProcessDetails> processes, List<String> expectedSchedule) { |
25 | 21 | PreemptivePriorityScheduling scheduler = new PreemptivePriorityScheduling(processes);
|
26 | 22 | scheduler.scheduleProcesses();
|
27 |
| - |
28 |
| - List<String> expectedSchedule = List.of("P1", "P2", "P3", "P3", "P4", "P2", "P2", "P2", "P1", "P1", "P1", "P1"); |
29 |
| - |
30 | 23 | assertEquals(expectedSchedule, scheduler.ganttChart);
|
31 | 24 | }
|
32 | 25 |
|
33 |
| - @Test |
34 |
| - void testPreemptivePrioritySchedulingWithIdleTime() { |
35 |
| - List<ProcessDetails> processes = new ArrayList<>(); |
36 |
| - processes.add(new ProcessDetails("P1", 2, 5, 3)); |
37 |
| - processes.add(new ProcessDetails("P2", 5, 3, 5)); |
38 |
| - processes.add(new ProcessDetails("P3", 7, 1, 9)); |
39 |
| - |
40 |
| - PreemptivePriorityScheduling scheduler = new PreemptivePriorityScheduling(processes); |
41 |
| - scheduler.scheduleProcesses(); |
42 |
| - |
43 |
| - List<String> expectedSchedule = List.of("Idle", "Idle", "P1", "P1", "P1", "P2", "P2", "P3", "P2", "P1", "P1"); |
44 |
| - |
45 |
| - assertEquals(expectedSchedule, scheduler.ganttChart); |
| 26 | + static Stream<Arguments> provideProcessesAndExpectedSchedules() { |
| 27 | + return Stream.of(Arguments.of(List.of(new ProcessDetails("P1", 0, 5, 2), new ProcessDetails("P2", 1, 4, 4), new ProcessDetails("P3", 2, 2, 6), new ProcessDetails("P4", 4, 1, 8)), List.of("P1", "P2", "P3", "P3", "P4", "P2", "P2", "P2", "P1", "P1", "P1", "P1")), |
| 28 | + Arguments.of(List.of(new ProcessDetails("P1", 2, 5, 3), new ProcessDetails("P2", 5, 3, 5), new ProcessDetails("P3", 7, 1, 9)), List.of("Idle", "Idle", "P1", "P1", "P1", "P2", "P2", "P3", "P2", "P1", "P1"))); |
46 | 29 | }
|
47 | 30 | }
|
0 commit comments