From 294c932c9ef320a6831d6ce32a6b479059f420fc Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 17 Apr 2012 14:00:56 +0000 Subject: [PATCH] Eobj: Added EOBJ_BASE_DATA free function tests. SVN revision: 70270 --- legacy/eobj/tests/eobj_test_general.c | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/legacy/eobj/tests/eobj_test_general.c b/legacy/eobj/tests/eobj_test_general.c index 390cefd85b..f57bfd08a7 100644 --- a/legacy/eobj/tests/eobj_test_general.c +++ b/legacy/eobj/tests/eobj_test_general.c @@ -81,6 +81,16 @@ START_TEST(eobj_op_errors) } END_TEST +static void +_fake_free_func(void *data) +{ + if (!data) + return; + + int *a = data; + ++*a; +} + START_TEST(eobj_generic_data) { eobj_init(); @@ -113,7 +123,34 @@ START_TEST(eobj_generic_data) eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data)); fail_if(data); + int a = 0; + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func)); + eobj_do(obj, EOBJ_BASE_DATA_GET("test3", &data)); + fail_if(&a != data); + eobj_do(obj, EOBJ_BASE_DATA_GET("test3", NULL)); + eobj_do(obj, EOBJ_BASE_DATA_DEL("test3")); + fail_if(a != 1); + + a = 0; + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func)); + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", NULL, _fake_free_func)); + fail_if(a != 1); + a = 0; + data = (void *) 123; + eobj_do(obj, EOBJ_BASE_DATA_SET(NULL, &a, _fake_free_func)); + eobj_do(obj, EOBJ_BASE_DATA_GET(NULL, &data)); + fail_if(data); + eobj_do(obj, EOBJ_BASE_DATA_DEL(NULL)); + + a = 0; + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func)); + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", NULL, NULL)); + fail_if(a != 1); + eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func)); + eobj_unref(obj); + fail_if(a != 2); + eobj_shutdown(); } END_TEST