FB_TestStreamBuffer  Function Block

Extends TcUnit.FB_TestSuite

Contains tests that verify the StreamBuffer function block methods


Variables

Name Type Description
Buffer ARRAY [0..TcUnit.GVL_Param_TcUnit.XUnitBufferSize - 1] OF BYTE

Methods

Setup PRIVATE
Implementation
// Clear buffer
MEMSET(ADR(Buffer), 0, SIZEOF(Buffer));
Test_Append PRIVATE
Implementation
TEST('Test_Append');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));
Stream.Append := Str1;
Stream.Append := Str2;

// Search
TestResult := (Stream.Find(SearchString := Search, StartPos := 1) >= 0);

AssertTrue(Condition := TestResult,
           Message := 'Append failed');

TEST_FINISHED();
Test_BufferOverflow
Implementation
TEST('Test_BufferOverflow');

Setup();

Stream.SetBuffer(ADR(SmallBuffer), SIZEOF(SmallBuffer));
Stream.Append := Str1;
Stream.Append := Str2;

AssertEquals_UDINT(SMALL_BUFFER_SIZE, Stream.Length, 'Stream not at maximum length');

Cpy := Stream.Copy(StartPos := 1, EndPos := Stream.Length, CopyLen => CopyLen);

// Expected behavior: the buffer receives up to Buffer Size - 1 of string, the last byte is NULL character (termination)
AssertEquals_STRING(Expected := 'abcdefuwx',
                    Actual := Cpy,
                    Message := 'Stream was not truncated as expected');

TEST_FINISHED();
Test_BufferSize PRIVATE
Implementation
TEST('Test_BufferSize');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));

// Compare initialised buffersize with expected buffersize
AssertEquals_UDINT(Expected := GVL_Param_TcUnit.xUnitBufferSize,
                   Actual := Stream.BufferSize,
                   Message := 'BufferSize differs');

TEST_FINISHED();
Test_Clear PRIVATE
Implementation
TEST('Test_Clear');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));
Stream.Append := Str;
Stream.Clear();

AssertEquals_UDINT(Expected := 0,
                   Actual := Stream.Length, 
                   Message := 'Length differs');

TEST_FINISHED();
Test_Copy PRIVATE
Implementation
TEST('Test_Copy');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));
Stream.Append := Str1;
Stream.Append := Str2;

// Copy from 8th char 3 chars (8+3=11), should be 'qui'
Cpy := Stream.Copy(StartPos := 8, EndPos := 11, CopyLen => CopyLen);

AssertEquals_STRING(Expected := 'qui',
                    Actual := Cpy,
                    Message := 'Copy Failed');

TEST_FINISHED();
Test_CutOff PRIVATE
Implementation
TEST('Test_CutOff');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));

// Last char - 2 chars = 3 chars in total
Stream.Append := Str;
Cut := (Stream.Length - 2); 

// CutOff should contain 'ars'
CutOff := Stream.CutOff(StartPos := Cut, CutLen => Length);
Expected := Stream.Copy(StartPos := 1, EndPos := Stream.Length); 

AssertEquals_String(Expected := Expected, 
                    Actual := 'vita est dolor sic',
                    Message := 'CutOff string differs');

TEST_FINISHED();
Test_Find PRIVATE
Implementation
TEST('Test_Find');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));
Stream.Append:= Str;

// Start search at 1st char
TestResult := (Stream.Find(SearchString := Str, StartPos := 1 ) >= 0); 

AssertTrue(Condition := TestResult,
           Message := 'Find Failed');

TEST_FINISHED();
Test_Length PRIVATE
Implementation
TEST('Test_Length');

Setup();

Stream.Setbuffer(ADR(Buffer), SIZEOF(Buffer));
Stream.Append := Str;
Length := TO_UDINT(LEN(Str));

AssertEquals_UDINT(Expected := length,
                   Actual := Stream.Length,
                   Message := 'Length differs');

TEST_FINISHED();

Used by

Declaration source
// Contains tests that verify the StreamBuffer function block methods
FUNCTION_BLOCK FB_TestStreamBuffer EXTENDS TcUnit.FB_TestSuite
VAR
    Buffer: ARRAY [0..TcUnit.GVL_Param_TcUnit.XUnitBufferSize - 1] OF BYTE;
END_VAR