From 4cd64fc85a6e203d1be83fb48d4379e6f72a417b Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Thu, 7 Jun 2012 10:54:17 +0000 Subject: [PATCH] Eo: Added some hierarchy reference checks. Check that objects are freed when they should be freed. SVN revision: 71795 --- legacy/eobj/tests/eo_test_general.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/legacy/eobj/tests/eo_test_general.c b/legacy/eobj/tests/eo_test_general.c index e1d5bfafbe..12f79dd06a 100644 --- a/legacy/eobj/tests/eo_test_general.c +++ b/legacy/eobj/tests/eo_test_general.c @@ -216,10 +216,30 @@ START_TEST(eo_refs) fail_if(eo_ref_get(obj) != 1); #endif + /* Check we don't seg if there's an extra xref. */ + eo_xref(obj, obj2); + eo_unref(obj); + eo_unref(obj); eo_unref(obj2); eo_unref(obj3); + /* Check hierarchy */ + obj = eo_add(SIMPLE_CLASS, NULL); + obj2 = eo_add(SIMPLE_CLASS, obj); + + Eo *wref; + eo_do(obj2, eo_wref_add(&wref)); + fail_if(!wref); + + eo_unref(obj2); + + fail_if(!wref); /* Parent is still holding a reference. */ + + eo_unref(obj); + + fail_if(wref); + /* Just check it doesn't seg atm. */ obj = eo_add(SIMPLE_CLASS, NULL); eo_ref(obj);