summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira TAGOH <akira@tagoh.org>2007-10-22 15:14:55 +0000
committerAkira TAGOH <akira@tagoh.org>2007-10-22 15:14:55 +0000
commit18c0114661d1c1c75130f7a56441fc33047d622c (patch)
tree812b31d57a4900852951c462cba7679e1a006736
parentf401fb2fcc1e4ea157523063b558b8889bd70592 (diff)
* tests/hgarray.c: more test cases.
-rw-r--r--tests/hgarray.c230
1 files changed, 228 insertions, 2 deletions
diff --git a/tests/hgarray.c b/tests/hgarray.c
index d839481..0809415 100644
--- a/tests/hgarray.c
+++ b/tests/hgarray.c
@@ -168,6 +168,7 @@ TDEF (hg_object_array_get)
obj3 = hg_object_array_get(vm, obj, 0);
fail_unless(obj3 != NULL, "Failed to get an object from the array");
fail_unless(hg_object_compare(obj2, obj3), "Failed to get an expected object from the array");
+ fail_unless(obj2 != obj3, "Object has to be new one");
hg_object_free(vm, obj);
hg_object_free(vm, obj2);
@@ -194,13 +195,238 @@ TEND
TDEF (hg_object_array_get_const)
{
- g_print("FIXME: %s\n", __FUNCTION__);
+ hg_object_t *obj2, *obj3;
+ gboolean retval;
+
+ obj = hg_object_array_new(vm, 10);
+ TNUL (obj);
+
+ obj2 = hg_object_boolean_new(vm, TRUE);
+ TNUL (obj2);
+
+ retval = hg_object_array_put(vm, obj, obj2, 0);
+ fail_unless(retval == TRUE, "Failed to put an object to the array");
+
+ obj3 = hg_object_array_get_const(obj, 0);
+ fail_unless(obj3 != NULL, "Failed to get an object from the array");
+ fail_unless(hg_object_compare(obj2, obj3), "Failed to get an expected object from the array");
+ fail_unless(obj2 == obj3, "Object has to be the same");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj2);
+
+ obj = hg_object_array_new(vm, 10);
+ TNUL (obj);
+
+ obj2 = hg_object_array_new(vm, 5);
+ TNUL (obj2);
+
+ retval = hg_object_array_put(vm, obj, obj2, 0);
+ fail_unless(retval == TRUE, "Failed to put an object to the array");
+
+ obj3 = hg_object_array_get_const(obj, 0);
+ fail_unless(obj3 != NULL, "Failed to get an object from the array");
+ fail_unless(hg_object_compare(obj2, obj3), "Failed to get an expected object from the array");
+ fail_unless(obj2 == obj3, "Have to return the same object for the complex object");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj2);
}
TEND
TDEF (hg_object_array_compare)
{
- g_print("FIXME: %s\n", __FUNCTION__);
+ hg_object_t *obj_, *obj1, *obj1_, *obj2, *obj2_;
+ gboolean r, r_;
+
+ obj = hg_object_array_new(vm, 2);
+ obj_ = hg_object_array_new(vm, 2);
+
+ TNUL (obj);
+ TNUL (obj_);
+
+ obj1 = hg_object_boolean_new(vm, TRUE);
+ obj1_ = hg_object_boolean_new(vm, TRUE);
+
+ TNUL (obj1);
+ TNUL (obj1_);
+
+ obj2 = hg_object_integer_new(vm, 10);
+ obj2_ = hg_object_integer_new(vm, 10);
+
+ TNUL (obj2);
+ TNUL (obj2_);
+
+ r = hg_object_array_put(vm, obj, obj1, 0);
+ r_ = hg_object_array_put(vm, obj_, obj1_, 0);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ r = hg_object_array_put(vm, obj, obj2, 1);
+ r_ = hg_object_array_put(vm, obj_, obj2_, 1);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ fail_unless(hg_object_array_compare(obj, obj_), "Failed to compare the objects");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj_);
+ hg_object_free(vm, obj1);
+ hg_object_free(vm, obj1_);
+ hg_object_free(vm, obj2);
+ hg_object_free(vm, obj2_);
+
+ /* check failing pattern */
+ obj = hg_object_array_new(vm, 2);
+ obj_ = hg_object_array_new(vm, 2);
+
+ TNUL (obj);
+ TNUL (obj_);
+
+ obj1 = hg_object_boolean_new(vm, TRUE);
+ obj1_ = hg_object_boolean_new(vm, TRUE);
+
+ TNUL (obj1);
+ TNUL (obj1_);
+
+ obj2 = hg_object_integer_new(vm, 10);
+ obj2_ = hg_object_integer_new(vm, 1);
+
+ TNUL (obj2);
+ TNUL (obj2_);
+
+ r = hg_object_array_put(vm, obj, obj1, 0);
+ r_ = hg_object_array_put(vm, obj_, obj1_, 0);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ r = hg_object_array_put(vm, obj, obj2, 1);
+ r_ = hg_object_array_put(vm, obj_, obj2_, 1);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ fail_unless(!hg_object_array_compare(obj, obj_), "Failed to compare the objects");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj_);
+ hg_object_free(vm, obj1);
+ hg_object_free(vm, obj1_);
+ hg_object_free(vm, obj2);
+ hg_object_free(vm, obj2_);
+
+ /* check with the complex object */
+ obj = hg_object_array_new(vm, 2);
+ obj_ = hg_object_array_new(vm, 2);
+
+ TNUL (obj);
+ TNUL (obj_);
+
+ obj1 = hg_object_boolean_new(vm, TRUE);
+ obj1_ = hg_object_boolean_new(vm, TRUE);
+
+ TNUL (obj1);
+ TNUL (obj1_);
+
+ obj2 = hg_object_array_new(vm, 0);
+ obj2_ = hg_object_array_new(vm, 0);
+
+ TNUL (obj2);
+ TNUL (obj2_);
+
+ r = hg_object_array_put(vm, obj, obj1, 0);
+ r_ = hg_object_array_put(vm, obj_, obj1_, 0);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ r = hg_object_array_put(vm, obj, obj2, 1);
+ r_ = hg_object_array_put(vm, obj_, obj2_, 1);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ fail_unless(hg_object_array_compare(obj, obj_), "Failed to compare the objects");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj_);
+ hg_object_free(vm, obj1);
+ hg_object_free(vm, obj1_);
+ hg_object_free(vm, obj2);
+ hg_object_free(vm, obj2_);
+
+ /* check the circular reference */
+ obj = hg_object_array_new(vm, 2);
+ obj_ = hg_object_array_new(vm, 2);
+
+ TNUL (obj);
+ TNUL (obj_);
+
+ obj1 = hg_object_boolean_new(vm, TRUE);
+ obj1_ = hg_object_boolean_new(vm, TRUE);
+
+ TNUL (obj1);
+ TNUL (obj1_);
+
+ obj2 = obj;
+ obj2_ = obj_;
+
+ r = hg_object_array_put(vm, obj, obj1, 0);
+ r_ = hg_object_array_put(vm, obj_, obj1_, 0);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ r = hg_object_array_put(vm, obj, obj2, 1);
+ r_ = hg_object_array_put(vm, obj_, obj2_, 1);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ fail_unless(hg_object_array_compare(obj, obj_), "Failed to compare the objects");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj_);
+ hg_object_free(vm, obj1);
+ hg_object_free(vm, obj1_);
+
+ /* check the circular reference (failing pattern) */
+ obj = hg_object_array_new(vm, 2);
+ obj_ = hg_object_array_new(vm, 2);
+
+ TNUL (obj);
+ TNUL (obj_);
+
+ obj1 = hg_object_boolean_new(vm, TRUE);
+ obj1_ = hg_object_boolean_new(vm, FALSE);
+
+ TNUL (obj1);
+ TNUL (obj1_);
+
+ obj2 = obj;
+ obj2_ = obj_;
+
+ r = hg_object_array_put(vm, obj, obj1, 0);
+ r_ = hg_object_array_put(vm, obj_, obj1_, 0);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ r = hg_object_array_put(vm, obj, obj2, 1);
+ r_ = hg_object_array_put(vm, obj_, obj2_, 1);
+
+ fail_unless(r, "Failed to put an object to the array");
+ fail_unless(r_, "Failed to put an object to the array");
+
+ fail_unless(!hg_object_array_compare(obj, obj_), "Failed to compare the objects");
+
+ hg_object_free(vm, obj);
+ hg_object_free(vm, obj_);
+ hg_object_free(vm, obj1);
+ hg_object_free(vm, obj1_);
}
TEND