Imported Upstream version 1.7.1
[platform/upstream/edje.git] / src / tests / edje_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 <Edje.h>
9
10 #include "edje_suite.h"
11
12 typedef struct _Edje_Test_Case Edje_Test_Case;
13
14 struct _Edje_Test_Case
15 {
16    const char *test_case;
17    void      (*build)(TCase *tc);
18 };
19
20 static const Edje_Test_Case etc[] = {
21   { "Edje", edje_test_edje },
22   { NULL, NULL }
23 };
24
25 static void
26 _list_tests(void)
27 {
28   const Edje_Test_Case *itr;
29
30    itr = etc;
31    fputs("Available Test Cases:\n", stderr);
32    for (; itr->test_case; itr++)
33      fprintf(stderr, "\t%s\n", itr->test_case);
34 }
35 static Eina_Bool
36 _use_test(int argc, const char **argv, const char *test_case)
37 {
38    if (argc < 1)
39      return 1;
40
41    for (; argc > 0; argc--, argv++)
42      if (strcmp(test_case, *argv) == 0)
43        return 1;
44    return 0;
45 }
46
47 static Suite *
48 edje_suite_build(int argc, const char **argv)
49 {
50    TCase *tc;
51    Suite *s;
52    int i;
53
54    s = suite_create("Edje");
55
56    for (i = 0; etc[i].test_case; ++i)
57      {
58         if (!_use_test(argc, argv, etc[i].test_case)) continue;
59         tc = tcase_create(etc[i].test_case);
60
61         etc[i].build(tc);
62
63         suite_add_tcase(s, tc);
64         tcase_set_timeout(tc, 0);
65      }
66
67    return s;
68 }
69
70 int
71 main(int argc, char **argv)
72 {
73    Suite *s;
74    SRunner *sr;
75    int i, failed_count;
76
77    for (i = 1; i < argc; i++)
78      if ((strcmp(argv[i], "-h") == 0) ||
79          (strcmp(argv[i], "--help") == 0))
80        {
81           fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
82                   argv[0]);
83           _list_tests();
84           return 0;
85        }
86      else if ((strcmp(argv[i], "-l") == 0) ||
87               (strcmp(argv[i], "--list") == 0))
88        {
89           _list_tests();
90           return 0;
91        }
92
93    s = edje_suite_build(argc - 1, (const char **)argv + 1);
94    sr = srunner_create(s);
95
96    srunner_run_all(sr, CK_ENV);
97    failed_count = srunner_ntests_failed(sr);
98    srunner_free(sr);
99
100    return (failed_count == 0) ? 0 : 255;
101 }