Add unittest for otp_peekNextHunk

This commit is contained in:
S.Hentges 2020-10-31 15:16:16 +01:00
parent ca293841e8
commit e495346d44
2 changed files with 48 additions and 0 deletions

View File

@ -23,6 +23,7 @@ INCLUDES := api .
UNITTEST_SOURCES := test/unittest/test_main.cpp \
test/unittest/shellmatta_opt/test_opt_findNextHunk.cpp \
test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp \
test/unittest/shellmatta_utils/test_utils_writeEcho.cpp \
test/unittest/shellmatta_utils/test_utils_shellItoa.cpp \
test/unittest/shellmatta_utils/test_utils_saveCursorPos.cpp \

View File

@ -0,0 +1,47 @@
#include "test/framework/catch.hpp"
#include "src/shellmatta_opt.c"
#include <string.h>
TEST_CASE( "shellmatta_opt peekNextHunk" ) {
char ret = 0;
shellmatta_instance_t inst;
char *dummyData = (char*) "Welcome... to Jurassic Park.\0 Remind me to thank John for a lovely weekend.";
char buffer[1024u];
memcpy(buffer, dummyData, strlen(dummyData));
inst.buffer = buffer;
inst.bufferSize = sizeof(buffer);
inst.inputCount = 28u;
inst.optionParser.nextOffset = 11u;
ret = peekNextHunk(&inst);
CHECK( ret == 't' );
inst.optionParser.nextOffset = 13u;
ret = peekNextHunk(&inst);
CHECK( ret == 'J' );
inst.optionParser.nextOffset = 22u;
ret = peekNextHunk(&inst);
CHECK( ret == 'P' );
inst.optionParser.nextOffset = 23u;
ret = peekNextHunk(&inst);
CHECK( ret == 'P' );
//Copy whole string including escape sequence
inst.inputCount = 77u;
memcpy(buffer, dummyData, 77u);
//Check for combination of \0 and space
inst.optionParser.nextOffset = 28u;
ret = peekNextHunk(&inst);
CHECK( ret == 'R' );
//Check for two spaces in a Row
inst.optionParser.nextOffset = 36u;
ret = peekNextHunk(&inst);
CHECK( ret == 'm' );
}