diff options
author | Akira TAGOH <akira@tagoh.org> | 2007-10-22 15:14:55 +0000 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2007-10-22 15:14:55 +0000 |
commit | 18c0114661d1c1c75130f7a56441fc33047d622c (patch) | |
tree | 812b31d57a4900852951c462cba7679e1a006736 | |
parent | f401fb2fcc1e4ea157523063b558b8889bd70592 (diff) |
* tests/hgarray.c: more test cases.
-rw-r--r-- | tests/hgarray.c | 230 |
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 |