fix(manager): Fahrplanvorgabe linear interpolieren
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user