tasn pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=640f687383f5c6d928b562eb323937d3bd07f1ad

commit 640f687383f5c6d928b562eb323937d3bd07f1ad
Author: Ryuan Choi <ryuan.c...@gmail.com>
Date:   Tue Nov 19 13:18:02 2013 +0000

    Introduce check for unit testing framework of Elementary
    
    Reviewers: seoz, tasn
    
    CC: tasn, cedric
    
    Differential Revision: https://phab.enlightenment.org/D91
---
 .gitignore                 |  1 +
 configure.ac               | 18 ++++++++++++++
 src/Makefile.am            |  4 ++++
 src/tests/.gitignore       |  5 ++++
 src/tests/Makefile.am      | 37 +++++++++++++++++++++++++++++
 src/tests/elm_suite.c      | 59 ++++++++++++++++++++++++++++++++++++++++++++++
 src/tests/elm_suite.h      |  9 +++++++
 src/tests/elm_test_check.c | 56 +++++++++++++++++++++++++++++++++++++++++++
 src/tests/elm_test_init.c  | 18 ++++++++++++++
 9 files changed, 207 insertions(+)

diff --git a/.gitignore b/.gitignore
index abdbd65..8a3caf1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,7 @@ elementary-*-doc.tar.bz2
 /ltmain.sh
 /missing
 /stamp-h1
+/test-driver
 core
 cscope.*
 tags
diff --git a/configure.ac b/configure.ac
index 3358d6e..7188d39 100644
--- a/configure.ac
+++ b/configure.ac
@@ -617,6 +617,17 @@ if test "x$want_elementary_debug" = "xyes"; then
 fi
 AC_SUBST(ELM_DEBUG_DEF)
 
+AC_ARG_WITH([tests],
+   [AC_HELP_STRING([--with-tests=none|regular],
+                   [choose elementary testing method: regular or 
none.(coverage will be supported)@<:@default=none@:>@])],
+   [build_tests=${withval}],
+   [build_tests=none])
+
+if test "${build_tests}" = "regular"; then
+   PKG_CHECK_MODULES([CHECK], [check >= 0.9.5])
+fi
+AM_CONDITIONAL([ENABLE_ELEMENTARY_TESTS], [test "${build_tests}" = "regular"])
+
 ELM_ALLOCA_H_DEF="#undef"
 AC_CHECK_HEADER(alloca.h, [ELM_ALLOCA_H_DEF="#define"])
 AC_SUBST(ELM_ALLOCA_H_DEF)
@@ -714,6 +725,7 @@ src/modules/test_entry/Makefile
 src/modules/test_map/Makefile
 src/edje_externals/Makefile
 src/examples/Makefile
+src/tests/Makefile
 data/Makefile
 data/themes/Makefile
 data/images/Makefile
@@ -777,6 +789,12 @@ echo "  CPPFLAGS.................: $CPPFLAGS"
 echo "  CFLAGS...................: $CFLAGS"
 echo "  LDFLAGS..................: $LDFLAGS"
 echo
+if test "${build_tests}" = "none"; then
+echo "Tests......................: no"
+else
+echo "Tests......................: make check"
+fi
+echo
 echo "Installation...............: make install (as root if needed, with 'su' 
or 'sudo')"
 echo "  prefix...................: $prefix"
 echo
diff --git a/src/Makefile.am b/src/Makefile.am
index abaa75d..b6dda4e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -8,3 +8,7 @@ SUBDIRS += modules edje_externals
 endif
 
 SUBDIRS += examples
+
+if ENABLE_ELEMENTARY_TESTS
+SUBDIRS += tests
+endif
diff --git a/src/tests/.gitignore b/src/tests/.gitignore
new file mode 100644
index 0000000..4a2ff4d
--- /dev/null
+++ b/src/tests/.gitignore
@@ -0,0 +1,5 @@
+/elm_suite
+/check-results.xml
+/elm_suite.log
+/elm_suite.trs
+/test-suite.log
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
new file mode 100644
index 0000000..49fc645
--- /dev/null
+++ b/src/tests/Makefile.am
@@ -0,0 +1,37 @@
+AUTOMAKE_OPTIONS     = 1.4 foreign
+MAINTAINERCLEANFILES = Makefile.in
+
+TESTS = elm_suite
+check_PROGRAMS = elm_suite
+elm_suite_SOURCES = \
+       elm_suite.c \
+       elm_test_check.c \
+       elm_test_init.c
+
+elm_suite_CPPFLAGS = \
+       -DTESTS_BUILD_DIR=\"${top_builddir}/src/tests\" \
+       -I$(top_srcdir)/src/lib \
+       -I$(top_builddir)/src/lib \
+       @CHECK_CFLAGS@ \
+       @ELEMENTARY_CFLAGS@ \
+       @ELEMENTARY_X_CFLAGS@ \
+       @ELEMENTARY_FB_CFLAGS@ \
+       @ELEMENTARY_SDL_CFLAGS@ \
+       @ELEMENTARY_WIN32_CFLAGS@ \
+       @ELEMENTARY_WINCE_CFLAGS@ \
+       @ELEMENTARY_ELOCATION_CFLAGS@ \
+       @ELEMENTARY_EWEATHER_CFLAGS@ \
+       @ELEMENTARY_WEB_CFLAGS@ \
+       @ELEMENTARY_EMAP_CFLAGS@ \
+       @ELEMENTARY_WAYLAND_CFLAGS@ \
+       @EVIL_CFLAGS@
+
+elm_suite_LDADD = \
+       $(top_builddir)/src/lib/libelementary.la \
+       @CHECK_LIBS@ \
+       @ELEMENTARY_EWEATHER_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
+       @ELEMENTARY_EMAP_LIBS@ \
+       @ELEMENTARY_LIBS@ \
+       @ELEMENTARY_WEB_LIBS@ \
+       @my_libs@
diff --git a/src/tests/elm_suite.c b/src/tests/elm_suite.c
new file mode 100644
index 0000000..d3c0923
--- /dev/null
+++ b/src/tests/elm_suite.c
@@ -0,0 +1,59 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Elementary.h>
+#include "elm_suite.h"
+
+typedef struct _Elementary_Test_Case Elementary_Test_Case;
+
+struct _Elementary_Test_Case
+{
+   const char *test_case;
+   void      (*build)(TCase *tc);
+};
+
+static const Elementary_Test_Case etc[] = {
+  { "Elementary", elm_test_init },
+  { "elm_check", elm_test_check },
+  { NULL, NULL }
+};
+
+Suite *
+elm_suite()
+{
+   TCase *tc;
+   Suite *s;
+   int i;
+
+   s = suite_create("Elementary");
+
+   for (i = 0; etc[i].test_case; ++i)
+     {
+        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 __UNUSED__, char **argv __UNUSED__)
+{
+   int failed_count;
+   Suite *s;
+   SRunner *sr;
+
+   s = elm_suite();
+   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);
+
+   return (failed_count == 0) ? 0 : 255;
+}
diff --git a/src/tests/elm_suite.h b/src/tests/elm_suite.h
new file mode 100644
index 0000000..ec13e38
--- /dev/null
+++ b/src/tests/elm_suite.h
@@ -0,0 +1,9 @@
+#ifndef _ELM_SUITE_H
+#define _ELM_SUITE_H
+
+#include <check.h>
+
+void elm_test_init(TCase *tc);
+void elm_test_check(TCase *tc);
+
+#endif /* _ELM_SUITE_H */
diff --git a/src/tests/elm_test_check.c b/src/tests/elm_test_check.c
new file mode 100644
index 0000000..5c3eb2d
--- /dev/null
+++ b/src/tests/elm_test_check.c
@@ -0,0 +1,56 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Elementary.h>
+#include "elm_suite.h"
+
+START_TEST (elm_check_onoff_text)
+{
+   Evas_Object *win, *check;
+
+   elm_init(1, NULL);
+   win = elm_win_add(NULL, "check", ELM_WIN_BASIC);
+
+   check = elm_check_add(win);
+   elm_object_style_set(check, "toggle");
+   elm_object_part_text_set(check, "on", "OnText");
+   elm_object_part_text_set(check, "off", "OffText");
+
+   ck_assert_str_eq(elm_object_part_text_get(check, "on"), "OnText");
+   ck_assert_str_eq(elm_object_part_text_get(check, "off"), "OffText");
+
+   elm_object_style_set(check, "default");
+   ck_assert(elm_object_part_text_get(check, "on") == NULL);
+   ck_assert(elm_object_part_text_get(check, "off") == NULL);
+
+   elm_shutdown();
+}
+END_TEST
+
+START_TEST (elm_check_state)
+{
+   Evas_Object *win, *check;
+   Eina_Bool state = EINA_TRUE;
+
+   elm_init(1, NULL);
+   win = elm_win_add(NULL, "check", ELM_WIN_BASIC);
+
+   check = elm_check_add(win);
+   elm_check_state_pointer_set(check, &state);
+   ck_assert(elm_check_state_get(check) == EINA_TRUE);
+   ck_assert(state == EINA_TRUE);
+
+   elm_check_state_set(check, EINA_FALSE);
+   ck_assert(elm_check_state_get(check) == EINA_FALSE);
+   ck_assert(state == EINA_FALSE);
+
+   elm_shutdown();
+}
+END_TEST
+
+void elm_test_check(TCase *tc)
+{
+   tcase_add_test(tc, elm_check_onoff_text);
+   tcase_add_test(tc, elm_check_state);
+}
diff --git a/src/tests/elm_test_init.c b/src/tests/elm_test_init.c
new file mode 100644
index 0000000..3e3210c
--- /dev/null
+++ b/src/tests/elm_test_init.c
@@ -0,0 +1,18 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Elementary.h>
+#include "elm_suite.h"
+
+START_TEST (elm_main)
+{
+    ck_assert(elm_init(1, NULL) == 1);
+    ck_assert(elm_shutdown() == 0);
+}
+END_TEST
+
+void elm_test_init(TCase *tc)
+{
+   tcase_add_test(tc, elm_main);
+}

-- 


Reply via email to