This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Belevo\EnelixEMS\Tests;
|
||||
|
||||
use Belevo\EnelixEMS\EinspeiseRegler;
|
||||
use InvalidArgumentException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class EinspeiseReglerTest extends TestCase
|
||||
{
|
||||
public function testUeberschreitungWirdAufDieGesamtanlageBegrenzt(): void
|
||||
{
|
||||
$ergebnis = EinspeiseRegler::verteile(
|
||||
-15000.0,
|
||||
10000.0,
|
||||
100.0,
|
||||
[
|
||||
['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 10000],
|
||||
['ID' => 'wr-2', 'Nennleistung_W' => 5000, 'Istleistung_W' => 5000],
|
||||
]
|
||||
);
|
||||
|
||||
self::assertSame(10100.0, $ergebnis['ZielGesamtleistung_W']);
|
||||
self::assertSame(4900.0, $ergebnis['Abregelbedarf_W']);
|
||||
self::assertSame(6733.333, $ergebnis['Grenzen_W']['wr-1']);
|
||||
self::assertSame(3366.667, $ergebnis['Grenzen_W']['wr-2']);
|
||||
}
|
||||
|
||||
public function testAbregelungFolgtDerTatsaechlichenErzeugung(): void
|
||||
{
|
||||
$ergebnis = EinspeiseRegler::verteile(
|
||||
-10000.0,
|
||||
5000.0,
|
||||
0.0,
|
||||
[
|
||||
['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 10000],
|
||||
['ID' => 'wr-2', 'Nennleistung_W' => 10000, 'Istleistung_W' => 0],
|
||||
]
|
||||
);
|
||||
|
||||
self::assertSame(5000.0, $ergebnis['Grenzen_W']['wr-1']);
|
||||
self::assertSame(0.0, $ergebnis['Grenzen_W']['wr-2']);
|
||||
}
|
||||
|
||||
public function testFreierNetzspielraumHebtEineBestehendeBegrenzungAn(): void
|
||||
{
|
||||
$ergebnis = EinspeiseRegler::verteile(
|
||||
-6000.0,
|
||||
10000.0,
|
||||
100.0,
|
||||
[
|
||||
['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 4000],
|
||||
['ID' => 'wr-2', 'Nennleistung_W' => 10000, 'Istleistung_W' => 2000],
|
||||
],
|
||||
['wr-1' => 5000, 'wr-2' => 5000]
|
||||
);
|
||||
|
||||
self::assertSame(13900.0, $ergebnis['ZielGesamtleistung_W']);
|
||||
self::assertSame(6950.0, $ergebnis['Grenzen_W']['wr-1']);
|
||||
self::assertSame(6950.0, $ergebnis['Grenzen_W']['wr-2']);
|
||||
}
|
||||
|
||||
public function testToleranzVerhindertPendelnAmGrenzwert(): void
|
||||
{
|
||||
$ergebnis = EinspeiseRegler::verteile(
|
||||
-10050.0,
|
||||
10000.0,
|
||||
100.0,
|
||||
[['ID' => 'wr-1', 'Nennleistung_W' => 10000, 'Istleistung_W' => 9000]],
|
||||
['wr-1' => 8000]
|
||||
);
|
||||
|
||||
self::assertSame(8000.0, $ergebnis['ZielGesamtleistung_W']);
|
||||
}
|
||||
|
||||
public function testStellwerteWerdenInProzentOderWattAusgegeben(): void
|
||||
{
|
||||
self::assertSame(62.5, EinspeiseRegler::stellwert(5000.0, 8000.0, 'percent'));
|
||||
self::assertSame(5000.0, EinspeiseRegler::stellwert(5000.0, 8000.0, 'watt'));
|
||||
}
|
||||
|
||||
public function testUngueltigeBegrenzungsartWirdAbgelehnt(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
EinspeiseRegler::stellwert(5000.0, 8000.0, 'volt');
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,13 @@ final class ManagerModulstrukturTest extends TestCase
|
||||
'VerbraucherTimeout',
|
||||
'MesswertMaxAlter',
|
||||
'Umschaltdifferenz',
|
||||
'EinspeisebegrenzungAktiv',
|
||||
'Einspeisegrenze',
|
||||
'Einspeisetoleranz',
|
||||
'NetzfahrplanAktiv',
|
||||
'IstleistungVariableID',
|
||||
'BegrenzungVariableID',
|
||||
'Begrenzungsart',
|
||||
'DiagnosevariablenAnzeigen',
|
||||
'LoggingEin',
|
||||
'Lizenzcode',
|
||||
@@ -230,6 +237,24 @@ final class ManagerModulstrukturTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testManagerRegeltDieAnlagenweiteEinspeisegrenzeUndDenNetzfahrplan(): void
|
||||
{
|
||||
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
||||
|
||||
self::assertFileExists(__DIR__ . '/../libs/EinspeiseRegler.php');
|
||||
self::assertStringContainsString('EinspeiseRegler::verteile(', $inhalt);
|
||||
self::assertStringContainsString('EinspeiseRegler::stellwert(', $inhalt);
|
||||
self::assertStringContainsString("RegisterAttributeString('LetztePvGrenzen'", $inhalt);
|
||||
self::assertStringContainsString("RegisterAttributeString('Netzfahrplan'", $inhalt);
|
||||
self::assertStringContainsString(
|
||||
'https://license.enelix.ch/api/v1/installations/%s/prognosis/schedule',
|
||||
$inhalt
|
||||
);
|
||||
self::assertStringContainsString('Lizenzpruefung::NETZFAHRPLAN', $inhalt);
|
||||
self::assertStringContainsString('aktuelleNetzfahrplanVorgabe()', $inhalt);
|
||||
self::assertStringContainsString('gibEinspeisebegrenzungFrei()', $inhalt);
|
||||
}
|
||||
|
||||
public function testManagerVerwendetDieNeuenZeitdefaults(): void
|
||||
{
|
||||
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
||||
|
||||
@@ -47,6 +47,7 @@ return [
|
||||
'file' => __DIR__ . '/modules/Manager.php',
|
||||
'paths' => [
|
||||
'Manager/*',
|
||||
'libs/EinspeiseRegler.php',
|
||||
'libs/Lizenzpruefung.php',
|
||||
'libs/ManagerRegler.php',
|
||||
'libs/ManagerSchnittstelle.php',
|
||||
|
||||
Reference in New Issue
Block a user