$this->kopf(10001, 20001), 'Sollleistung_W' => 1501, ]); self::assertTrue(true); } public function testGueltigeVerbraucherdatenMitEinzelwertenUndBereichenWerdenAkzeptiert(): void { Nachrichtenvertrag::pruefeVerbraucherdaten($this->verbraucherdaten()); self::assertTrue(true); } public function testNegativePrioritaetWirdAbgelehnt(): void { $daten = $this->verbraucherdaten(); $daten['PrioritaetPV'] = -1; $this->expectException(InvalidArgumentException::class); Nachrichtenvertrag::pruefeVerbraucherdaten($daten); } public function testUeberlappendeLeistungsbereicheWerdenAbgelehnt(): void { $daten = $this->verbraucherdaten(); $daten['Leistungswerte_W'] = [0, ['Von_W' => 100, 'Bis_W' => 200], 200]; $this->expectException(InvalidArgumentException::class); Nachrichtenvertrag::pruefeVerbraucherdaten($daten); } public function testMesswertOhneLeistungsquelleWirdAbgelehnt(): void { $daten = $this->verbraucherdaten(); $daten['Leistungsquelle'] = Nachrichtenvertrag::LEISTUNGSQUELLE_NICHT_VORHANDEN; $this->expectException(InvalidArgumentException::class); Nachrichtenvertrag::pruefeVerbraucherdaten($daten); } public function testFehlenderGemeinsamerSollwertImZustandWirdAbgelehnt(): void { $daten = $this->verbraucherdaten(); $daten['Zustand'] = []; $this->expectException(InvalidArgumentException::class); Nachrichtenvertrag::pruefeVerbraucherdaten($daten); } public function testUnbekanntesFeldWirdAbgelehnt(): void { $daten = $this->verbraucherdaten(); $daten['WeiteresFeld'] = true; $this->expectException(InvalidArgumentException::class); Nachrichtenvertrag::pruefeVerbraucherdaten($daten); } /** * @return array */ private function kopf(int $absenderID, int $empfaengerID): array { return [ 'Version' => Nachrichtenvertrag::VERSION, 'AbsenderID' => $absenderID, 'EmpfaengerID' => $empfaengerID, 'Zeitpunkt' => 1788825600, ]; } /** * @return array */ private function verbraucherdaten(): array { return [ 'Kopf' => $this->kopf(20001, 10001), 'PrioritaetPV' => 0, 'PrioritaetPeak' => 12, 'Leistungswerte_W' => [ -3000, -2000, ['Von_W' => -1000, 'Bis_W' => -500], 0, 100, ['Von_W' => 1000, 'Bis_W' => 2000], 3000, ], 'AenderungMoeglich' => true, 'Verfuegbar' => true, 'Istleistung_W' => 1498.5, 'Leistungsquelle' => Nachrichtenvertrag::LEISTUNGSQUELLE_GEMESSEN, 'Zustand' => [ [ 'Kennung' => 'Sollleistung_W', 'Art' => 'Sollwert', 'Wert' => 1501, 'Einheit' => 'W', ], [ 'Kennung' => 'Fuehlerfehler', 'Art' => 'Stoerung', 'Wert' => false, 'Einheit' => '', ], ], ]; } }