I asked for them since day 1. Actually, day -200.

Anyhow, if you have more tests, please put them in.

--
Tom.

On 22/04/14 14:58, Carsten Haitzler (The Rasterman) wrote:
> On Tue, 22 Apr 2014 14:44:02 +0100 Tom Hacohen <[email protected]> said:
>
> i was just looking for these... so i ended up making my own! :(
>
>> Yay, finally. :)
>>
>> On 22/04/14 08:21, Daniel Zaoui wrote:
>>> jackdanielz pushed a commit to branch master.
>>>
>>> http://git.enlightenment.org/core/efl.git/commit/?id=d95a114db7ef950fe2ded3ea9b36cad1a621e294
>>>
>>> commit d95a114db7ef950fe2ded3ea9b36cad1a621e294
>>> Author: Daniel Zaoui <[email protected]>
>>> Date:   Mon Apr 21 09:36:44 2014 +0300
>>>
>>>       Eolian: infras for tests + first test
>>> ---
>>>    src/Makefile_Eolian.am                |  28 +++++
>>>    src/tests/eolian/data/class_simple.eo |  31 +++++
>>>    src/tests/eolian/eolian_suite.c       | 206 
>>> ++++++++++++++++++++++++++++++
>>> ++++ src/tests/eolian/eolian_suite.h       |  10 ++
>>>    4 files changed, 275 insertions(+)
>>>
>>> diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am
>>> index 6807557..326727c 100644
>>> --- a/src/Makefile_Eolian.am
>>> +++ b/src/Makefile_Eolian.am
>>> @@ -55,3 +55,31 @@ am__v_RAGEL_0 = @echo "  RAGEL   " $@;
>>>
>>>    lib/eolian/eo_lexer.c: lib/eolian/eo_lexer.rl
>>>    endif
>>> +
>>> +### Unit tests
>>> +
>>> +if EFL_ENABLE_TESTS
>>> +check_PROGRAMS += \
>>> +tests/eolian/eolian_suite
>>> +
>>> +tests_eolian_eolian_suite_SOURCES = \
>>> +tests/eolian/eolian_suite.c \
>>> +tests/eolian/eolian_suite.h
>>> +
>>> +tests_eolian_eolian_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
>>> +-DTESTS_BUILD_DIR=\"$(top_builddir)/src/tests/eolian\" \
>>> +-DPACKAGE_DATA_DIR=\"$(top_srcdir)/src/tests/eolian\" \
>>> +@CHECK_CFLAGS@ \
>>> +@EOLIAN_CFLAGS@
>>> +TESTS += tests/eolian/eolian_suite
>>> +
>>> +tests_eolian_eolian_suite_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@
>>> +tests_eolian_eolian_suite_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@
>>> +
>>> +eoliandatafilesdir = $(datadir)/eolian/data
>>> +eoliandatafiles_DATA = tests/eolian/data/class_simple.eo
>>> +
>>> +endif
>>> +
>>> +EXTRA_DIST += \
>>> +tests/eolian/data/class_simple.eo
>>> diff --git a/src/tests/eolian/data/class_simple.eo
>>> b/src/tests/eolian/data/class_simple.eo new file mode 100644
>>> index 0000000..3abbc3b
>>> --- /dev/null
>>> +++ b/src/tests/eolian/data/class_simple.eo
>>> @@ -0,0 +1,31 @@
>>> +class Simple {
>>> +   /*@ Class Desc Simple */
>>> +   legacy_prefix: evas_object_simple;
>>> +   eo_prefix: evas_obj_simple;
>>> +   data: Evas_Simple_Data;
>>> +   properties {
>>> +      a {
>>> +         set {
>>> +            /*@
>>> +            comment a::set */
>>> +            return Eina_Bool (EINA_TRUE);
>>> +         }
>>> +         get {
>>> +         }
>>> +         values {
>>> +            int value; /*@ Value description */
>>> +         }
>>> +      }
>>> +   }
>>> +   methods {
>>> +      foo {
>>> +         /*@ comment foo */
>>> +         params {
>>> +            @in int a; /*@ a */
>>> +            @inout char *b;
>>> +            @out double c;
>>> +         }
>>> +         return char *(NULL);
>>> +      }
>>> +   }
>>> +};
>>> diff --git a/src/tests/eolian/eolian_suite.c
>>> b/src/tests/eolian/eolian_suite.c new file mode 100644
>>> index 0000000..7534e57
>>> --- /dev/null
>>> +++ b/src/tests/eolian/eolian_suite.c
>>> @@ -0,0 +1,206 @@
>>> +#ifdef HAVE_CONFIG_H
>>> +# include <config.h>
>>> +#endif
>>> +
>>> +#include <stdlib.h>
>>> +#include <stdio.h>
>>> +
>>> +#include "Eolian.h"
>>> +#include "eolian_suite.h"
>>> +
>>> +typedef struct _Eolian_Test_Case Eolian_Test_Case;
>>> +
>>> +struct _Eolian_Test_Case
>>> +{
>>> +   const char *test_case;
>>> +   void      (*build)(TCase *tc);
>>> +};
>>> +
>>> +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)); +
>>> +   /* 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);
>>> +   /* Function 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_type_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"));
>>> +
>>> +   /* 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);
>>> +}
>>> +
>>> +static const Eolian_Test_Case etc[] = {
>>> +  { "Eolian Parsing", eolian_parsing_test},
>>> +  { NULL, NULL }
>>> +};
>>> +
>>> +static void
>>> +_list_tests(void)
>>> +{
>>> +  const Eolian_Test_Case *itr;
>>> +
>>> +   itr = etc;
>>> +   fputs("Available Test Cases:\n", stderr);
>>> +   for (; itr->test_case; itr++)
>>> +     fprintf(stderr, "\t%s\n", itr->test_case);
>>> +}
>>> +
>>> +static Eina_Bool
>>> +_use_test(int argc, const char **argv, const char *test_case)
>>> +{
>>> +   if (argc < 1)
>>> +     return 1;
>>> +
>>> +   for (; argc > 0; argc--, argv++)
>>> +     if (strcmp(test_case, *argv) == 0)
>>> +       return 1;
>>> +   return 0;
>>> +}
>>> +
>>> +static Suite *
>>> +eolian_suite_build(int argc, const char **argv)
>>> +{
>>> +   TCase *tc;
>>> +   Suite *s;
>>> +   int i;
>>> +
>>> +   s = suite_create("Eolian");
>>> +
>>> +   for (i = 0; etc[i].test_case; ++i)
>>> +     {
>>> +   if (!_use_test(argc, argv, etc[i].test_case)) continue;
>>> +   tc = tcase_create(etc[i].test_case);
>>> +
>>> +   etc[i].build(tc);
>>> +
>>> +   suite_add_tcase(s, tc);
>>> +   tcase_set_timeout(tc, 0);
>>> +     }
>>> +
>>> +   return s;
>>> +}
>>> +
>>> +int
>>> +main(int argc, char **argv)
>>> +{
>>> +   Suite *s;
>>> +   SRunner *sr;
>>> +   int i, failed_count;
>>> +   eolian_init();
>>> +   setenv("CK_FORK", "no", 0);
>>> +
>>> +   for (i = 1; i < argc; i++)
>>> +     if ((strcmp(argv[i], "-h") == 0) ||
>>> +    (strcmp(argv[i], "--help") == 0))
>>> +       {
>>> +     fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
>>> +             argv[0]);
>>> +     _list_tests();
>>> +     return 0;
>>> +       }
>>> +     else if ((strcmp(argv[i], "-l") == 0) ||
>>> +         (strcmp(argv[i], "--list") == 0))
>>> +       {
>>> +     _list_tests();
>>> +     return 0;
>>> +       }
>>> +
>>> +   putenv("EFL_RUN_IN_TREE=1");
>>> +
>>> +   s = eolian_suite_build(argc - 1, (const char **)argv + 1);
>>> +   sr = srunner_create(s);
>>> +
>>> +   srunner_set_xml(sr, TESTS_BUILD_DIR "/check-results.xml");
>>> +
>>> +   srunner_run_all(sr, CK_ENV);
>>> +   failed_count = srunner_ntests_failed(sr);
>>> +   srunner_free(sr);
>>> +
>>> +   eolian_shutdown();
>>> +
>>> +   return (failed_count == 0) ? 0 : 255;
>>> +}
>>> diff --git a/src/tests/eolian/eolian_suite.h
>>> b/src/tests/eolian/eolian_suite.h new file mode 100644
>>> index 0000000..210b301
>>> --- /dev/null
>>> +++ b/src/tests/eolian/eolian_suite.h
>>> @@ -0,0 +1,10 @@
>>> +#ifndef _EOLIAN_SUITE_H
>>> +#define _EOLIAN_SUITE_H
>>> +
>>> +#include <check.h>
>>> +
>>> +void eolian_test_init(TCase *tc);
>>> +void eolian_test_general(TCase *tc);
>>> +
>>> +#endif /* _EOLIAN_SUITE_H */
>>> +
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Start Your Social Network Today - Download eXo Platform
>> Build your Enterprise Intranet with eXo Platform Software
>> Java Based Open Source Intranet - Social, Extensible, Cloud Ready
>> Get Started Now And Turn Your Intranet Into A Collaboration Platform
>> http://p.sf.net/sfu/ExoPlatform
>> _______________________________________________
>> enlightenment-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>
>


------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to