vars: added more module tests.

This commit is contained in:
Martin Preuss
2024-05-09 23:08:44 +02:00
parent 403392a72e
commit 36e9909060

View File

@@ -22,6 +22,12 @@
*/ */
static int GWENHYWFAR_CB test1(GWEN_TEST_MODULE *mod); static int GWENHYWFAR_CB test1(GWEN_TEST_MODULE *mod);
static int GWENHYWFAR_CB test2(GWEN_TEST_MODULE *mod);
static int GWENHYWFAR_CB test3(GWEN_TEST_MODULE *mod);
static int _checkSingleVariableWithSingleStringValue(AQH_VARS *vtRoot, const char *var, const char *value);
static int _checkSingleVariableWithTwoStringValues(AQH_VARS *vtRoot, const char *var, const char *value1, const char *value2);
static AQH_VARS *_checkSingleVariable(AQH_VARS *vtRoot, const char *var);
@@ -37,17 +43,17 @@ int AQH_Vars_AddTests(GWEN_TEST_MODULE *mod)
newMod=GWEN_Test_Module_AddModule(mod, "AQH_Vars", NULL); newMod=GWEN_Test_Module_AddModule(mod, "AQH_Vars", NULL);
GWEN_Test_Module_AddTest(newMod, "test 1: setCharValue", test1, NULL); GWEN_Test_Module_AddTest(newMod, "test 1: setCharValue", test1, NULL);
GWEN_Test_Module_AddTest(newMod, "test 2: setCharValue twice - overwrite vars", test2, NULL);
GWEN_Test_Module_AddTest(newMod, "test 3: setCharValue twice - don't overwrite vars", test3, NULL);
return 0; return 0;
} }
int test1(GWEN_UNUSED GWEN_TEST_MODULE *mod) int GWENHYWFAR_CB test1(GWEN_UNUSED GWEN_TEST_MODULE *mod)
{ {
AQH_VARS *vtRoot; AQH_VARS *vtRoot;
AQH_VARS *vtVar;
AQH_VARS *vtValue;
int rv; int rv;
vtRoot=AQH_Vars_CreateGroup("Root"); vtRoot=AQH_Vars_CreateGroup("Root");
@@ -57,53 +63,85 @@ int test1(GWEN_UNUSED GWEN_TEST_MODULE *mod)
return rv; return rv;
} }
vtVar=AQH_Vars_Tree2_GetFirstChild(vtRoot); rv=_checkSingleVariableWithSingleStringValue(vtRoot, "var1", "value1");
if (vtVar==NULL) { if (rv<0) {
DBG_ERROR(AQH_LOGDOMAIN, "No variable"); DBG_INFO(AQH_LOGDOMAIN, "here (%d)", rv);
AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC;
}
AQH_Vars_free(vtRoot);
return 0;
}
int GWENHYWFAR_CB test2(GWEN_UNUSED GWEN_TEST_MODULE *mod)
{
AQH_VARS *vtRoot;
int rv;
vtRoot=AQH_Vars_CreateGroup("Root");
rv=AQH_Vars_SetCharValue(vtRoot, 0, "var1", "value1");
if (rv<0) {
DBG_ERROR(AQH_LOGDOMAIN, "here (%d)", rv);
return rv;
}
rv=_checkSingleVariableWithSingleStringValue(vtRoot, "var1", "value1");
if (rv<0) {
DBG_INFO(AQH_LOGDOMAIN, "here (%d)", rv);
AQH_Vars_free(vtRoot); AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC; return GWEN_ERROR_GENERIC;
} }
if (AQH_Vars_Tree2_GetNext(vtVar)) { rv=AQH_Vars_SetCharValue(vtRoot, AQH_VARS_PATHFLAGS_OVERWRITE_VARS, "var1", "value2");
DBG_ERROR(AQH_LOGDOMAIN, "More than one child"); if (rv<0) {
DBG_ERROR(AQH_LOGDOMAIN, "here (%d)", rv);
return rv;
}
rv=_checkSingleVariableWithSingleStringValue(vtRoot, "var1", "value2");
if (rv<0) {
DBG_INFO(AQH_LOGDOMAIN, "here (%d)", rv);
AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC;
}
AQH_Vars_free(vtRoot);
return 0;
}
int GWENHYWFAR_CB test3(GWEN_UNUSED GWEN_TEST_MODULE *mod)
{
AQH_VARS *vtRoot;
int rv;
vtRoot=AQH_Vars_CreateGroup("Root");
rv=AQH_Vars_SetCharValue(vtRoot, 0, "var1", "firstValue");
if (rv<0) {
DBG_ERROR(AQH_LOGDOMAIN, "here (%d)", rv);
return rv;
}
rv=_checkSingleVariableWithSingleStringValue(vtRoot, "var1", "firstValue");
if (rv<0) {
DBG_INFO(AQH_LOGDOMAIN, "here (%d)", rv);
AQH_Vars_free(vtRoot); AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC; return GWEN_ERROR_GENERIC;
} }
if (vtVar->dataType!=AQH_Vars_DataType_Variable) { rv=AQH_Vars_SetCharValue(vtRoot, 0, "var1", "secondValue");
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not a variable"); if (rv<0) {
DBG_ERROR(AQH_LOGDOMAIN, "here (%d)", rv);
AQH_Vars_free(vtRoot); AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC; return rv;
} }
if (!(vtVar->data.dataString && -1!=strcasecmp(vtVar->data.dataString, "var1"))) { rv=_checkSingleVariableWithTwoStringValues(vtRoot, "var1", "firstValue", "secondValue");
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not the variable we set"); if (rv<0) {
AQH_Vars_free(vtRoot); DBG_ERROR(AQH_LOGDOMAIN, "here (%d)", rv);
return GWEN_ERROR_GENERIC;
}
vtValue=AQH_Vars_Tree2_GetFirstChild(vtVar);
if (vtValue==NULL) {
DBG_ERROR(AQH_LOGDOMAIN, "No value");
AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC;
}
if (AQH_Vars_Tree2_GetNext(vtValue)) {
DBG_ERROR(AQH_LOGDOMAIN, "More than one value");
AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC;
}
if (vtValue->dataType!=AQH_Vars_DataType_ValueString) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not a string value");
AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC;
}
if (!(vtValue->data.dataString && -1!=strcasecmp(vtValue->data.dataString, "value1"))) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of variable node is not the value we set");
AQH_Vars_free(vtRoot); AQH_Vars_free(vtRoot);
return GWEN_ERROR_GENERIC; return GWEN_ERROR_GENERIC;
} }
@@ -115,6 +153,123 @@ int test1(GWEN_UNUSED GWEN_TEST_MODULE *mod)
int _checkSingleVariableWithSingleStringValue(AQH_VARS *vtRoot, const char *var, const char *value)
{
AQH_VARS *vtVar;
AQH_VARS *vtValue;
vtVar=_checkSingleVariable(vtRoot, var);
if (vtVar==NULL) {
DBG_INFO(AQH_LOGDOMAIN, "here");
return GWEN_ERROR_GENERIC;
}
vtValue=AQH_Vars_Tree2_GetFirstChild(vtVar);
if (vtValue==NULL) {
DBG_ERROR(AQH_LOGDOMAIN, "No value");
return GWEN_ERROR_GENERIC;
}
if (AQH_Vars_Tree2_GetNext(vtValue)) {
DBG_ERROR(AQH_LOGDOMAIN, "More than one value");
return GWEN_ERROR_GENERIC;
}
if (vtValue->dataType!=AQH_Vars_DataType_ValueString) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not a string value");
return GWEN_ERROR_GENERIC;
}
if (!(vtValue->data.dataString && -1!=strcasecmp(vtValue->data.dataString, value))) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of variable node is not the value we set");
return GWEN_ERROR_GENERIC;
}
return 0;
}
int _checkSingleVariableWithTwoStringValues(AQH_VARS *vtRoot, const char *var, const char *value1, const char *value2)
{
AQH_VARS *vtVar;
AQH_VARS *vtValue;
vtVar=_checkSingleVariable(vtRoot, var);
if (vtVar==NULL) {
DBG_INFO(AQH_LOGDOMAIN, "here");
return GWEN_ERROR_GENERIC;
}
vtValue=AQH_Vars_Tree2_GetFirstChild(vtVar);
if (vtValue==NULL) {
DBG_ERROR(AQH_LOGDOMAIN, "No value");
return GWEN_ERROR_GENERIC;
}
if (vtValue->dataType!=AQH_Vars_DataType_ValueString) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not a string value");
return GWEN_ERROR_GENERIC;
}
if (!(vtValue->data.dataString && -1!=strcasecmp(vtValue->data.dataString, value1))) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of variable node is not the value we set");
return GWEN_ERROR_GENERIC;
}
vtValue=AQH_Vars_Tree2_GetNext(vtValue);
if (vtValue==NULL) {
DBG_ERROR(AQH_LOGDOMAIN, "Only one value");
return GWEN_ERROR_GENERIC;
}
if (vtValue->dataType!=AQH_Vars_DataType_ValueString) {
DBG_ERROR(AQH_LOGDOMAIN, "Second child of var node is not a string value");
return GWEN_ERROR_GENERIC;
}
if (!(vtValue->data.dataString && -1!=strcasecmp(vtValue->data.dataString, value2))) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of variable node is not the value we set");
return GWEN_ERROR_GENERIC;
}
return 0;
}
AQH_VARS *_checkSingleVariable(AQH_VARS *vtRoot, const char *var)
{
AQH_VARS *vtVar;
vtVar=AQH_Vars_Tree2_GetFirstChild(vtRoot);
if (vtVar==NULL) {
DBG_ERROR(AQH_LOGDOMAIN, "No variable");
return NULL;
}
if (AQH_Vars_Tree2_GetNext(vtVar)) {
DBG_ERROR(AQH_LOGDOMAIN, "More than one child");
return NULL;
}
if (vtVar->dataType!=AQH_Vars_DataType_Variable) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not a variable");
return NULL;
}
if (!(vtVar->data.dataString && -1!=strcasecmp(vtVar->data.dataString, var))) {
DBG_ERROR(AQH_LOGDOMAIN, "First child of root node is not the variable we set");
return NULL;
}
return vtVar;
}
#else #else
int AQH_Vars_AddTests(GWEN_TEST_MODULE *mod) int AQH_Vars_AddTests(GWEN_TEST_MODULE *mod)