'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 10000], ['ID' => 'wr-2', 'Nennleistung_W' => 5000, 'Istleistung_W' => 5000], ] ); self::assertSame(10100.0, $ergebnis['ZielGesamtleistung_W']); self::assertSame(4900.0, $ergebnis['Abregelbedarf_W']); self::assertSame(6733.333, $ergebnis['Grenzen_W']['wr-1']); self::assertSame(3366.667, $ergebnis['Grenzen_W']['wr-2']); } public function testAbregelungFolgtDerTatsaechlichenErzeugung(): void { $ergebnis = EinspeiseRegler::verteile( -10000.0, 5000.0, 0.0, [ ['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 10000], ['ID' => 'wr-2', 'Nennleistung_W' => 10000, 'Istleistung_W' => 0], ] ); self::assertSame(5000.0, $ergebnis['Grenzen_W']['wr-1']); self::assertSame(0.0, $ergebnis['Grenzen_W']['wr-2']); } public function testFreierNetzspielraumHebtEineBestehendeBegrenzungAn(): void { $ergebnis = EinspeiseRegler::verteile( -6000.0, 10000.0, 100.0, [ ['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 4000], ['ID' => 'wr-2', 'Nennleistung_W' => 10000, 'Istleistung_W' => 2000], ], ['wr-1' => 5000, 'wr-2' => 5000] ); self::assertSame(13900.0, $ergebnis['ZielGesamtleistung_W']); self::assertSame(6950.0, $ergebnis['Grenzen_W']['wr-1']); self::assertSame(6950.0, $ergebnis['Grenzen_W']['wr-2']); } public function testToleranzVerhindertPendelnAmGrenzwert(): void { $ergebnis = EinspeiseRegler::verteile( -10050.0, 10000.0, 100.0, [['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 9000]], ['wr-1' => 8000] ); self::assertSame(8000.0, $ergebnis['ZielGesamtleistung_W']); } public function testStellwerteWerdenInProzentOderWattAusgegeben(): void { self::assertSame(62.5, EinspeiseRegler::stellwert(5000.0, 8000.0, 'percent')); self::assertSame(5000.0, EinspeiseRegler::stellwert(5000.0, 8000.0, 'watt')); } public function testUngueltigeBegrenzungsartWirdAbgelehnt(): void { $this->expectException(InvalidArgumentException::class); EinspeiseRegler::stellwert(5000.0, 8000.0, 'volt'); } }