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..e6148fe --- /dev/null +++ b/test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp @@ -0,0 +1,72 @@ +#include "test/framework/catch.hpp" +#include "src/shellmatta_opt.c" +#include + + +TEST_CASE( "shellmatta_opt peekNextHunk next char without space" ) { + + char ret = 0; + shellmatta_instance_t inst; + char *dummyData = (char*) "Welcome... to Jurassic Park."; + 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' ); +} + +TEST_CASE( "shellmatta_opt peekNextHunk next char with space" ) { + + char ret = 0; + shellmatta_instance_t inst; + char *dummyData = (char*) "Welcome... to Jurassic Park.\0"; + char buffer[1024u]; + memcpy(buffer, dummyData, strlen(dummyData)); + inst.buffer = buffer; + inst.bufferSize = sizeof(buffer); + inst.inputCount = 28u; + + inst.optionParser.nextOffset = 13u; + + ret = peekNextHunk(&inst); + CHECK( ret == 'J' ); +} + +TEST_CASE( "shellmatta_opt peekNextHunk next hunk escape and space" ) { + + 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]; + uint16_t stringsize = 77u; + memcpy(buffer, dummyData, stringsize); + inst.buffer = buffer; + inst.bufferSize = sizeof(buffer); + inst.inputCount = stringsize; + + inst.optionParser.nextOffset = 28u; + ret = peekNextHunk(&inst); + CHECK( ret == 'R' ); +} + +TEST_CASE( "shellmatta_opt peekNextHunk next char with spaces" ) { + + 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]; + uint16_t stringsize = 77u; + memcpy(buffer, dummyData, stringsize); + inst.buffer = buffer; + inst.bufferSize = sizeof(buffer); + inst.inputCount = stringsize; + + inst.optionParser.nextOffset = 36u; + ret = peekNextHunk(&inst); + CHECK( ret == 'm' ); +} \ No newline at end of file