Introduce check for unit testing framework of Elementary

Reviewers: seoz, tasn

CC: tasn, cedric

Differential Revision: https://phab.enlightenment.org/D91
This commit is contained in:
Ryuan Choi 2013-11-19 13:18:02 +00:00 committed by Tom Hacohen
parent 7ee18e17f0
commit c2f2c2101d
9 changed files with 207 additions and 0 deletions

View File

@ -38,6 +38,7 @@ elementary-*-doc.tar.bz2
/ltmain.sh
/missing
/stamp-h1
/test-driver
core
cscope.*
tags

View File

@ -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

View File

@ -8,3 +8,7 @@ SUBDIRS += modules edje_externals
endif
SUBDIRS += examples
if ENABLE_ELEMENTARY_TESTS
SUBDIRS += tests
endif

View File

@ -0,0 +1,5 @@
/elm_suite
/check-results.xml
/elm_suite.log
/elm_suite.trs
/test-suite.log

View File

@ -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@

View File

@ -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;
}

View File

@ -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 */

View File

@ -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);
}

View File

@ -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);
}