summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyuan Choi <ryuan.choi@gmail.com>2013-11-19 13:18:02 +0000
committerTom Hacohen <tom@stosb.com>2013-11-19 13:18:02 +0000
commit640f687383f5c6d928b562eb323937d3bd07f1ad (patch)
treeb66ed7bf2783ed5c1f07dd3052926bda9a07d152
parent8419f51ab8928e919d1d58c0690811f0ace132cb (diff)
downloadelementary-640f687383f5c6d928b562eb323937d3bd07f1ad.tar.gz
Introduce check for unit testing framework of Elementary
Reviewers: seoz, tasn CC: tasn, cedric Differential Revision: https://phab.enlightenment.org/D91
-rw-r--r--.gitignore1
-rw-r--r--configure.ac18
-rw-r--r--src/Makefile.am4
-rw-r--r--src/tests/.gitignore5
-rw-r--r--src/tests/Makefile.am37
-rw-r--r--src/tests/elm_suite.c59
-rw-r--r--src/tests/elm_suite.h9
-rw-r--r--src/tests/elm_test_check.c56
-rw-r--r--src/tests/elm_test_init.c18
9 files changed, 207 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index abdbd65fc..8a3caf14e 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 3358d6e1e..7188d394c 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 abaa75d7d..b6dda4e5e 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 000000000..4a2ff4da7
--- /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 000000000..49fc645ac
--- /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 000000000..d3c09236c
--- /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 000000000..ec13e38b2
--- /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 000000000..5c3eb2d08
--- /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 000000000..3e3210c9f
--- /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);
+}