06f19b9bf7807e3984bd1ce9b5f89e6b1026c17f
[platform/core/api/maps-service.git] / test / maps_test.c
1
2 #include <glib.h>
3
4 #include "maps_test.h"
5 #include "maps_test_search_place.h"
6 #include "maps_test_search_route.h"
7 #include "maps_test_geocode.h"
8 #include "maps_test_util.h"
9
10
11 maps_service_h maps_svc = NULL;
12 maps_view_h maps_view = NULL;
13 maps_test_state_type maps_test_state = MAPS_TEST_STATE_MAIN;
14 maps_preference_h maps_pref = NULL;
15
16
17 #define PROVIDER_NAME_LEN       512
18 #define PROVIDER_KEY_LEN        1024
19
20 char g_provider_name[PROVIDER_NAME_LEN+1] = "";
21 char g_provider_key[PROVIDER_KEY_LEN+1] = "";
22
23
24 static int scanf_safety(const char *format, ...)
25 {
26         char line[256];
27         if (fgets(line, sizeof(line), stdin) == NULL)
28                 return -1;
29
30         va_list args;
31         va_start(args, format);
32         int ret = vsscanf(line, format, args);
33         va_end(args);
34
35         return ret;
36 }
37
38 int maps_test_set_configuration()
39 {
40         printf("Input provider name. [%s] : ", g_provider_name);
41         scanf_safety("%s", &g_provider_name);
42
43         printf("Input provider key. [%s] : ", g_provider_key);
44         scanf_safety("%s", &g_provider_key);
45
46         return 0;
47 }
48
49 int maps_test_create_maps_service()
50 {
51         if (maps_svc)
52                 return MAPS_ERROR_INVALID_OPERATION;
53         int ret = maps_service_create_without_user_consent(g_provider_name, &maps_svc);
54         if (ret == MAPS_ERROR_NONE) {
55                 maps_service_set_user_consent(maps_svc, true);
56                 ret = maps_service_set_provider_key(maps_svc, g_provider_key);
57         }
58         print_result(ret == MAPS_ERROR_NONE);
59         return ret;
60 }
61
62 int maps_test_destroy_maps_service()
63 {
64         int ret = maps_service_destroy(maps_svc);
65         maps_svc = NULL;
66         print_result(ret == MAPS_ERROR_NONE);
67         return ret;
68 }
69
70 static bool __maps_service_provider_info_cb(char *maps_provider, void *user_data)
71 {
72         int *number = (int*)user_data;
73         printf("%d : %s\n", ++*number, maps_provider);
74         return true;
75 }
76
77 int maps_test_show_list_of_providers()
78 {
79         int number = 0;
80         return maps_service_foreach_provider(__maps_service_provider_info_cb, &number);
81 }
82
83 void print_menu()
84 {
85         printf("========================================\n");
86         printf(" Maps Native API Tester\n");
87         printf("----------------------------------------\n");
88         printf("  a\t - Show list of Providers\n");
89         printf("  b\t - Set configuration\n");
90         printf("  c\t - Create Maps service\n");
91         printf("  d\t - Destroy Maps service\n");
92         printf("----------------------------------------\n");
93         printf("  1\t - Search Place\n");
94         printf("  2\t - Search Place By Address\n");
95         printf("  3\t - Search Place By Area\n");
96         printf("  4\t - Search Place List\n");
97         printf("  5\t - Geocode\n");
98         printf("  6\t - Reverse Geocode\n");
99         printf("  7\t - Route\n");
100         printf("----------------------------------------\n");
101         printf("  x\t - Exit\n");
102         printf("========================================\n");
103 }
104
105 int maps_test_startup()
106 {
107         print_menu();
108         return 0;
109 }
110
111 int maps_test_finish()
112 {
113         int ret = maps_test_destroy_maps_service();
114         return ret;
115 }
116
117 bool run_command(char cmd)
118 {
119         int ret = 0;
120         switch ((int)maps_test_state) {
121         case MAPS_TEST_STATE_MAIN:
122                 switch (cmd) {
123                 case 'a': ret = maps_test_show_list_of_providers(); break;
124                 case 'b': ret = maps_test_set_configuration(); break;
125                 case 'c': ret = maps_test_create_maps_service(); break;
126                 case 'd': ret = maps_test_destroy_maps_service(); break;
127
128                 case '1': ret = maps_test_search_place(maps_svc); break;
129                 case '2': ret = maps_test_search_place_by_address(maps_svc); break;
130                 case '3': ret = maps_test_search_place_by_area(maps_svc); break;
131                 case '4': ret = maps_test_search_place_list(maps_svc); break;
132                 case '5': ret = maps_test_geocode(maps_svc); break;
133                 case '6': ret = maps_test_reverse_geocode(maps_svc); break;
134                 case '7': ret = maps_test_search_route(maps_svc); break;
135
136                 case 'x': return false;
137                 case '\0': print_menu(); break;
138                 default: printf("Unknown command\n"); break;
139                 }
140                 break;
141         }
142         if (ret != 0)
143                 printf("Error = 0x%X\n", ret);
144
145         return true;
146 }
147
148 void *test_thread(void *data)
149 {
150         maps_test_startup();
151
152         while (1) {
153                 char input[256] = "";
154                 scanf_safety("%s", &input);
155                 if (run_command(input[0]) == false)
156                         break;
157         };
158
159         maps_test_finish();
160         exit(0);
161         return NULL;
162 }
163
164
165 int main(int argc, char **argv)
166 {
167         GMainLoop *mainloop;
168 #if !GLIB_CHECK_VERSION(2, 36, 0)
169         g_type_init();
170 #endif
171         mainloop = g_main_loop_new(NULL, FALSE);
172         g_thread_new("capi-maps-service-test", &test_thread, NULL);
173         g_main_loop_run(mainloop);
174
175         return 0;
176 }