2, 'Istleistung_W' => 11000.0, ], false); self::assertTrue($status['FahrzeugVerbunden']); self::assertFalse($status['FahrzeugGeladen']); self::assertSame(3, $status['Fahrzeugstatus']); self::assertSame(LadestationRegler::PHASEN_DREI, $status['Phasenzahl']); } public function testEinphasigesFahrzeugWirdUnterhalb7500WErkannt(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 2300.0, ], false); self::assertSame(LadestationRegler::PHASEN_EIN, $status['Phasenzahl']); self::assertEqualsWithDelta(10.0, $status['Ladestrom_A'], 0.01); } public function testAnlaufOhneGemesseneLadeleistungGiltNichtAlsLadeende(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 0.0, ], true, false, true, false); self::assertFalse($status['FahrzeugGeladen']); self::assertSame(2, $status['Fahrzeugstatus']); } public function testGeladenWirdErstNachZuvorGemessenerLadeleistungErkannt(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 0.0, ], true, false, true, true); self::assertTrue($status['FahrzeugGeladen']); self::assertSame(4, $status['Fahrzeugstatus']); } public function testAbsichtlichGestoppteLadungWirdNichtAlsGeladenErkannt(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 0.0, ], true, false, false); self::assertFalse($status['FahrzeugGeladen']); self::assertSame(2, $status['Fahrzeugstatus']); } public function testErkanntesLadeendeBleibtBisZumAbsteckenErhalten(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 0.0, ], true, true, false); self::assertTrue($status['FahrzeugGeladen']); self::assertSame(4, $status['Fahrzeugstatus']); } public function testDirekterPhasenstromHatVorrangVorNominalerLeistungsumrechnung(): void { $status = LadestationRegler::normalisiereStatus([ 'Rohstatus' => 2, 'Istleistung_W' => 10263.0, 'Iststrom_A' => 15.9, ], true); self::assertEqualsWithDelta(15.9, $status['Ladestrom_A'], 0.01); } public function testFahrzeugMaximalstromWirdMitZweiAmpereAbstandErkannt(): void { self::assertSame(16, LadestationRegler::ermittleFahrzeugMaximalstrom(20, 15.9, 20)); self::assertNull(LadestationRegler::ermittleFahrzeugMaximalstrom(17, 15.9, 20)); self::assertNull(LadestationRegler::ermittleFahrzeugMaximalstrom(20, 0.0, 20)); } public function testBetriebsartUndSolarladenBestimmenDasLeistungsangebot(): void { $solarPV = LadestationRegler::leistungsangebot(true, true, true, false, 1, 16, true, false); $normalPV = LadestationRegler::leistungsangebot(true, true, true, false, 1, 16, false, false); $solarPeak = LadestationRegler::leistungsangebot(true, true, true, false, 1, 16, true, true); $normalPeak = LadestationRegler::leistungsangebot(true, true, true, false, 1, 16, false, true); self::assertSame(0, $solarPV[0]); self::assertCount(12, $solarPV); self::assertSame([3850], $normalPV); self::assertSame([0], $solarPeak); self::assertSame($solarPV, $normalPeak); } public function testPeakKannJedesFahrzeugAufNullSetzen(): void { self::assertSame(0, LadestationRegler::stromFuerLeistung(0, 3)); self::assertSame(6, LadestationRegler::stromFuerLeistung(4150, 3)); self::assertSame(16, LadestationRegler::stromFuerLeistung(11000, 3)); } }