67 lines
2.2 KiB
PHP
67 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Belevo\EnelixEMS\Tests;
|
|
|
|
use Belevo\EnelixEMS\EnergieMessung;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class EnergieMessungTest extends TestCase
|
|
{
|
|
public function testIntegriertVierLeistungenMitVorzeichenrichtung(): void
|
|
{
|
|
$werte = EnergieMessung::energieDeltas([
|
|
'PV' => 7200.0,
|
|
'Haus' => 3600.0,
|
|
'Netz' => -1800.0,
|
|
'Batterie' => 900.0,
|
|
], 300);
|
|
|
|
self::assertEqualsWithDelta(0.6, $werte['PVEnergie'], 0.000001);
|
|
self::assertEqualsWithDelta(0.3, $werte['Hausenergie'], 0.000001);
|
|
self::assertSame(0.0, $werte['NetzbezugEnergie']);
|
|
self::assertEqualsWithDelta(0.15, $werte['EinspeisungEnergie'], 0.000001);
|
|
self::assertEqualsWithDelta(0.075, $werte['BatterieLadenEnergie'], 0.000001);
|
|
self::assertSame(0.0, $werte['BatterieEntladenEnergie']);
|
|
}
|
|
|
|
public function testTrenntBezugUndBatterieentladung(): void
|
|
{
|
|
$werte = EnergieMessung::energieDeltas([
|
|
'PV' => -10.0,
|
|
'Haus' => -10.0,
|
|
'Netz' => 1000.0,
|
|
'Batterie' => -2000.0,
|
|
], 3600);
|
|
|
|
self::assertSame(0.0, $werte['PVEnergie']);
|
|
self::assertSame(0.0, $werte['Hausenergie']);
|
|
self::assertSame(1.0, $werte['NetzbezugEnergie']);
|
|
self::assertSame(0.0, $werte['EinspeisungEnergie']);
|
|
self::assertSame(0.0, $werte['BatterieLadenEnergie']);
|
|
self::assertSame(2.0, $werte['BatterieEntladenEnergie']);
|
|
}
|
|
|
|
public function testBerechnetHausverbrauchAusDerAnlagenbilanz(): void
|
|
{
|
|
self::assertSame(2700.0, EnergieMessung::hausleistung(4200.0, -800.0, 700.0));
|
|
self::assertSame(3500.0, EnergieMessung::hausleistung(2000.0, 500.0, -1000.0));
|
|
self::assertSame(0.0, EnergieMessung::hausleistung(500.0, -1200.0, 0.0));
|
|
}
|
|
|
|
public function testIgnoriertUngueltigeDauerUndNichtEndlicheWerte(): void
|
|
{
|
|
$werte = EnergieMessung::energieDeltas([
|
|
'PV' => INF,
|
|
'Haus' => NAN,
|
|
'Netz' => 1000.0,
|
|
'Batterie' => -1000.0,
|
|
], -1);
|
|
|
|
foreach ($werte as $wert) {
|
|
self::assertSame(0.0, $wert);
|
|
}
|
|
}
|
|
}
|