From 0b5e43957fe16281ccee60ccccf064a0d4d0fec0 Mon Sep 17 00:00:00 2001 From: mquinson Date: Sun, 23 Oct 2005 11:11:39 +0000 Subject: [PATCH] Convert config module to unit testing git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1805 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/Makefile.am | 4 +- src/xbt/config.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 2 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index aa2f1d54dc..a840e16eaf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -174,8 +174,8 @@ AMOK_SRC= \ ### Testing infrastructure ### -TEST_CFILES=xbt/cunit.c xbt/ex.c -TEST_UNITS= cunit_unit.c ex_unit.c +TEST_CFILES=xbt/cunit.c xbt/ex.c xbt/config.c +TEST_UNITS= cunit_unit.c ex_unit.c config_unit.c BUILT_SOURCES=../include/surf/surfxml.h surf/surfxml.c \ gras/DataDesc/ddt_parse.yy.c \ diff --git a/src/xbt/config.c b/src/xbt/config.c index 6b791c080c..618ec710df 100644 --- a/src/xbt/config.c +++ b/src/xbt/config.c @@ -1139,3 +1139,114 @@ xbt_cfg_get_host_at(xbt_cfg_t cfg, const char *name, int pos, *port = val->port; *host = val->name; } + + +#ifdef SIMGRID_TEST +#include "xbt.h" +#include "xbt/ex.h" + +XBT_TEST_SUITE("config","Configuration support"); + +static xbt_cfg_t make_set(){ + xbt_cfg_t set=NULL; + + set = xbt_cfg_new(); + xbt_cfg_register_str(set,"speed:1_to_2_int"); + xbt_cfg_register_str(set,"hostname:1_to_1_string"); + xbt_cfg_register_str(set,"user:1_to_10_string"); + + return set; +} /* end_of_make_set */ + +XBT_TEST_UNIT("memuse",test_config_memuse,"Alloc and free a config set") { + xbt_cfg_t set=make_set(); + xbt_test_add0("Alloc and free a config set"); + xbt_cfg_set_parse(set, "hostname:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); + xbt_cfg_free(&set); + xbt_cfg_free(&set); +} + +XBT_TEST_UNIT("validation",test_config_validation,"Validation tests") { + xbt_cfg_t set = set=make_set(); + xbt_ex_t e; + + xbt_test_add0("Having too few elements for speed"); + xbt_cfg_set_parse(set, "hostname:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); + TRY { + xbt_cfg_check(set); + } CATCH(e) { + if (e.category != mismatch_error || + strncmp(e.msg,"Config elem speed needs",strlen("Config elem speed needs"))) + xbt_test_fail1("Got an exception. msg=%s",e.msg); + xbt_ex_free(e); + } + xbt_cfg_free(&set); + xbt_cfg_free(&set); + + + + xbt_test_add0("Having too much values of 'speed'"); + set=make_set(); + xbt_cfg_set_parse(set,"hostname:toto:42 user:alegrand"); + TRY { + xbt_cfg_set_parse(set,"speed:42 speed:24 speed:34"); + } CATCH(e) { + if (e.category != mismatch_error || + strncmp(e.msg,"Cannot add value 34 to the config elem speed", + strlen("Config elem speed needs"))) + xbt_test_fail1("Got an exception. msg=%s",e.msg); + xbt_ex_free(e); + } + xbt_cfg_check(set); + xbt_cfg_free(&set); + xbt_cfg_free(&set); + +} + +XBT_TEST_UNIT("use",test_config_use,"Data retrieving tests") { + xbt_cfg_t set = set=make_set(); + + + xbt_test_add0("Get a single value"); + { + /* get_single_value */ + int ival; + xbt_cfg_t myset=make_set(); + + xbt_cfg_set_parse(myset,"hostname:toto:42 speed:42"); + ival = xbt_cfg_get_int(myset,"speed"); + if (ival != 42) + xbt_test_fail1("Speed value = %d, I expected 42",ival); + xbt_cfg_free(&myset); + } + + xbt_test_add0("Get multiple values"); + { + /* get_multiple_value */ + xbt_dynar_t dyn; + xbt_cfg_t myset=make_set(); + + xbt_cfg_set_parse(myset, "hostname:veloce user:foo\nuser:bar\tuser:toto"); + xbt_cfg_set_parse(myset,"speed:42"); + xbt_cfg_check(myset); + dyn = xbt_cfg_get_dynar(myset,"user"); + + if (xbt_dynar_length(dyn) != 3) + xbt_test_fail1("Dynar length = %d, I expected 3", + (int)xbt_dynar_length(dyn)); + + if (strcmp(xbt_dynar_get_as(dyn,0,char*),"foo")) + xbt_test_fail1("Dynar[0] = %s, I expected foo", + xbt_dynar_get_as(dyn,0,char*)); + + if (strcmp(xbt_dynar_get_as(dyn,1,char*),"bar")) + xbt_test_fail1("Dynar[1] = %s, I expected bar", + xbt_dynar_get_as(dyn,1,char*)); + + if (strcmp(xbt_dynar_get_as(dyn,2,char*),"toto")) + xbt_test_fail1("Dynar[2] = %s, I expected toto", + xbt_dynar_get_as(dyn,2,char*)); + + } +} +#endif /* SIMGRID_TEST */ -- 2.20.1