svn update: 48958 (latest:48959)
[framework/uifw/ecore.git] / src / tests / ecore_suite.c
1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include <stdlib.h>
6 #include <stdio.h>
7
8 #include <Ecore.h>
9
10 #include "ecore_suite.h"
11
12 typedef struct _Ecore_Test_Case Ecore_Test_Case;
13
14 struct _Ecore_Test_Case
15 {
16    const char *test_case;
17    void      (*build)(TCase *tc);
18 };
19
20 static const Ecore_Test_Case etc[] = {
21   { "Ecore", ecore_test_ecore },
22   { "Ecore_Con", ecore_test_ecore_con },
23   { NULL, NULL }
24 };
25
26 static void
27 _list_tests(void)
28 {
29   const Ecore_Test_Case *itr;
30
31    itr = etc;
32    fputs("Available Test Cases:\n", stderr);
33    for (; itr->test_case != NULL; itr++)
34      fprintf(stderr, "\t%s\n", itr->test_case);
35 }
36 static Eina_Bool
37 _use_test(int argc, const char **argv, const char *test_case)
38 {
39    if (argc < 1)
40      return 1;
41
42    for (; argc > 0; argc--, argv++)
43      if (strcmp(test_case, *argv) == 0)
44        return 1;
45    return 0;
46 }
47
48 static Suite *
49 ecore_suite_build(int argc, const char **argv)
50 {
51    TCase *tc;
52    Suite *s;
53    int i;
54
55    s = suite_create("Ecore");
56
57    for (i = 0; etc[i].test_case != NULL; ++i)
58      {
59         if (!_use_test(argc, argv, etc[i].test_case)) continue;
60         tc = tcase_create(etc[i].test_case);
61
62         etc[i].build(tc);
63
64         suite_add_tcase(s, tc);
65         tcase_set_timeout(tc, 0);
66      }
67
68    return s;
69 }
70
71 int
72 main(int argc, char **argv)
73 {
74    Suite *s;
75    SRunner *sr;
76    int i, failed_count;
77
78    for (i = 1; i < argc; i++)
79      if ((strcmp(argv[i], "-h") == 0) ||
80          (strcmp(argv[i], "--help") == 0))
81        {
82           fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
83                   argv[0]);
84           _list_tests();
85           return 0;
86        }
87      else if ((strcmp(argv[i], "-l") == 0) ||
88               (strcmp(argv[i], "--list") == 0))
89        {
90           _list_tests();
91           return 0;
92        }
93
94    s = ecore_suite_build(argc - 1, (const char **)argv + 1);
95    sr = srunner_create(s);
96
97    srunner_run_all(sr, CK_NORMAL);
98    failed_count = srunner_ntests_failed(sr);
99    srunner_free(sr);
100
101    return (failed_count == 0) ? 0 : 255;
102 }