Skip to content

Commit 57de753

Browse files
committed
Add cumulative worker to resource_interrupted test
1 parent 862a8ac commit 57de753

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/test_resource_interrupted.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,42 @@ def test_resource_interrupted_assignment_assertion() -> None:
6262
worker_1 = ps.Worker(name="Worker1")
6363
with pytest.raises(AssertionError):
6464
ps.ResourceInterrupted(resource=worker_1, list_of_time_intervals=[(1, 3)])
65+
66+
67+
def test_resource_cumulative_worker_interrupted_fixed_duration() -> None:
68+
pb = ps.SchedulingProblem(name="fixed_duration")
69+
task_1 = ps.FixedDurationTask(name="task1", duration=3)
70+
task_2 = ps.FixedDurationTask(name="task2", duration=4)
71+
worker_1 = ps.CumulativeWorker(name="Worker1", size=2)
72+
task_1.add_required_resource(worker_1)
73+
task_2.add_required_resource(worker_1)
74+
ps.ResourceInterrupted(resource=worker_1, list_of_time_intervals=[(1, 3), (6, 8)])
75+
76+
ps.ObjectiveMinimizeMakespan()
77+
solver = ps.SchedulingSolver(problem=pb)
78+
solution = solver.solve()
79+
assert solution
80+
assert solution.tasks[task_1.name].start == 3
81+
assert solution.tasks[task_1.name].end == 6
82+
assert solution.tasks[task_2.name].start == 8
83+
assert solution.tasks[task_2.name].end == 12
84+
85+
86+
def test_resource_cumulative_worker_interrupted_variable_duration() -> None:
87+
pb = ps.SchedulingProblem(name="variable_duration")
88+
task_1 = ps.VariableDurationTask(name="task1", min_duration=3)
89+
task_2 = ps.VariableDurationTask(name="task2", min_duration=4)
90+
ps.TaskStartAt(task=task_1, value=0) # pin to have a more stable outcome
91+
worker_1 = ps.CumulativeWorker(name="Worker1", size=2)
92+
task_1.add_required_resource(worker_1)
93+
task_2.add_required_resource(worker_1)
94+
ps.ResourceInterrupted(resource=worker_1, list_of_time_intervals=[(1, 3), (6, 8)])
95+
96+
ps.ObjectiveMinimizeMakespan()
97+
solver = ps.SchedulingSolver(problem=pb)
98+
solution = solver.solve()
99+
assert solution
100+
assert solution.tasks[task_1.name].start == 0
101+
assert solution.tasks[task_1.name].end == 5
102+
assert solution.tasks[task_2.name].start == 0
103+
assert solution.tasks[task_2.name].end == 6

0 commit comments

Comments
 (0)