This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Belevo\EnelixEMS\Tests;
|
||||
|
||||
use Belevo\EnelixEMS\Nachrichtenvertrag;
|
||||
use Belevo\EnelixEMS\WaermepumpenRegler;
|
||||
use InvalidArgumentException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class WaermepumpenReglerTest extends TestCase
|
||||
{
|
||||
public function testKontaktwerteBildenNormalSperreUndErhoehungAb(): void
|
||||
{
|
||||
self::assertSame(
|
||||
['Kontakt1' => false, 'Kontakt2' => false],
|
||||
WaermepumpenRegler::kontaktwerte(0, WaermepumpenRegler::STEUERZUSTAND_NORMAL)
|
||||
);
|
||||
self::assertSame(
|
||||
['Kontakt1' => true, 'Kontakt2' => false],
|
||||
WaermepumpenRegler::kontaktwerte(1, WaermepumpenRegler::STEUERZUSTAND_SPERRE)
|
||||
);
|
||||
self::assertSame(
|
||||
['Kontakt1' => false, 'Kontakt2' => true],
|
||||
WaermepumpenRegler::kontaktwerte(1, WaermepumpenRegler::STEUERZUSTAND_ERHOEHUNG)
|
||||
);
|
||||
}
|
||||
|
||||
public function testLeistungUndBetriebsstatusBestimmenLaufUndIstleistung(): void
|
||||
{
|
||||
self::assertTrue(WaermepumpenRegler::laeuft(650.0, 0, 100.0));
|
||||
self::assertFalse(WaermepumpenRegler::laeuft(50.0, 0, 100.0));
|
||||
self::assertTrue(WaermepumpenRegler::laeuft(true, 1, 100.0));
|
||||
self::assertSame(650.0, WaermepumpenRegler::istleistung(650.0, 0, 5000));
|
||||
self::assertSame(5000.0, WaermepumpenRegler::istleistung(true, 1, 5000));
|
||||
}
|
||||
|
||||
public function testPvBietetStartUndErhoehungNurBeiFreigabeAn(): void
|
||||
{
|
||||
self::assertSame(
|
||||
[0, 5000],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PV,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
self::assertSame(
|
||||
[0],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PV,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testPeakBietetSperreNurBeiLaufenderUndFreigegebenerPumpeAn(): void
|
||||
{
|
||||
self::assertSame(
|
||||
[0, 5000],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PEAK,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
self::assertSame(
|
||||
[5000],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PEAK,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
self::assertSame(
|
||||
[0],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PEAK,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testSperrerholungHaeltDenBestaetigtenBetrieb(): void
|
||||
{
|
||||
self::assertSame(
|
||||
[5000],
|
||||
WaermepumpenRegler::leistungsangebot(
|
||||
5000,
|
||||
Nachrichtenvertrag::BETRIEBSART_PEAK,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testRestzeitWirdNieNegativ(): void
|
||||
{
|
||||
self::assertSame(20, WaermepumpenRegler::restzeit(100, 30, 110));
|
||||
self::assertSame(0, WaermepumpenRegler::restzeit(100, 30, 140));
|
||||
self::assertSame(0, WaermepumpenRegler::restzeit(0, 30, 10));
|
||||
}
|
||||
|
||||
public function testSperrzeit24hSchneidetAlteIntervalleAb(): void
|
||||
{
|
||||
$jetzt = 200000;
|
||||
$historie = [
|
||||
['Von' => $jetzt - 90000, 'Bis' => $jetzt - 80000],
|
||||
['Von' => $jetzt - 1000, 'Bis' => $jetzt - 400],
|
||||
];
|
||||
|
||||
self::assertSame(
|
||||
7400,
|
||||
WaermepumpenRegler::sperrsekunden24h($historie, $jetzt, $jetzt - 400)
|
||||
);
|
||||
}
|
||||
|
||||
public function testUngueltigeKontaktartWirdAbgewiesen(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
WaermepumpenRegler::kontaktwerte(99, WaermepumpenRegler::STEUERZUSTAND_NORMAL);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user