diff --git a/makefile b/makefile index d96c36f..e47043a 100644 --- a/makefile +++ b/makefile @@ -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 \ diff --git a/test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp b/test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp new file mode 100644 index 0000000..0bded4e --- /dev/null +++ b/test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp @@ -0,0 +1,47 @@ +#include "test/framework/catch.hpp" +#include "src/shellmatta_opt.c" +#include + + +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' ); +} \ No newline at end of file