/* * Copyright (c) 2019 Stefan Strobel * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ /** * @file test_integration_opt.cpp * @brief integration test implementation for the option parser of the shellmatta * @author Stefan Strobel */ #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 parseOpts(shellmatta_handle_t handle, const char *arguments, uint32_t length) { (void) arguments; (void) length; char option; char *argumentString; uint32_t argumentLength; while(SHELLMATTA_OK == shellmatta_opt(handle, (char*)"abcde:f::", &option, &argumentString, &argumentLength)) { switch(option) { case 'a': break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; case 'f': break; default: break; } } return SHELLMATTA_OK; } shellmatta_cmd_t parseOptsCmd = {(char*)"parseOpts", (char*)"opt", NULL, NULL, parseOpts, NULL}; static shellmatta_retCode_t empty(shellmatta_handle_t handle, const char *arguments, uint32_t length) { shellmatta_printf(handle, "empty - %s - length: %u", arguments, length); return SHELLMATTA_OK; } shellmatta_cmd_t emptyCmd = {(char*)"empty", NULL, NULL, NULL, empty, NULL}; TEST_CASE( "shellmatta option parser 1" ) { shellmatta_instance_t inst; shellmatta_handle_t handle; char buffer[1024]; char historyBuffer[1024]; //char *dummyData = (char*)"\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, (char*)"parseOpts -a -e meow\r", 1); // CHECK( write_length == 14u); // REQUIRE( strcmp(dummyData, write_data) == 0); REQUIRE( 1 == 1 ); }