*/ private function stufen(): array { return [ ['Stufe' => 1, 'Leistung_W' => 1000, 'KontaktID' => 101], ['Stufe' => 2, 'Leistung_W' => 2000, 'KontaktID' => 102], ]; } public function testHeizkurveWirdBerechnetUndBegrenzt(): void { self::assertSame( 50.0, PufferspeicherRegler::solltemperatur(5.0, 35.0, 1.0, 20.0, 80.0) ); self::assertSame( 80.0, PufferspeicherRegler::solltemperatur(-100.0, 35.0, 1.0, 20.0, 80.0) ); self::assertSame( 20.0, PufferspeicherRegler::solltemperatur(100.0, 35.0, 1.0, 20.0, 80.0) ); } public function testUnterErrechneterEinschaltschwelleWerdenAlleStufenAngeboten(): void { self::assertSame( [0, 1000, 2000], PufferspeicherRegler::leistungsangebot( true, false, true, 44.9, 45.0, $this->stufen() ) ); } public function testInHystereseUndDarueberWirdNurNullAngeboten(): void { self::assertSame( [0], PufferspeicherRegler::leistungsangebot( true, false, true, 45.0, 45.0, $this->stufen() ) ); self::assertSame( [0], PufferspeicherRegler::leistungsangebot( true, false, true, 51.0, 45.0, $this->stufen() ) ); } public function testPeakbetriebBietetUnabhaengigVonDerTemperaturNurNull(): void { foreach ([-20.0, 44.9, 45.0, 100.0] as $temperatur) { self::assertSame( [0], PufferspeicherRegler::leistungsangebot( true, true, true, $temperatur, 45.0, $this->stufen() ) ); } } public function testAusgeschaltetWirdImmerNurNullAngeboten(): void { self::assertSame( [0], PufferspeicherRegler::leistungsangebot( false, false, true, -20.0, 45.0, $this->stufen() ) ); } public function testMindesttemperaturIstOptionalStatischOderDifferenzbasiert(): void { self::assertSame( 45.0, PufferspeicherRegler::einschaltschwelle( 50.0, 5.0, PufferspeicherRegler::MINIMUM_AUS, 30.0, 10.0 ) ); self::assertSame( 42.0, PufferspeicherRegler::einschaltschwelle( 50.0, 5.0, PufferspeicherRegler::MINIMUM_STATISCH, 42.0, 10.0 ) ); self::assertSame( 43.0, PufferspeicherRegler::einschaltschwelle( 50.0, 5.0, PufferspeicherRegler::MINIMUM_DIFFERENZ, 30.0, 7.0 ) ); } public function testWaermepumpenwertKalibriertFusspunktAmAktuellenAussenwert(): void { $fusspunkt = PufferspeicherRegler::fusspunktAusWaermepumpenwert(50.0, 5.0, 1.0); self::assertSame(35.0, $fusspunkt); self::assertSame( 50.0, PufferspeicherRegler::solltemperatur(5.0, $fusspunkt, 1.0, 0.0, 100.0) ); } }