diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-05-21 13:56:31 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-05-26 13:56:06 +0300 |
commit | 1401ce36b6d8a40270641a5094dbf098ed6858c1 (patch) | |
tree | 6f310d805c3c1de952e9959b27a97cf9ef53e886 | |
parent | 946f845a2b92299846fa9b13610e588fde7339c7 (diff) | |
download | efl-1401ce36b6d8a40270641a5094dbf098ed6858c1.tar.gz |
Eolian/Tests: add test for overriding functions
-rw-r--r-- | src/Makefile_Eolian.am | 3 | ||||
-rw-r--r-- | src/tests/eolian/data/override.eo | 19 | ||||
-rw-r--r-- | src/tests/eolian/eolian_parsing.c | 38 |
3 files changed, 59 insertions, 1 deletions
diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index e4a189fe0f..1e44ce2cb4 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -94,5 +94,6 @@ tests/eolian/data/object_impl.eo \ tests/eolian/data/object_impl_ref.c \ tests/eolian/data/object_impl_add.eo \ tests/eolian/data/object_impl_add_ref.c \ -tests/eolian/data/consts.eo +tests/eolian/data/consts.eo \ +tests/eolian/data/override.eo diff --git a/src/tests/eolian/data/override.eo b/src/tests/eolian/data/override.eo new file mode 100644 index 0000000000..2a0033fab2 --- /dev/null +++ b/src/tests/eolian/data/override.eo @@ -0,0 +1,19 @@ +class Simple (Base) { + properties { + a { + set { + } + get { + } + } + } + methods { + foo { + } + } + implements { + Base::constructor; + virtual::a::set; + virtual::foo; + } +}; diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index 3589c88d51..7ad4baf9bd 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -9,6 +9,43 @@ #include "Eolian.h" #include "eolian_suite.h" +START_TEST(eolian_override) +{ + Eolian_Function fid = NULL; + const char *class_name = "Simple"; + const char *base_name = "Base"; + const Eina_List *impls = NULL; + const char *impl_class = NULL, *impl_func = NULL; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/override.eo")); + + /* Class */ + fail_if(!eolian_class_exists(class_name)); + + /* Base ctor */ + fail_if(!(fid = eolian_class_function_find_by_name(base_name, "constructor", EOLIAN_UNRESOLVED))); + fail_if(!eolian_function_is_virtual_pure(fid, EOLIAN_UNRESOLVED)); + fail_if(!(impls = eolian_class_implements_list_get(class_name))); + fail_if(!eolian_implement_information_get(eina_list_nth(impls, 0), &impl_class, &impl_func, NULL)); + fail_if(strcmp(impl_class, base_name)); + fail_if(strcmp(impl_func, "constructor")); + + /* Property */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); + fail_if(!eolian_function_is_virtual_pure(fid, EOLIAN_PROP_SET)); + fail_if(eolian_function_is_virtual_pure(fid, EOLIAN_PROP_GET)); + + /* Method */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); + fail_if(!eolian_function_is_virtual_pure(fid, EOLIAN_METHOD)); + + eolian_shutdown(); +} +END_TEST + START_TEST(eolian_consts) { Eolian_Function fid = NULL; @@ -305,5 +342,6 @@ void eolian_parsing_test(TCase *tc) tcase_add_test(tc, eolian_complex_type); tcase_add_test(tc, eolian_typedef); tcase_add_test(tc, eolian_consts); + tcase_add_test(tc, eolian_override); } |