shellmatta/test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp

47 lines
1.2 KiB
C++
Raw Normal View History

2020-10-31 15:16:16 +01:00
#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' );
}