Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/bin/tests/config Modified Files: ewl_config_test.c Log Message: - add the ability to remove keys from the ewl_config =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/bin/tests/config/ewl_config_test.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_config_test.c 14 Dec 2007 17:19:37 -0000 1.2 +++ ewl_config_test.c 20 Mar 2008 02:25:18 -0000 1.3 @@ -19,6 +19,8 @@ static int float_overwrite(char *buf, int len); static int color_overwrite(char *buf, int len); +static int remove_key(char *buf, int len); + /* * This set of tests is targeted at config @@ -33,6 +35,7 @@ {"int overwrite", int_overwrite, NULL, -1, 0}, {"float overwrite", float_overwrite, NULL, -1, 0}, {"color overwrite", color_overwrite, NULL, -1, 0}, + {"remove key", remove_key, NULL, -1, 0}, {NULL, NULL, NULL, -1, 0} }; @@ -359,4 +362,129 @@ return ret; } + +/* + * Remove items from the hashes + * + * Note, this test case accesses widget internals. Don't do this in your + * code. It's just the best way to do the tests. Again, don't do what I'm + * doing. + */ +static int +remove_key(char *buf, int len) +{ + int ret = 1; + Ewl_Config *cfg; + + cfg = ewl_config_new("unit test"); + + cfg->data.system = ecore_hash_new(ecore_str_hash, ecore_str_compare); + ecore_hash_free_key_cb_set(cfg->data.system, free); + ecore_hash_free_value_cb_set(cfg->data.system, free); + ecore_hash_set(cfg->data.system, strdup("/test/key"), strdup("value")); + ecore_hash_set(cfg->data.system, strdup("/system/remove"), strdup("value")); + ecore_hash_set(cfg->data.system, strdup("/user/remove"), strdup("value")); + ecore_hash_set(cfg->data.system, strdup("/instance/remove"), strdup("value")); + + cfg->data.user = ecore_hash_new(ecore_str_hash, ecore_str_compare); + ecore_hash_free_key_cb_set(cfg->data.user, free); + ecore_hash_free_value_cb_set(cfg->data.user, free); + ecore_hash_set(cfg->data.user, strdup("/test/key"), strdup("value")); + ecore_hash_set(cfg->data.user, strdup("/system/remove"), strdup("value")); + ecore_hash_set(cfg->data.user, strdup("/user/remove"), strdup("value")); + ecore_hash_set(cfg->data.user, strdup("/instance/remove"), strdup("value")); + + cfg->data.instance = ecore_hash_new(ecore_str_hash, ecore_str_compare); + ecore_hash_free_key_cb_set(cfg->data.instance, free); + ecore_hash_free_value_cb_set(cfg->data.instance, free); + ecore_hash_set(cfg->data.instance, strdup("/test/key"), strdup("value")); + ecore_hash_set(cfg->data.instance, strdup("/system/remove"), strdup("value")); + ecore_hash_set(cfg->data.instance, strdup("/user/remove"), strdup("value")); + ecore_hash_set(cfg->data.instance, strdup("/instance/remove"), strdup("value")); + + ewl_config_key_remove(cfg, "/test/key"); + if (ecore_hash_get(cfg->data.system, "/test/key") != NULL) + { + LOG_FAILURE(buf, len, "System hash contains key after key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.user, "/test/key") != NULL) + { + LOG_FAILURE(buf, len, "User hash contains key after key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.instance, "/test/key") != NULL) + { + LOG_FAILURE(buf, len, "Instance hash contains key after key remove"); + ret = 0; + goto EXIT; + } + + ewl_config_system_key_remove(cfg, "/system/remove"); + if (ecore_hash_get(cfg->data.system, "/system/remove") != NULL) + { + LOG_FAILURE(buf, len, "System hash contains key after system key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.user, "/system/remove") == NULL) + { + LOG_FAILURE(buf, len, "User hash missing key after system key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.instance, "/system/remove") == NULL) + { + LOG_FAILURE(buf, len, "Instance hash missing key after system key remove"); + ret = 0; + goto EXIT; + } + + ewl_config_user_key_remove(cfg, "/user/remove"); + if (ecore_hash_get(cfg->data.system, "/user/remove") == NULL) + { + LOG_FAILURE(buf, len, "System hash missing key after user key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.user, "/user/remove") != NULL) + { + LOG_FAILURE(buf, len, "User hash contains key after user key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.instance, "/user/remove") == NULL) + { + LOG_FAILURE(buf, len, "Instance hash missing key after user key remove"); + ret = 0; + goto EXIT; + } + + ewl_config_instance_key_remove(cfg, "/instance/remove"); + if (ecore_hash_get(cfg->data.system, "/instance/remove") == NULL) + { + LOG_FAILURE(buf, len, "System hash missing key after instance key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.user, "/instance/remove") == NULL) + { + LOG_FAILURE(buf, len, "User hash missing key after instance key remove"); + ret = 0; + goto EXIT; + } + else if (ecore_hash_get(cfg->data.instance, "/instance/remove") != NULL) + { + LOG_FAILURE(buf, len, "Instance hash contains key after instance key remove"); + ret = 0; + goto EXIT; + } + +EXIT: + ewl_config_destroy(cfg); + return ret; +} + ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs