feat(utils): adapt WAGO CC100 hardware module
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Belevo\EnelixUtils\Tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class CC100HardwareModulstrukturTest extends TestCase
|
||||
{
|
||||
public function testModuleMetadataAndFormAreComplete(): void
|
||||
{
|
||||
$module = json_decode(
|
||||
file_get_contents(__DIR__ . '/../CC100Hardware/module.json'),
|
||||
true,
|
||||
512,
|
||||
JSON_THROW_ON_ERROR
|
||||
);
|
||||
$form = json_decode(
|
||||
file_get_contents(__DIR__ . '/../CC100Hardware/form.json'),
|
||||
true,
|
||||
512,
|
||||
JSON_THROW_ON_ERROR
|
||||
);
|
||||
|
||||
self::assertSame('{D62EA550-68A5-48E2-BF31-1C721AA1BD4E}', $module['id']);
|
||||
self::assertSame('CC100 Hardware', $module['name']);
|
||||
self::assertSame('CC100', $module['prefix']);
|
||||
self::assertNotEmpty($form['elements']);
|
||||
self::assertNotEmpty($form['status']);
|
||||
}
|
||||
|
||||
public function testModuleProvidesEveryCc100IoGroupAndConfigurablePolling(): void
|
||||
{
|
||||
$module = file_get_contents(__DIR__ . '/../CC100Hardware/module.php');
|
||||
$form = file_get_contents(__DIR__ . '/../CC100Hardware/form.json');
|
||||
|
||||
self::assertNotFalse($module);
|
||||
self::assertNotFalse($form);
|
||||
foreach ([
|
||||
'DigitalInputPath',
|
||||
'DigitalOutputPath',
|
||||
'AI1Path',
|
||||
'AI2Path',
|
||||
'AO1ValuePath',
|
||||
'AO2ValuePath',
|
||||
'PT1Path',
|
||||
'PT2Path',
|
||||
] as $property) {
|
||||
self::assertStringContainsString($property, $module);
|
||||
self::assertStringContainsString($property, $form);
|
||||
}
|
||||
self::assertStringContainsString('Abfrageintervall', $form);
|
||||
self::assertStringContainsString("RegisterTimer(\n 'PollChannels'", $module);
|
||||
}
|
||||
|
||||
public function testOutputsAreOnlyWrittenByExplicitActions(): void
|
||||
{
|
||||
$module = file_get_contents(__DIR__ . '/../CC100Hardware/module.php');
|
||||
self::assertNotFalse($module);
|
||||
|
||||
$applyStart = strpos($module, 'public function ApplyChanges');
|
||||
$actionStart = strpos($module, 'public function RequestAction');
|
||||
self::assertNotFalse($applyStart);
|
||||
self::assertNotFalse($actionStart);
|
||||
self::assertStringNotContainsString(
|
||||
'writeFile(',
|
||||
substr($module, $applyStart, $actionStart - $applyStart)
|
||||
);
|
||||
self::assertStringNotContainsString('TryWriteFile', $module);
|
||||
self::assertStringNotContainsString('usleep(', $module);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user