eive-obsw/gomspace/libutil/include/gs/util/test/command.h

81 lines
3.0 KiB
C

#ifndef GS_UTIL_TEST_COMMAND_H
#define GS_UTIL_TEST_COMMAND_H
/* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */
/**
@file
Command Test framework.
Provides a simple way of unit-testing/validating commands.
*/
#include <gs/util/gosh/command.h>
#include <gs/util/test/cmocka.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
Validate command execution.
Runs a commands and validates the output/results agains the inputs.
Asserts if the results does not match.
@param[in] cmd command (including arguments) to execute.
@param[in] ret expected return code from the command execution framework.
@param[in] cmd_ret expected return code from the commands handler. This is only validated if (ret = GS_OK).
@param[in] std_in string with expected command input.
@param[in] std_out string with expected command output. Wildcards (*\/?) are supported.
@param[in] file string with file name.
@param[in] line string with line no.
@return void
*/
void _gs_assert_command_validate(const char *cmd, gs_error_t ret, gs_error_t cmd_ret, const char *std_in, const char *std_out, const char * const file, const int line);
/**
Validate command results returned from last command execution.
Asserts if the results does not match.
@param[in] no the result no to verify.
@param[in] group string with expected group id. Wildcards (*\/?) are supported.
@param[in] key string with expected key. Wildcards (*\/?) are supported.
@param[in] value string with expected value. Wildcards (*\/?) are supported.
@param[in] file string with file name.
@param[in] line string with line no.
@return void
*/
void _gs_assert_command_validate_last_result(unsigned int no, const char *group, const char *key, const char *value, const char * const file, const int line);
/**
Validate command execution.
Runs a commands and validates the output/results agains the inputs.
Asserts if the results does not match.
@param[in] cmd command (including arguments) to execute.
@param[in] ret expected return code from the command execution framework.
@param[in] cmd_ret expected return code from the commands handler. This is only validated if (ret = GS_OK).
@param[in] std_in string with expected command input.
@param[in] std_out string with expected command output. Wildcards (*\/?) are supported.
@return void
*/
#define GS_ASSERT_COMMAND(cmd,ret,cmd_ret,std_in,std_out) _gs_assert_command_validate(cmd,ret,cmd_ret,std_in,std_out, __FILE__, __LINE__);
/**
Validate command results returned from last command execution.
Asserts if the results does not match.
@param[in] no the result no to verify.
@param[in] group string with expected group id. Wildcards (*\/?) are supported.
@param[in] key string with expected key. Wildcards (*\/?) are supported.
@param[in] value string with expected value. Wildcards (*\/?) are supported.
@return void
*/
#define GS_ASSERT_COMMAND_RESULT(no,group,key,value) _gs_assert_command_validate_last_result(no,group,key,value, __FILE__, __LINE__);
#ifdef __cplusplus
}
#endif
#endif