tests/elocation: Add elocation test suite.
authorStefan Schmidt <s.schmidt@samsung.com>
Tue, 28 Oct 2014 14:55:02 +0000 (15:55 +0100)
committerStefan Schmidt <s.schmidt@samsung.com>
Tue, 11 Nov 2014 10:06:05 +0000 (11:06 +0100)
Not covering all cases yet but still a good start.

src/Makefile_Elocation.am
src/tests/elocation/elocation_suite.c [new file with mode: 0644]

index 0fc5b69..4314725 100644 (file)
@@ -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 (file)
index 0000000..c049bd1
--- /dev/null
@@ -0,0 +1,251 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif /* ifdef HAVE_CONFIG_H */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <Eina.h>
+
+#include <check.h>
+
+#include <Elocation.h>
+
+/* 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;
+}