178 lines
4.8 KiB
XML
178 lines
4.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TcPlcObject Version="1.1.0.1">
|
|
<POU Name="FB_HashFNV1a_32BitTest" Id="{584d6db4-3042-4682-bf3c-6924d5cfd45e}" SpecialFunc="None">
|
|
<Declaration><![CDATA[{attribute 'analysis' := '-31'}
|
|
FUNCTION_BLOCK FB_HashFNV1a_32BitTest EXTENDS TcUnit.FB_TestSuite
|
|
VAR
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[// run tests with different strings
|
|
TestHashString1();
|
|
TestHashString2();
|
|
TestHashString3();
|
|
TestHashString4();
|
|
TestHashString5();
|
|
|
|
{analysis -140}
|
|
// run test with special characters (not needed.)
|
|
// TestSpecialCharacter();]]></ST>
|
|
</Implementation>
|
|
<Method Name="TestHashString1" Id="{6848e3d2-7c66-46db-96ed-dbbf60aafca3}">
|
|
<Declaration><![CDATA[METHOD TestHashString1
|
|
VAR
|
|
// string input
|
|
_sString : STRING := 'Hallo Welt!';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#83258870;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestHashString1');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Did not return expected hash result.');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TestHashString2" Id="{d1a187f2-69ef-4d7b-9820-3422b177f90e}">
|
|
<Declaration><![CDATA[METHOD TestHashString2
|
|
VAR
|
|
// string input
|
|
_sString : STRING := 'Ich schreibe ganz ganz viele Tests....';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#D732A024;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestHashString2');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Did not return expected hash result.');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TestHashString3" Id="{73b939c5-9983-42c2-965b-e966bace91db}">
|
|
<Declaration><![CDATA[METHOD TestHashString3
|
|
VAR
|
|
// string input
|
|
_sString : STRING(255) := 'Dies soll ein ganz langer String werden. Dieses Vorgehen ist sinnvoll, damit die Grenzen der Hashfunktion getestet werden koennen. Ausserdem ist es interessant, ob Sonderzeichen wie: , , , , und ... funktionieren. Leider funktionieren diese nicht...';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#BD4EBCD2;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestHashString3');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Did not return expected hash result.');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TestHashString4" Id="{889fd548-f653-4805-824c-e896f9bf9367}">
|
|
<Declaration><![CDATA[METHOD TestHashString4
|
|
VAR
|
|
// string input
|
|
_sString : STRING := 'Hallo Welt!';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#83258870;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestHashString4');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Did not return expected hash result.');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TestHashString5" Id="{a29b8c4b-5d3e-4229-941d-f616140007f0}">
|
|
<Declaration><![CDATA[METHOD TestHashString5
|
|
VAR
|
|
// string input
|
|
_sString : STRING := 'Matthias hat dieses Programm Leistungsoptimiert!';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#D442FBA9;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestHashString5');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Did not return expected hash result.');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TestSpecialCharacter" Id="{80e59124-8e21-4287-a17c-f0f64d1dd87b}">
|
|
<Declaration><![CDATA[METHOD TestSpecialCharacter
|
|
VAR
|
|
// string input
|
|
_sString : STRING := 'äöüß';
|
|
|
|
// hash result
|
|
_udiActual : UDINT;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
// expected hash
|
|
udiExpected : UDINT := 16#2891249a;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[TEST('TestSpecialCharacter');
|
|
|
|
// run hash function
|
|
_udiActual := FC_HashFNV1a_32Bit(ADR(_sString));
|
|
|
|
// assert results
|
|
AssertEquals_UDINT(udiExpected, _udiActual, 'Handling of special charater is not possible');
|
|
|
|
TEST_FINISHED();]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
</POU>
|
|
</TcPlcObject> |