feat(manager): Fahrplanvorgabe linear interpolieren
Tests / test (push) Successful in 54s

This commit is contained in:
dh
2026-10-01 12:16:10 +00:00
parent add1077674
commit 38353aed93
3 changed files with 122 additions and 23 deletions
+53
View File
@@ -11,6 +11,59 @@ use PHPUnit\Framework\TestCase;
final class ManagerReglerTest extends TestCase
{
public function testFahrplanVorgabeWirdZwischenPunktenLinearInterpoliert(): void
{
$punkte = [
['time' => '2026-09-30T11:35:00+00:00', 'gridTargetW' => 20486.254],
['time' => '2026-09-30T11:30:00+00:00', 'gridTargetW' => 15664.283],
];
$vorgabe = ManagerRegler::interpolierteFahrplanVorgabe(
$punkte,
(int) strtotime('2026-09-30T11:32:30+00:00')
);
self::assertEqualsWithDelta(18075.2685, $vorgabe, 0.0001);
}
public function testFahrplanVorgabeVerwendetRandpunktInnerhalbDerToleranz(): void
{
$punkte = [
['time' => '2026-09-30T11:30:00+00:00', 'gridTargetW' => 15664.283],
['time' => '2026-09-30T11:35:00+00:00', 'gridTargetW' => 20486.254],
];
self::assertSame(
15664.283,
ManagerRegler::interpolierteFahrplanVorgabe(
$punkte,
(int) strtotime('2026-09-30T11:29:44+00:00')
)
);
self::assertSame(
20486.254,
ManagerRegler::interpolierteFahrplanVorgabe(
$punkte,
(int) strtotime('2026-09-30T11:35:10+00:00')
)
);
}
public function testFahrplanVorgabeVerwirftZuGrosseZeitlicheLuecke(): void
{
$punkte = [
['time' => '2026-09-30T11:00:00+00:00', 'gridTargetW' => 10000],
['time' => '2026-09-30T12:00:00+00:00', 'gridTargetW' => 20000],
];
self::assertNull(
ManagerRegler::interpolierteFahrplanVorgabe(
$punkte,
(int) strtotime('2026-09-30T11:31:00+00:00')
)
);
}
public function testOhnePeakBegrenzungBleibtSolarladenAktiv(): void
{
self::assertSame(