10 static void *_cb_command(void *data, Efreet_Desktop *desktop, char *exec, int remaining);
14 ef_cb_desktop_parse(void)
16 Efreet_Desktop *desktop;
20 desktop = efreet_desktop_get(PKG_DATA_DIR"/test/test.desktop");
23 printf("No desktop found.\n");
27 if (!desktop->name || strcmp(desktop->name, "Efreet Test Application"))
29 printf("Invalid Name\n");
33 if (!desktop->generic_name ||
34 strcmp(desktop->generic_name, "Test Application"))
36 printf("Incorrent GenericName\n");
40 if (!desktop->exec || strcmp(desktop->exec, "efreet_test %F %i"))
42 printf("Incorrect Exec (%s)\n", (desktop->exec ? desktop->exec : "(null)"));
46 if (desktop->categories)
48 const char *categories[] = {"Test", "Enlightenment"};
50 int num_categories = 2, i = 0;
52 EINA_LIST_FOREACH(desktop->categories, l, cat)
54 if (i >= num_categories)
56 printf("Too many categories found.\n");
61 if (!cat || !categories[i] || strcmp(cat, categories[i]))
63 printf("Expected category %s, found %s\n", categories[i], cat);
71 efreet_desktop_free(desktop);
78 ef_cb_desktop_file_id(void)
80 Efreet_Desktop *desktop;
83 desktop = efreet_desktop_get(PKG_DATA_DIR"/test/test.desktop");
95 {PKG_DATA_DIR"/test/", 0, NULL, "test.desktop"},
96 {PKG_DATA_DIR"/", 0, NULL, "test-test.desktop"},
97 {PKG_DATA_DIR"/", 1, NULL, "test.desktop"},
98 {PKG_DATA_DIR"/", 1, "prefix", "prefix-test.desktop"},
102 for (i = 0; tests[i].dir != NULL; i++)
104 id = efreet_desktop_id_get(desktop,
108 if (!id || strcmp(id, tests[i].expected))
110 printf("Expecting id: %s, got: %s\n", tests[i].expected, id);
113 if (id) eina_stringshare_del(id);
124 ef_cb_desktop_save(void)
126 Efreet_Desktop *desktop;
129 desktop = efreet_desktop_get(PKG_DATA_DIR"/test/test.desktop");
132 printf("Failed to get Desktop file\n");
136 printf("save data: %d\n", efreet_desktop_save(desktop));
137 efreet_desktop_free(desktop);
139 desktop = efreet_desktop_empty_new("/tmp/test.desktop");
140 desktop->name = strdup("Efreet Test Application");
141 desktop->type = EFREET_DESKTOP_TYPE_APPLICATION;
142 desktop->generic_name = strdup("Test Application");
143 desktop->exec = strdup("efreet_test");
144 desktop->categories = NULL;
145 desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Test"));
146 desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Enlightenment"));
147 printf("save test: %d\n", efreet_desktop_save(desktop));
148 unlink("/tmp/test.desktop");
149 efreet_desktop_free(desktop);
162 ef_cb_desktop_command_get(void)
164 Efreet_Desktop *desktop;
165 Eina_List *files, *expected;
166 char olddir[PATH_MAX];
170 if (getcwd(olddir, PATH_MAX) != 0) ret = 0;
171 if (chdir("/") != 0) ret = 0;
174 desktop = efreet_desktop_empty_new("test.desktop");
176 desktop->name = strdup("App Name");
177 desktop->icon = strdup("icon.png");
180 files = eina_list_append(files, "/tmp/absolute_path");
181 files = eina_list_append(files, "relative_path");
182 files = eina_list_append(files, "file:///tmp/absolute_uri");
183 files = eina_list_append(files, "file:relative_uri");
185 info = NEW(Test_Info, 1);
189 /* test single full path */
191 IF_FREE(desktop->exec);
192 desktop->exec = strdup("app %f");
193 expected = eina_list_append(expected, "app '/tmp/absolute_path'");
194 expected = eina_list_append(expected, "app '/relative_path'");
195 expected = eina_list_append(expected, "app '/tmp/absolute_uri'");
196 expected = eina_list_append(expected, "app '/relative_uri'");
198 info->expected = expected;
199 efreet_desktop_command_get(desktop, files, _cb_command, info);
200 expected = eina_list_free(expected);
202 /* test single uri */
204 IF_FREE(desktop->exec);
205 desktop->exec = strdup("app %u");
206 expected = eina_list_append(expected, "app 'file:///tmp/absolute_path'");
207 expected = eina_list_append(expected, "app 'file:///relative_path'");
208 expected = eina_list_append(expected, "app 'file:///tmp/absolute_uri'");
209 expected = eina_list_append(expected, "app 'file:///relative_uri'");
211 info->expected = expected;
212 efreet_desktop_command_get(desktop, files, _cb_command, info);
213 expected = eina_list_free(expected);
215 /* test single dir */
218 IF_FREE(desktop->exec);
219 desktop->exec = strdup("app %d");
220 expected = eina_list_append(expected, "app '/tmp'");
221 expected = eina_list_append(expected, "app '/'");
222 expected = eina_list_append(expected, "app '/tmp'");
223 expected = eina_list_append(expected, "app '/'");
225 info->expected = expected;
226 efreet_desktop_command_get(desktop, files, _cb_command, info);
227 expected = eina_list_free(expected);
231 /* test single names */
234 IF_FREE(desktop->exec);
235 desktop->exec = strdup("app %n");
236 expected = eina_list_append(expected, "app 'absolute_path'");
237 expected = eina_list_append(expected, "app 'relative_path'");
238 expected = eina_list_append(expected, "app 'absolute_uri'");
239 expected = eina_list_append(expected, "app 'relative_uri'");
241 info->expected = expected;
242 efreet_desktop_command_get(desktop, files, _cb_command, info);
243 expected = eina_list_free(expected);
246 /* test multiple fullpaths */
248 IF_FREE(desktop->exec);
249 desktop->exec = strdup("app %F");
250 expected = eina_list_append(expected, "app '/tmp/absolute_path' '/relative_path' '/tmp/absolute_uri' '/relative_uri'");
252 info->expected = expected;
253 efreet_desktop_command_get(desktop, files, _cb_command, info);
254 expected = eina_list_free(expected);
256 /* test multiple URIs */
258 IF_FREE(desktop->exec);
259 desktop->exec = strdup("app %U");
260 expected = eina_list_append(expected, "app 'file:///tmp/absolute_path' 'file:///relative_path' 'file:///tmp/absolute_uri' 'file:///relative_uri'");
262 info->expected = expected;
263 efreet_desktop_command_get(desktop, files, _cb_command, info);
264 expected = eina_list_free(expected);
266 /* test multiple dirs */
269 IF_FREE(desktop->exec);
270 desktop->exec = strdup("app %D");
271 expected = eina_list_append(expected, "app '/tmp' '/' '/tmp' '/'");
273 info->expected = expected;
274 efreet_desktop_command_get(desktop, files, _cb_command, info);
275 expected = eina_list_free(expected);
278 /* test multiple names */
281 IF_FREE(desktop->exec);
282 desktop->exec = strdup("app %N");
283 expected = eina_list_append(expected, "app 'absolute_path' 'relative_path' 'absolute_uri' 'relative_uri'");
285 info->expected = expected;
286 efreet_desktop_command_get(desktop, files, _cb_command, info);
287 expected = eina_list_free(expected);
290 /* test icon appending */
292 IF_FREE(desktop->exec);
293 desktop->exec = strdup("app %i");
294 expected = eina_list_append(expected, "app --icon 'icon.png'");
296 info->expected = expected;
297 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
298 expected = eina_list_free(expected);
302 IF_FREE(desktop->exec);
303 desktop->exec = strdup("app %c");
304 expected = eina_list_append(expected, "app 'App Name'");
306 info->expected = expected;
307 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
308 expected = eina_list_free(expected);
310 /* test desktop path */
312 IF_FREE(desktop->exec);
313 desktop->exec = strdup("app %k");
314 expected = eina_list_append(expected, "app 'test.desktop'");
316 info->expected = expected;
317 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
318 eina_list_free(expected);
321 efreet_desktop_free(desktop);
322 eina_list_free(files);
324 if (chdir(olddir) != 0) ret = 0;
326 ret = info->error > 0 ? 0 : 1;
333 _cb_command(void *data, Efreet_Desktop *desktop __UNUSED__,
334 char *exec, int remaining __UNUSED__)
336 Test_Info *info = data;
339 expected = eina_list_data_get(info->expected);
340 info->expected = eina_list_demote_list(info->expected, info->expected);
343 printf(" ERROR: (%%%c) got \"%s\", expected nothing\n", info->type, exec);
348 if (strcmp(exec, expected))
350 printf(" ERROR: (%%%c) got \"%s\", expected \"%s\"\n", info->type, exec, expected);
359 cb_type_parse(Efreet_Desktop *desktop __UNUSED__, Efreet_Ini *ini)
362 val = efreet_ini_string_get(ini, "X-Test");
363 if (!val) return NULL;
364 return (void *)strdup(val);
368 ef_cb_desktop_type_parse(void)
370 Efreet_Desktop *desktop;
375 /* add my custom desktop type to efreet */
376 my_type = efreet_desktop_type_add("My_Type", cb_type_parse, NULL,
377 (Efreet_Desktop_Type_Free_Cb)free);
379 desktop = efreet_desktop_get(PKG_DATA_DIR"/test/test_type.desktop");
382 printf("No desktop found.\n");
386 if (desktop->type != my_type)
388 printf("Invalid type returned in desktop");
392 val = (char *)efreet_desktop_type_data_get(desktop);
393 if (!val || strcmp(val, "Own key"))
395 printf("Invalid value of custom key (%s).\n", val);
399 efreet_desktop_free(desktop);