diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index a9baa38155..db8ebc9b77 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -63,6 +63,7 @@ check_PROGRAMS += \ tests/eolian/eolian_suite tests_eolian_eolian_suite_SOURCES = \ +tests/eolian/eolian_parsing.c \ tests/eolian/eolian_suite.c \ tests/eolian/eolian_suite.h diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c new file mode 100644 index 0000000000..2f9afc9416 --- /dev/null +++ b/src/tests/eolian/eolian_parsing.c @@ -0,0 +1,281 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#include "Eolian.h" +#include "eolian_suite.h" + +START_TEST(eolian_ctor_dtor) +{ + const char *class_name = "Ctor_Dtor"; + 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/ctor_dtor.eo")); + + /* Class ctor/dtor */ + fail_if(!eolian_class_ctor_enable_get(class_name)); + fail_if(!eolian_class_dtor_enable_get(class_name)); + + /* Base ctor/dtor */ + fail_if(!(impls = eolian_class_implements_list_get(class_name))); + fail_if(eina_list_count(impls) != 2); + 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")); + fail_if(!eolian_implement_information_get(eina_list_nth(impls, 1), &impl_class, &impl_func, NULL)); + fail_if(strcmp(impl_class, base_name)); + fail_if(strcmp(impl_func, "destructor")); + + /* Custom ctors/dtors */ + fail_if(!eolian_class_function_find_by_name(base_name, "constructor", EOLIAN_METHOD)); + fail_if(!eolian_class_function_find_by_name(base_name, "destructor", EOLIAN_METHOD)); + fail_if(!eolian_class_function_find_by_name(class_name, "custom_constructor_1", EOLIAN_CTOR)); + fail_if(!eolian_class_function_find_by_name(class_name, "custom_constructor_2", EOLIAN_CTOR)); + + eolian_shutdown(); +} +END_TEST + +START_TEST(eolian_typedef) +{ + Eolian_Type types_list = NULL; + const char *type_name = NULL; + Eina_Bool own = EINA_FALSE; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/typedef.eo")); + + /* Check that the class Dummy is still readable */ + fail_if(!eolian_class_function_find_by_name("Dummy", "foo", EOLIAN_METHOD)); + + /* Basic type */ + fail_if(!(types_list = eolian_type_find_by_alias("Evas_Coord"))); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "int")); + fail_if(own != EINA_FALSE); + + /* Complex type */ + fail_if(!(types_list = eolian_type_find_by_alias("List_Objects"))); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_List *")); + fail_if(own != EINA_TRUE); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "Eo *")); + fail_if(own != EINA_FALSE); + + eolian_shutdown(); +} +END_TEST + +START_TEST(eolian_complex_type) +{ + Eolian_Function fid = NULL; + Eolian_Function_Parameter param = NULL; + const Eina_List *params_list = NULL; + const char *class_name = "Complex_Type"; + Eolian_Type types_list = NULL; + const char *type_name = NULL; + Eina_Bool own = EINA_FALSE; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/complex_type.eo")); + + /* Properties return type */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); + fail_if(!(types_list = eolian_function_return_types_list_get(fid, EOLIAN_PROP_SET))); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_List *")); + fail_if(own != EINA_TRUE); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_Array *")); + fail_if(own != EINA_FALSE); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "Eo **")); + fail_if(own != EINA_TRUE); + /* Properties parameter type */ + fail_if(!(params_list = eolian_parameters_list_get(fid))); + fail_if(eina_list_count(params_list) != 1); + fail_if(!(param = eina_list_nth(params_list, 0))); + fail_if(strcmp(eolian_parameter_name_get(param), "value")); + fail_if(!(types_list = eolian_parameter_types_list_get(param))); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_List *")); + fail_if(own != EINA_TRUE); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "int")); + fail_if(own != EINA_FALSE); + + /* Methods return type */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); + fail_if(!(types_list = eolian_function_return_types_list_get(fid, EOLIAN_METHOD))); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_List *")); + fail_if(own != EINA_TRUE); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "Eina_Stringshare *")); + fail_if(own != EINA_FALSE); + /* Methods parameter type */ + fail_if(!(params_list = eolian_parameters_list_get(fid))); + fail_if(eina_list_count(params_list) != 1); + fail_if(!(param = eina_list_nth(params_list, 0))); + fail_if(strcmp(eolian_parameter_name_get(param), "buf")); + fail_if(!(types_list = eolian_parameter_types_list_get(param))); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "char *")); + fail_if(own != EINA_TRUE); + + eolian_shutdown(); +} +END_TEST + +START_TEST(eolian_scope) +{ + Eolian_Function fid = NULL; + const char *class_name = "Simple"; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/scope.eo")); + + /* Property scope */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED); + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "b", EOLIAN_PROPERTY))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "c", EOLIAN_PROPERTY))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); + + /* Method scope */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "bar", EOLIAN_METHOD))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED); + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foobar", EOLIAN_METHOD))); + fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); + + eolian_shutdown(); +} +END_TEST + +START_TEST(eolian_simple_parsing) +{ + Eolian_Function fid = NULL; + const char *string = NULL, *ptype = NULL, *pname = NULL; + Eolian_Parameter_Dir dir = EOLIAN_IN_PARAM; + const char *class_name = "Simple"; + const Eina_List *list = NULL; + Eolian_Function_Parameter param = NULL; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/class_simple.eo")); + fail_if(strcmp(eolian_class_find_by_file(PACKAGE_DATA_DIR"/data/class_simple.eo"), class_name)); + fail_if(strcmp(eolian_class_file_get(class_name), PACKAGE_DATA_DIR"/data/class_simple.eo")); + + /* Class */ + fail_if(!eolian_class_exists(class_name)); + fail_if(eolian_class_type_get(class_name) != EOLIAN_CLASS_REGULAR); + string = eolian_class_description_get(class_name); + fail_if(!string); + fail_if(strcmp(string, "Class Desc Simple")); + fail_if(eolian_class_inherits_list_get(class_name) != NULL); + fail_if(strcmp(eolian_class_legacy_prefix_get(class_name), "evas_object_simple")); + fail_if(strcmp(eolian_class_eo_prefix_get(class_name), "evas_obj_simple")); + fail_if(strcmp(eolian_class_data_type_get(class_name), "Evas_Simple_Data")); + + /* Property */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); + fail_if(strcmp(eolian_function_name_get(fid), "a")); + string = eolian_function_description_get(fid, EOLIAN_COMMENT_SET); + fail_if(!string); + fail_if(strcmp(string, "comment a::set")); + string = eolian_function_description_get(fid, EOLIAN_COMMENT_GET); + fail_if(string); + /* Set return */ + string = eolian_function_return_type_get(fid, EOLIAN_PROP_SET); + fail_if(!string); + fail_if(strcmp(string, "Eina_Bool")); + string = eolian_function_return_dflt_value_get(fid, EOLIAN_PROP_SET); + fail_if(!string); + fail_if(strcmp(string, "EINA_TRUE")); + string = eolian_function_return_comment_get(fid, EOLIAN_PROP_SET); + fail_if(!string); + fail_if(strcmp(string, "comment for property set return")); + /* Get return */ + string = eolian_function_return_type_get(fid, EOLIAN_PROP_GET); + fail_if(string); + string = eolian_function_return_comment_get(fid, EOLIAN_PROP_GET); + fail_if(string); + + /* Function parameters */ + fail_if(eolian_property_keys_list_get(fid) != NULL); + fail_if(!(list = eolian_property_values_list_get(fid))); + fail_if(eina_list_count(list) != 1); + fail_if(!(param = eina_list_data_get(list))); + eolian_parameter_information_get(param, NULL, &ptype, &pname, &string); + fail_if(strcmp(ptype, "int")); + fail_if(strcmp(pname, "value")); + fail_if(strcmp(string, "Value description")); + + /* Method */ + fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); + string = eolian_function_description_get(fid, EOLIAN_COMMENT); + fail_if(!string); + fail_if(strcmp(string, "comment foo")); + /* Function return */ + string = eolian_function_return_type_get(fid, EOLIAN_METHOD); + fail_if(!string); + fail_if(strcmp(string, "char *")); + string = eolian_function_return_dflt_value_get(fid, EOLIAN_METHOD); + fail_if(!string); + fail_if(strcmp(string, "NULL")); + string = eolian_function_return_comment_get(fid, EOLIAN_METHOD); + fail_if(!string); + fail_if(strcmp(string, "comment for method return")); + + /* Function parameters */ + fail_if(!(list = eolian_parameters_list_get(fid))); + fail_if(eina_list_count(list) != 3); + fail_if(!(param = eina_list_nth(list, 0))); + eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); + fail_if(dir != EOLIAN_IN_PARAM); + fail_if(strcmp(ptype, "int")); + fail_if(strcmp(pname, "a")); + fail_if(!string || strcmp(string, "a")); + fail_if(!(param = eina_list_nth(list, 1))); + eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); + fail_if(dir != EOLIAN_INOUT_PARAM); + fail_if(strcmp(ptype, "char *")); + fail_if(strcmp(pname, "b")); + fail_if(string); + fail_if(!(param = eina_list_nth(list, 2))); + eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); + fail_if(dir != EOLIAN_OUT_PARAM); + fail_if(strcmp(ptype, "double")); + fail_if(strcmp(pname, "c")); + fail_if(string); + + eolian_shutdown(); +} +END_TEST + +void eolian_parsing_test(TCase *tc) +{ + tcase_add_test(tc, eolian_simple_parsing); + tcase_add_test(tc, eolian_ctor_dtor); + tcase_add_test(tc, eolian_scope); + tcase_add_test(tc, eolian_complex_type); + tcase_add_test(tc, eolian_typedef); +} + diff --git a/src/tests/eolian/eolian_suite.c b/src/tests/eolian/eolian_suite.c index 648bd07453..e97694086f 100644 --- a/src/tests/eolian/eolian_suite.c +++ b/src/tests/eolian/eolian_suite.c @@ -5,7 +5,7 @@ #include #include -#include "Eolian.h" +#include #include "eolian_suite.h" typedef struct _Eolian_Test_Case Eolian_Test_Case; @@ -16,276 +16,6 @@ struct _Eolian_Test_Case void (*build)(TCase *tc); }; -START_TEST(eolian_ctor_dtor) -{ - const char *class_name = "Ctor_Dtor"; - 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/ctor_dtor.eo")); - - /* Class ctor/dtor */ - fail_if(!eolian_class_ctor_enable_get(class_name)); - fail_if(!eolian_class_dtor_enable_get(class_name)); - - /* Base ctor/dtor */ - fail_if(!(impls = eolian_class_implements_list_get(class_name))); - fail_if(eina_list_count(impls) != 2); - 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")); - fail_if(!eolian_implement_information_get(eina_list_nth(impls, 1), &impl_class, &impl_func, NULL)); - fail_if(strcmp(impl_class, base_name)); - fail_if(strcmp(impl_func, "destructor")); - - /* Custom ctors/dtors */ - fail_if(!eolian_class_function_find_by_name(base_name, "constructor", EOLIAN_METHOD)); - fail_if(!eolian_class_function_find_by_name(base_name, "destructor", EOLIAN_METHOD)); - fail_if(!eolian_class_function_find_by_name(class_name, "custom_constructor_1", EOLIAN_CTOR)); - fail_if(!eolian_class_function_find_by_name(class_name, "custom_constructor_2", EOLIAN_CTOR)); - - eolian_shutdown(); -} -END_TEST - -START_TEST(eolian_typedef) -{ - Eolian_Type types_list = NULL; - const char *type_name = NULL; - Eina_Bool own = EINA_FALSE; - - eolian_init(); - /* Parsing */ - fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/typedef.eo")); - - /* Check that the class Dummy is still readable */ - fail_if(!eolian_class_function_find_by_name("Dummy", "foo", EOLIAN_METHOD)); - - /* Basic type */ - fail_if(!(types_list = eolian_type_find_by_alias("Evas_Coord"))); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "int")); - fail_if(own != EINA_FALSE); - - /* Complex type */ - fail_if(!(types_list = eolian_type_find_by_alias("List_Objects"))); - fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); - fail_if(strcmp(type_name, "Eina_List *")); - fail_if(own != EINA_TRUE); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "Eo *")); - fail_if(own != EINA_FALSE); - - eolian_shutdown(); -} -END_TEST - -START_TEST(eolian_complex_type) -{ - Eolian_Function fid = NULL; - Eolian_Function_Parameter param = NULL; - const Eina_List *params_list = NULL; - const char *class_name = "Complex_Type"; - Eolian_Type types_list = NULL; - const char *type_name = NULL; - Eina_Bool own = EINA_FALSE; - - eolian_init(); - /* Parsing */ - fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/complex_type.eo")); - - /* Properties return type */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); - fail_if(!(types_list = eolian_function_return_types_list_get(fid, EOLIAN_PROP_SET))); - fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); - fail_if(strcmp(type_name, "Eina_List *")); - fail_if(own != EINA_TRUE); - fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); - fail_if(strcmp(type_name, "Eina_Array *")); - fail_if(own != EINA_FALSE); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "Eo **")); - fail_if(own != EINA_TRUE); - /* Properties parameter type */ - fail_if(!(params_list = eolian_parameters_list_get(fid))); - fail_if(eina_list_count(params_list) != 1); - fail_if(!(param = eina_list_nth(params_list, 0))); - fail_if(strcmp(eolian_parameter_name_get(param), "value")); - fail_if(!(types_list = eolian_parameter_types_list_get(param))); - fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); - fail_if(strcmp(type_name, "Eina_List *")); - fail_if(own != EINA_TRUE); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "int")); - fail_if(own != EINA_FALSE); - - /* Methods return type */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); - fail_if(!(types_list = eolian_function_return_types_list_get(fid, EOLIAN_METHOD))); - fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); - fail_if(strcmp(type_name, "Eina_List *")); - fail_if(own != EINA_TRUE); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "Eina_Stringshare *")); - fail_if(own != EINA_FALSE); - /* Methods parameter type */ - fail_if(!(params_list = eolian_parameters_list_get(fid))); - fail_if(eina_list_count(params_list) != 1); - fail_if(!(param = eina_list_nth(params_list, 0))); - fail_if(strcmp(eolian_parameter_name_get(param), "buf")); - fail_if(!(types_list = eolian_parameter_types_list_get(param))); - fail_if(eolian_type_information_get(types_list, &type_name, &own)); - fail_if(strcmp(type_name, "char *")); - fail_if(own != EINA_TRUE); - - eolian_shutdown(); -} -END_TEST - -START_TEST(eolian_scope) -{ - Eolian_Function fid = NULL; - const char *class_name = "Simple"; - - eolian_init(); - /* Parsing */ - fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/scope.eo")); - - /* Property scope */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED); - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "b", EOLIAN_PROPERTY))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "c", EOLIAN_PROPERTY))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); - - /* Method scope */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "bar", EOLIAN_METHOD))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED); - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foobar", EOLIAN_METHOD))); - fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC); - - eolian_shutdown(); -} -END_TEST - -START_TEST(eolian_simple_parsing) -{ - Eolian_Function fid = NULL; - const char *string = NULL, *ptype = NULL, *pname = NULL; - Eolian_Parameter_Dir dir = EOLIAN_IN_PARAM; - const char *class_name = "Simple"; - const Eina_List *list = NULL; - Eolian_Function_Parameter param = NULL; - - eolian_init(); - /* Parsing */ - fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/class_simple.eo")); - fail_if(strcmp(eolian_class_find_by_file(PACKAGE_DATA_DIR"/data/class_simple.eo"), class_name)); - fail_if(strcmp(eolian_class_file_get(class_name), PACKAGE_DATA_DIR"/data/class_simple.eo")); - - /* Class */ - fail_if(!eolian_class_exists(class_name)); - fail_if(eolian_class_type_get(class_name) != EOLIAN_CLASS_REGULAR); - string = eolian_class_description_get(class_name); - fail_if(!string); - fail_if(strcmp(string, "Class Desc Simple")); - fail_if(eolian_class_inherits_list_get(class_name) != NULL); - fail_if(strcmp(eolian_class_legacy_prefix_get(class_name), "evas_object_simple")); - fail_if(strcmp(eolian_class_eo_prefix_get(class_name), "evas_obj_simple")); - fail_if(strcmp(eolian_class_data_type_get(class_name), "Evas_Simple_Data")); - - /* Property */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY))); - fail_if(strcmp(eolian_function_name_get(fid), "a")); - string = eolian_function_description_get(fid, EOLIAN_COMMENT_SET); - fail_if(!string); - fail_if(strcmp(string, "comment a::set")); - string = eolian_function_description_get(fid, EOLIAN_COMMENT_GET); - fail_if(string); - /* Set return */ - string = eolian_function_return_type_get(fid, EOLIAN_PROP_SET); - fail_if(!string); - fail_if(strcmp(string, "Eina_Bool")); - string = eolian_function_return_dflt_value_get(fid, EOLIAN_PROP_SET); - fail_if(!string); - fail_if(strcmp(string, "EINA_TRUE")); - string = eolian_function_return_comment_get(fid, EOLIAN_PROP_SET); - fail_if(!string); - fail_if(strcmp(string, "comment for property set return")); - /* Get return */ - string = eolian_function_return_type_get(fid, EOLIAN_PROP_GET); - fail_if(string); - string = eolian_function_return_comment_get(fid, EOLIAN_PROP_GET); - fail_if(string); - - /* Function parameters */ - fail_if(eolian_property_keys_list_get(fid) != NULL); - fail_if(!(list = eolian_property_values_list_get(fid))); - fail_if(eina_list_count(list) != 1); - fail_if(!(param = eina_list_data_get(list))); - eolian_parameter_information_get(param, NULL, &ptype, &pname, &string); - fail_if(strcmp(ptype, "int")); - fail_if(strcmp(pname, "value")); - fail_if(strcmp(string, "Value description")); - - /* Method */ - fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD))); - string = eolian_function_description_get(fid, EOLIAN_COMMENT); - fail_if(!string); - fail_if(strcmp(string, "comment foo")); - /* Function return */ - string = eolian_function_return_type_get(fid, EOLIAN_METHOD); - fail_if(!string); - fail_if(strcmp(string, "char *")); - string = eolian_function_return_dflt_value_get(fid, EOLIAN_METHOD); - fail_if(!string); - fail_if(strcmp(string, "NULL")); - string = eolian_function_return_comment_get(fid, EOLIAN_METHOD); - fail_if(!string); - fail_if(strcmp(string, "comment for method return")); - - /* Function parameters */ - fail_if(!(list = eolian_parameters_list_get(fid))); - fail_if(eina_list_count(list) != 3); - fail_if(!(param = eina_list_nth(list, 0))); - eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); - fail_if(dir != EOLIAN_IN_PARAM); - fail_if(strcmp(ptype, "int")); - fail_if(strcmp(pname, "a")); - fail_if(!string || strcmp(string, "a")); - fail_if(!(param = eina_list_nth(list, 1))); - eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); - fail_if(dir != EOLIAN_INOUT_PARAM); - fail_if(strcmp(ptype, "char *")); - fail_if(strcmp(pname, "b")); - fail_if(string); - fail_if(!(param = eina_list_nth(list, 2))); - eolian_parameter_information_get(param, &dir, &ptype, &pname, &string); - fail_if(dir != EOLIAN_OUT_PARAM); - fail_if(strcmp(ptype, "double")); - fail_if(strcmp(pname, "c")); - fail_if(string); - - eolian_shutdown(); -} -END_TEST - -static void eolian_parsing_test(TCase *tc) -{ - tcase_add_test(tc, eolian_simple_parsing); - tcase_add_test(tc, eolian_ctor_dtor); - tcase_add_test(tc, eolian_scope); - tcase_add_test(tc, eolian_complex_type); - tcase_add_test(tc, eolian_typedef); -} - static const Eolian_Test_Case etc[] = { { "Eolian Parsing", eolian_parsing_test}, { NULL, NULL } diff --git a/src/tests/eolian/eolian_suite.h b/src/tests/eolian/eolian_suite.h index 210b301255..fef23e1d64 100644 --- a/src/tests/eolian/eolian_suite.h +++ b/src/tests/eolian/eolian_suite.h @@ -3,8 +3,7 @@ #include -void eolian_test_init(TCase *tc); -void eolian_test_general(TCase *tc); +void eolian_parsing_test(TCase *tc); #endif /* _EOLIAN_SUITE_H */