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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs