From d3476bf77891547506f77c00d707e7b57b69aa35 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Tue, 28 Oct 2014 15:55:02 +0100 Subject: [PATCH] tests/elocation: Add elocation test suite. Not covering all cases yet but still a good start. --- src/Makefile_Elocation.am | 21 +++ src/tests/elocation/elocation_suite.c | 251 ++++++++++++++++++++++++++ 2 files changed, 272 insertions(+) create mode 100644 src/tests/elocation/elocation_suite.c diff --git a/src/Makefile_Elocation.am b/src/Makefile_Elocation.am index 0fc5b696ed..4314725220 100644 --- a/src/Makefile_Elocation.am +++ b/src/Makefile_Elocation.am @@ -14,3 +14,24 @@ lib_elocation_libelocation_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @ELOCATIO lib_elocation_libelocation_la_LIBADD = @ELOCATION_LIBS@ lib_elocation_libelocation_la_DEPENDENCIES = @ELOCATION_INTERNAL_LIBS@ lib_elocation_libelocation_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ + +### Unit tests + +if EFL_ENABLE_TESTS + +check_PROGRAMS += tests/elocation/elocation_suite +TESTS += tests/elocation/elocation_suite + +tests_elocation_elocation_suite_SOURCES = \ +tests/elocation/elocation_suite.c + +tests_elocation_elocation_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ +-DTESTS_WD=\"`pwd`\" \ +-DTESTS_SRC_DIR=\"$(top_srcdir)/src/tests/elocation\" \ +-DTESTS_BUILD_DIR=\"$(top_builddir)/src/tests/elocation\" \ +@CHECK_CFLAGS@ \ +@ELOCATION_CFLAGS@ +tests_elocation_elocation_suite_LDADD = @CHECK_LIBS@ @USE_ELOCATION_LIBS@ +tests_elocation_elocation_suite_DEPENDENCIES = @USE_ELOCATION_INTERNAL_LIBS@ + +endif diff --git a/src/tests/elocation/elocation_suite.c b/src/tests/elocation/elocation_suite.c new file mode 100644 index 0000000000..c049bd1749 --- /dev/null +++ b/src/tests/elocation/elocation_suite.c @@ -0,0 +1,251 @@ +#ifdef HAVE_CONFIG_H +# include +#endif /* ifdef HAVE_CONFIG_H */ + +#include +#include + +#include + +#include + +#include + +/* Test the init and shutdown pathes only. Good to do that as we don't set up + * other things and already triggered problems with this. + */ +START_TEST(elocation_test_init) +{ + Eina_Bool ret; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic address object testing. Creating and freeing the object */ +START_TEST(elocation_test_address_object) +{ + Eina_Bool ret; + Elocation_Address *address = NULL; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + address = elocation_address_new(); + fail_if(address == NULL); + + elocation_address_free(address); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic position object testing. Creating and freeing the object */ +START_TEST(elocation_test_position_object) +{ + Eina_Bool ret; + Elocation_Position *position = NULL; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + position = elocation_position_new(); + fail_if(position == NULL); + + elocation_position_free(position); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic testing for the various functions of the GeoCode API */ +START_TEST(elocation_test_api_geocode) +{ + Eina_Bool ret; + Elocation_Position *position = NULL; + Elocation_Address *address = NULL; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + position = elocation_position_new(); + fail_if(position == NULL); + + address = elocation_address_new(); + fail_if(address == NULL); + + ret = elocation_freeform_address_to_position("London", position); + fail_if(ret != EINA_TRUE); + + position->latitude = 51.7522; + position->longitude = -1.25596; + position->accur->level = 3; + ret = elocation_position_to_address(position, address); + fail_if(ret != EINA_TRUE); + + address->locality = strdup("Cambridge"); + address->countrycode = strdup("UK"); + ret = elocation_address_to_position(address, position); + fail_if(ret != EINA_TRUE); + + elocation_position_free(position); + elocation_address_free(address); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic testing for position API */ +START_TEST(elocation_test_api_position) +{ + Eina_Bool ret; + Elocation_Position *position = NULL; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + position = elocation_position_new(); + fail_if(position == NULL); + + ret = elocation_position_get(position); + fail_if(ret != EINA_TRUE); + + elocation_position_free(position); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic testing for address API */ +START_TEST(elocation_test_api_address) +{ + Eina_Bool ret; + Elocation_Address *address = NULL; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + address = elocation_address_new(); + fail_if(address == NULL); + + ret = elocation_address_get(address); + fail_if(ret != EINA_TRUE); + + elocation_address_free(address); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +/* Basic testing for status API */ +START_TEST(elocation_test_api_status) +{ + Eina_Bool ret; + int status = 0; + + ret = ecore_init(); + fail_if(ret != EINA_TRUE); + ret = eldbus_init(); + fail_if(ret != EINA_TRUE); + ret = elocation_init(); + fail_if(ret != EINA_TRUE); + + ret = elocation_status_get(&status); + fail_if(ret != EINA_TRUE); + + elocation_shutdown(); + eldbus_shutdown(); + ecore_shutdown(); +} +END_TEST + +Suite * +elocation_suite(void) +{ + Suite *s; + TCase *tc; + + s = suite_create("Elocation"); + + tc = tcase_create("Elocation_Init"); + tcase_add_test(tc, elocation_test_init); + suite_add_tcase(s, tc); + + tc = tcase_create("Elocation_Objects"); + tcase_add_test(tc, elocation_test_address_object); + tcase_add_test(tc, elocation_test_position_object); + suite_add_tcase(s, tc); + + tc = tcase_create("Elocation_API_Geocode"); + tcase_add_test(tc, elocation_test_api_geocode); + suite_add_tcase(s, tc); + + tc = tcase_create("Elocation_API_Position"); + tcase_add_test(tc, elocation_test_api_position); + suite_add_tcase(s, tc); + + tc = tcase_create("Elocation_API_Address"); + tcase_add_test(tc, elocation_test_api_address); + suite_add_tcase(s, tc); + + tc = tcase_create("Elocation_API_Status"); + tcase_add_test(tc, elocation_test_api_status); + suite_add_tcase(s, tc); + + return s; +} + +int +main(void) +{ + Suite *s; + SRunner *sr; + int failed_count; + + s = elocation_suite(); + sr = srunner_create(s); + srunner_run_all(sr, CK_ENV); + failed_count = srunner_ntests_failed(sr); + srunner_free(sr); + + return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +}