test sparse schedule placement
This commit is contained in:
parent
6c8250b3a4
commit
add0684610
3 changed files with 130 additions and 14 deletions
|
|
@ -58,19 +58,74 @@ class EvenDistributionSchedulerTest extends TestCase
|
|||
}
|
||||
}
|
||||
|
||||
public function test_it_preserves_sparse_distribution_across_the_full_range(): void
|
||||
public function test_it_places_sparse_assignments_at_the_requested_position(): void
|
||||
{
|
||||
$dates = (new EvenDistributionScheduler)->scheduledDates(
|
||||
assignmentCount: 3,
|
||||
startDate: $this->utc('2026-08-10'),
|
||||
targetDate: $this->utc('2026-08-16'),
|
||||
workloadPlacement: WorkloadPlacement::Middle,
|
||||
);
|
||||
$scheduler = new EvenDistributionScheduler;
|
||||
$expectedDates = [
|
||||
WorkloadPlacement::Spread->value => [
|
||||
'2026-08-10',
|
||||
'2026-08-12',
|
||||
'2026-08-13',
|
||||
'2026-08-15',
|
||||
],
|
||||
WorkloadPlacement::Start->value => [
|
||||
'2026-08-10',
|
||||
'2026-08-11',
|
||||
'2026-08-12',
|
||||
'2026-08-13',
|
||||
],
|
||||
WorkloadPlacement::Middle->value => [
|
||||
'2026-08-11',
|
||||
'2026-08-12',
|
||||
'2026-08-13',
|
||||
'2026-08-14',
|
||||
],
|
||||
WorkloadPlacement::End->value => [
|
||||
'2026-08-12',
|
||||
'2026-08-13',
|
||||
'2026-08-14',
|
||||
'2026-08-15',
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertSame(
|
||||
['2026-08-10', '2026-08-13', '2026-08-16'],
|
||||
$this->formattedDates($dates),
|
||||
);
|
||||
foreach (WorkloadPlacement::cases() as $placement) {
|
||||
$dates = $scheduler->scheduledDates(
|
||||
assignmentCount: 4,
|
||||
startDate: $this->utc('2026-08-10'),
|
||||
targetDate: $this->utc('2026-08-15'),
|
||||
workloadPlacement: $placement,
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
$expectedDates[$placement->value],
|
||||
$this->formattedDates($dates),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_it_places_one_assignment_at_the_requested_position(): void
|
||||
{
|
||||
$scheduler = new EvenDistributionScheduler;
|
||||
$expectedDates = [
|
||||
WorkloadPlacement::Spread->value => '2026-08-10',
|
||||
WorkloadPlacement::Start->value => '2026-08-10',
|
||||
WorkloadPlacement::Middle->value => '2026-08-12',
|
||||
WorkloadPlacement::End->value => '2026-08-15',
|
||||
];
|
||||
|
||||
foreach (WorkloadPlacement::cases() as $placement) {
|
||||
$dates = $scheduler->scheduledDates(
|
||||
assignmentCount: 1,
|
||||
startDate: $this->utc('2026-08-10'),
|
||||
targetDate: $this->utc('2026-08-15'),
|
||||
workloadPlacement: $placement,
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
[$expectedDates[$placement->value]],
|
||||
$this->formattedDates($dates),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_it_distributes_even_and_single_day_schedules(): void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue