@@ -9,7 +9,7 @@ public class NonPreemptivePrioritySchedulingTest {
9
9
@ Test
10
10
public void testCalculateAverageWaitingTime () {
11
11
NonPreemptivePriorityScheduling .Process [] processes = {new NonPreemptivePriorityScheduling .Process (1 , 0 , 10 , 2 ), // id, arrivalTime, burstTime, priority
12
- new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
12
+ new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
13
13
NonPreemptivePriorityScheduling .Process [] executionOrder = NonPreemptivePriorityScheduling .scheduleProcesses (processes );
14
14
15
15
double expectedAvgWaitingTime = (0 + 5 + 15 ) / 3.0 ; // Waiting times: 0 for P2, 5 for P1, 15 for P3
@@ -21,7 +21,8 @@ public void testCalculateAverageWaitingTime() {
21
21
@ Test
22
22
public void testCalculateAverageTurnaroundTime () {
23
23
NonPreemptivePriorityScheduling .Process [] processes = {new NonPreemptivePriorityScheduling .Process (1 , 0 , 10 , 2 ), // id, arrivalTime, burstTime, priority
24
- new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
24
+ new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
25
+
25
26
NonPreemptivePriorityScheduling .Process [] executionOrder = NonPreemptivePriorityScheduling .scheduleProcesses (processes );
26
27
27
28
double expectedAvgTurnaroundTime = (5 + 15 + 23 ) / 3.0 ; // Turnaround times: 5 for P2, 15 for P1, 23 for P3
@@ -32,13 +33,43 @@ public void testCalculateAverageTurnaroundTime() {
32
33
33
34
@ Test
34
35
public void testStartTimeIsCorrect () {
35
- NonPreemptivePriorityScheduling .Process [] processes = {new NonPreemptivePriorityScheduling .Process (1 , 0 , 10 , 2 ), // id, arrivalTime, burstTime, priority
36
- new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
36
+ NonPreemptivePriorityScheduling .Process [] processes = {
37
+ new NonPreemptivePriorityScheduling .Process (1 , 0 , 10 , 2 ), // id, arrivalTime, burstTime, priority
38
+ new NonPreemptivePriorityScheduling .Process (2 , 0 , 5 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 0 , 8 , 3 )};
39
+
37
40
NonPreemptivePriorityScheduling .Process [] executionOrder = NonPreemptivePriorityScheduling .scheduleProcesses (processes );
38
41
39
42
// Check that the start time for each process is correctly set
40
43
assertEquals (0 , executionOrder [0 ].startTime , "First process (P2) should start at time 0." ); // Process 2 has the highest priority
41
44
assertEquals (5 , executionOrder [1 ].startTime , "Second process (P1) should start at time 5." );
42
45
assertEquals (15 , executionOrder [2 ].startTime , "Third process (P3) should start at time 15." );
43
46
}
47
+
48
+ @ Test
49
+ public void testWithDelayedArrivalTimes () {
50
+ NonPreemptivePriorityScheduling .Process [] processes = {
51
+ new NonPreemptivePriorityScheduling .Process (1 , 0 , 4 , 1 ), // id, arrivalTime, burstTime, priority
52
+ new NonPreemptivePriorityScheduling .Process (2 , 2 , 3 , 2 ), new NonPreemptivePriorityScheduling .Process (3 , 4 , 2 , 3 )};
53
+
54
+ NonPreemptivePriorityScheduling .Process [] executionOrder = NonPreemptivePriorityScheduling .scheduleProcesses (processes );
55
+
56
+ // Test the start times considering delayed arrivals
57
+ assertEquals (0 , executionOrder [0 ].startTime , "First process (P1) should start at time 0." );
58
+ assertEquals (4 , executionOrder [1 ].startTime , "Second process (P2) should start at time 4." ); // After P1 finishes
59
+ assertEquals (7 , executionOrder [2 ].startTime , "Third process (P3) should start at time 7." ); // After P2 finishes
60
+ }
61
+
62
+ @ Test
63
+ public void testWithGapsInArrivals () {
64
+ NonPreemptivePriorityScheduling .Process [] processes = {
65
+ new NonPreemptivePriorityScheduling .Process (1 , 0 , 6 , 2 ), // id, arrivalTime, burstTime, priority
66
+ new NonPreemptivePriorityScheduling .Process (2 , 8 , 4 , 1 ), new NonPreemptivePriorityScheduling .Process (3 , 12 , 5 , 3 )};
67
+
68
+ NonPreemptivePriorityScheduling .Process [] executionOrder = NonPreemptivePriorityScheduling .scheduleProcesses (processes );
69
+
70
+ // Test the start times for processes with gaps in arrival times
71
+ assertEquals (0 , executionOrder [0 ].startTime , "First process (P1) should start at time 0." );
72
+ assertEquals (8 , executionOrder [1 ].startTime , "Second process (P2) should start at time 8." ); // After P1 finishes, arrives at 8
73
+ assertEquals (12 , executionOrder [2 ].startTime , "Third process (P3) should start at time 12." ); // After P2 finishes, arrives at 12
74
+ }
44
75
}
0 commit comments