Files
Enelix-EMS/tests/EaseeLadestatusTest.php
T
2026-09-22 07:09:59 +00:00

98 lines
3.0 KiB
PHP

<?php
declare(strict_types=1);
namespace Belevo\EnelixEMS\Tests;
use Belevo\EnelixEMS\EaseeLadestatus;
use PHPUnit\Framework\TestCase;
final class EaseeLadestatusTest extends TestCase
{
public function testFahrzeugUndEinphasigesLadenKommenDirektAusApiWerten(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'109' => 3,
'110' => 10,
'120' => 2.3,
'182' => 10.1,
], 16);
self::assertTrue($status['FahrzeugVerbunden']);
self::assertFalse($status['FahrzeugGeladen']);
self::assertSame(3, $status['Fahrzeugstatus']);
self::assertSame(1, $status['Phasenzahl']);
self::assertEqualsWithDelta(2300.0, $status['Istleistung_W'], 0.01);
self::assertEqualsWithDelta(10.1, $status['Ladestrom_A'], 0.01);
}
public function testDreiphasigesLadenWirdNichtAusLeistungGeschaetzt(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'109' => 3,
'110' => 30,
'120' => 1.0,
'182' => 2.0,
'183' => 2.2,
'184' => 2.1,
], 32);
self::assertSame(3, $status['Phasenzahl']);
self::assertEqualsWithDelta(2.2, $status['Ladestrom_A'], 0.01);
}
public function testZweiphasigerApiWertWirdNichtAlsEinOderDreiGeschaetzt(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'109' => 3,
'110' => 20,
'120' => 4.6,
], 16);
self::assertSame(0, $status['Phasenzahl']);
}
public function testGetrenntUndGeladenFolgenDemEaseeBetriebszustand(): void
{
$getrennt = EaseeLadestatus::ausBeobachtungen(['109' => 1, '110' => 30], 16);
$geladen = EaseeLadestatus::ausBeobachtungen(['109' => 4, '110' => 30], 16);
self::assertFalse($getrennt['FahrzeugVerbunden']);
self::assertSame(0, $getrennt['Phasenzahl']);
self::assertTrue($geladen['FahrzeugVerbunden']);
self::assertTrue($geladen['FahrzeugGeladen']);
self::assertSame(4, $geladen['Fahrzeugstatus']);
}
public function testUnbekannterApiBetriebszustandGibtRegelungNichtFrei(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'109' => 99,
'110' => 30,
], 16);
self::assertFalse($status['StatusGueltig']);
self::assertFalse($status['FahrzeugVerbunden']);
self::assertSame(0, $status['Fahrzeugstatus']);
self::assertSame(0, $status['Phasenzahl']);
}
public function testApiUndKabelgrenzenBegrenzenDenKonfiguriertenStrom(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'109' => 2,
'110' => 10,
'47' => 25.0,
'104' => 13.7,
], 32);
self::assertSame(13, $status['ApiMaximalstrom_A']);
}
public function testNurSolarladenIstFestErzwungen(): void
{
self::assertFalse(EaseeLadestatus::solarladenErzwungen(0));
self::assertTrue(EaseeLadestatus::solarladenErzwungen(1));
}
}