#include "test/framework/catch.hpp" extern "C" { #include "shellmatta.h" } #include static uint32_t write_callCnt = 0u; static char write_data[1024]; static uint32_t write_length; static shellmatta_retCode_t writeFct(const char* data, uint32_t length) { write_callCnt ++; while((length > 0) && (write_length < sizeof(write_data))) { write_data[write_length] = *data; data ++; length --; write_length ++; } return SHELLMATTA_OK; } static shellmatta_retCode_t doSomething(shellmatta_handle_t handle, const char *arguments, uint32_t length) { return SHELLMATTA_OK; } shellmatta_cmd_t doSomethingCmd = {"doSomething", "do", "Function does something", "use me, please", doSomething, NULL}; TEST_CASE( "shellmatta empty function" ) { shellmatta_instance_t inst; shellmatta_handle_t handle; char buffer[1024]; char historyBuffer[1024]; char *dummyData = "\r\nshellmatta->"; shellmatta_doInit( &inst, &handle, buffer, sizeof(buffer), historyBuffer, sizeof(historyBuffer), "shellmatta->", NULL, writeFct); write_callCnt = 0u; memset(write_data, 0, sizeof(write_data)); write_length = 0u; shellmatta_processData(handle, "\r", 1); CHECK( write_length == 14u); REQUIRE( strcmp(dummyData, write_data) == 0); } TEST_CASE( "shellmatta help function" ) { shellmatta_instance_t inst; shellmatta_handle_t handle; char buffer[1024]; char historyBuffer[1024]; char *dummyData = "h\r\n" "doSomething do Function does something use me, please\r\n" "help h Print this help text help\r\n" "\r\nshellmatta->"; shellmatta_doInit( &inst, &handle, buffer, sizeof(buffer), historyBuffer, sizeof(historyBuffer), "shellmatta->", NULL, writeFct); shellmatta_addCmd(handle, &doSomethingCmd); write_callCnt = 0u; memset(write_data, 0, sizeof(write_data)); write_length = 0u; shellmatta_processData(handle, "h\r", 2); CHECK( write_length == 123u); CHECK( strcmp(dummyData, write_data) == 0); write_callCnt = 0u; memset(write_data, 0, sizeof(write_data)); write_length = 0u; dummyData = "h 564 321 56 465 46\r\n" "doSomething do Function does something use me, please\r\n" "help h Print this help text help\r\n" "\r\nshellmatta->"; shellmatta_processData(handle, "h 564 321 56 465 46\r", 20); CHECK( write_length == 141u); CHECK( strcmp(dummyData, write_data) == 0); write_callCnt = 0u; memset(write_data, 0, sizeof(write_data)); write_length = 0u; dummyData = "hr\r\n" "Command: hr not found" "\r\nshellmatta->"; shellmatta_processData(handle, "hr\r", 3); CHECK( write_length == 39u); REQUIRE( strcmp(dummyData, write_data) == 0); }