This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Belevo\EnelixEMS\Tests;
|
||||
|
||||
use Belevo\EnelixEMS\PufferspeicherRegler;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class PufferspeicherReglerTest extends TestCase
|
||||
{
|
||||
/** @return list<array{Stufe: int, Leistung_W: int, KontaktID: int}> */
|
||||
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)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user