added first working option parser for short options
This commit is contained in:
162
test/unittest/shellmatta_opt/test_opt_findNextHunk.cpp
Normal file
162
test/unittest/shellmatta_opt/test_opt_findNextHunk.cpp
Normal file
@@ -0,0 +1,162 @@
|
||||
#include "test/framework/catch.hpp"
|
||||
#include "src/shellmatta_opt.c"
|
||||
#include <string.h>
|
||||
|
||||
|
||||
TEST_CASE( "shellmatta_opt findNextHunk easy" ) {
|
||||
|
||||
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
||||
shellmatta_instance_t inst;
|
||||
char *dummyData = (char*) "This is Sparta";
|
||||
char buffer[1024u];
|
||||
|
||||
memcpy(buffer, dummyData, strlen(dummyData));
|
||||
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = sizeof(buffer);
|
||||
inst.inputCount = 14;
|
||||
inst.optionParser.nextOffset = 4u;
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 5u);
|
||||
CHECK( inst.optionParser.len == 2u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 8u);
|
||||
CHECK( inst.optionParser.len == 6u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
REQUIRE( ret == SHELLMATTA_ERROR );
|
||||
}
|
||||
|
||||
TEST_CASE( "shellmatta_opt findNextHunk quotation 1" ) {
|
||||
|
||||
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
||||
shellmatta_instance_t inst;
|
||||
char *dummyData = (char*) "This is Sparta \"argument with spaces\"";
|
||||
char buffer[1024u];
|
||||
|
||||
memcpy(buffer, dummyData, strlen(dummyData));
|
||||
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = sizeof(buffer);
|
||||
inst.inputCount = strlen(dummyData);
|
||||
inst.optionParser.nextOffset = 4u;
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 5u);
|
||||
CHECK( inst.optionParser.len == 2u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 8u);
|
||||
CHECK( inst.optionParser.len == 6u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 15u);
|
||||
CHECK( inst.optionParser.len == 20u);
|
||||
CHECK( 0 == memcmp(&(inst.buffer[inst.optionParser.offset]), "argument with spaces", 20));
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
REQUIRE( ret == SHELLMATTA_ERROR );
|
||||
}
|
||||
|
||||
TEST_CASE( "shellmatta_opt findNextHunk quotation 2" ) {
|
||||
|
||||
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
||||
shellmatta_instance_t inst;
|
||||
char *dummyData = (char*) "This is Sparta 'argument with spaces'";
|
||||
char buffer[1024u];
|
||||
|
||||
memcpy(buffer, dummyData, strlen(dummyData));
|
||||
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = sizeof(buffer);
|
||||
inst.inputCount = strlen(dummyData);
|
||||
inst.optionParser.nextOffset = 4u;
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 5u);
|
||||
CHECK( inst.optionParser.len == 2u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 8u);
|
||||
CHECK( inst.optionParser.len == 6u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 15u);
|
||||
CHECK( inst.optionParser.len == 20u);
|
||||
CHECK( 0 == memcmp(&(inst.buffer[inst.optionParser.offset]), "argument with spaces", 20));
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
REQUIRE( ret == SHELLMATTA_ERROR );
|
||||
}
|
||||
|
||||
TEST_CASE( "shellmatta_opt findNextHunk quotation escaped" ) {
|
||||
|
||||
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
||||
shellmatta_instance_t inst;
|
||||
char *dummyData = (char*) "This is Sparta \"argument with \\\"spaces\"";
|
||||
char buffer[1024u];
|
||||
|
||||
memcpy(buffer, dummyData, strlen(dummyData));
|
||||
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = sizeof(buffer);
|
||||
inst.inputCount = strlen(dummyData);
|
||||
inst.optionParser.nextOffset = 4u;
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 5u);
|
||||
CHECK( inst.optionParser.len == 2u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 8u);
|
||||
CHECK( inst.optionParser.len == 6u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 15u);
|
||||
CHECK( inst.optionParser.len == 21u);
|
||||
CHECK( 0 == memcmp(&(inst.buffer[inst.optionParser.offset]), "argument with \"spaces", 21));
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
REQUIRE( ret == SHELLMATTA_ERROR );
|
||||
}
|
||||
|
||||
TEST_CASE( "shellmatta_opt findNextHunk quotation missing closing quotation" ) {
|
||||
|
||||
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
||||
shellmatta_instance_t inst;
|
||||
char *dummyData = (char*) "This is Sparta \"argument with \\\"spaces";
|
||||
char buffer[1024u];
|
||||
|
||||
memcpy(buffer, dummyData, strlen(dummyData));
|
||||
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = sizeof(buffer);
|
||||
inst.inputCount = strlen(dummyData);
|
||||
inst.optionParser.nextOffset = 4u;
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 5u);
|
||||
CHECK( inst.optionParser.len == 2u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
CHECK( ret == SHELLMATTA_OK );
|
||||
CHECK( inst.optionParser.offset == 8u);
|
||||
CHECK( inst.optionParser.len == 6u);
|
||||
|
||||
ret = findNextHunk(&inst);
|
||||
REQUIRE( ret == SHELLMATTA_ERROR );
|
||||
}
|
@@ -19,6 +19,7 @@ TEST_CASE( "shellmatta_insertChars normal call" ) {
|
||||
shellmatta_instance_t inst;
|
||||
char buffer[20] = "abcdefghij\0\0\0\0\0\0\0\0\0";
|
||||
|
||||
memset(&inst, 0, sizeof(inst));
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = 20;
|
||||
inst.cursor = 8;
|
||||
@@ -45,6 +46,7 @@ TEST_CASE( "shellmatta_insertChars overwrite" ) {
|
||||
shellmatta_instance_t inst;
|
||||
char buffer[20] = "abcdefghij\0\0\0\0\0\0\0\0\0";
|
||||
|
||||
memset(&inst, 0, sizeof(inst));
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = 20;
|
||||
inst.cursor = 8;
|
||||
@@ -72,6 +74,7 @@ TEST_CASE( "shellmatta_insertChars append" ) {
|
||||
shellmatta_instance_t inst;
|
||||
char buffer[20] = "abcdefghij\0\0\0\0\0\0\0\0\0";
|
||||
|
||||
memset(&inst, 0, sizeof(inst));
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = 20;
|
||||
inst.cursor = 10;
|
||||
@@ -99,6 +102,7 @@ TEST_CASE( "shellmatta_insertChars 0 length" ) {
|
||||
shellmatta_instance_t inst;
|
||||
char buffer[20] = "abcdefghij\0\0\0\0\0\0\0\0\0";
|
||||
|
||||
memset(&inst, 0, sizeof(inst));
|
||||
inst.buffer = buffer;
|
||||
inst.bufferSize = 20;
|
||||
inst.cursor = 8;
|
||||
|
Reference in New Issue
Block a user