Branch data Line data Source code
1 : : #include <gio/gio.h>
2 : : #include <string.h>
3 : :
4 : : #define g_assert_content_type_equals(s1, s2) \
5 : : do { \
6 : : const char *__s1 = (s1), *__s2 = (s2); \
7 : : if (g_content_type_equals (__s1, __s2)) ; \
8 : : else \
9 : : g_assertion_message_cmpstr (G_LOG_DOMAIN, \
10 : : __FILE__, __LINE__, \
11 : : G_STRFUNC, \
12 : : #s1 " == " #s2, \
13 : : __s1, " == ", __s2); \
14 : : } while (0)
15 : :
16 : : static gboolean
17 : 9 : skip_missing_shared_mime_info (void)
18 : : {
19 : 9 : gchar *path = g_find_program_in_path ("update-mime-database");
20 : :
21 : 9 : if (path == NULL)
22 : : {
23 : 0 : g_test_skip ("shared-mime-info is required to run this test");
24 : 0 : return TRUE;
25 : : }
26 : 9 : g_free (path);
27 : 9 : return FALSE;
28 : : }
29 : :
30 : : static void
31 : 1 : test_guess (void)
32 : : {
33 : : gchar *res;
34 : : gchar *expected;
35 : : gchar *existing_directory;
36 : : gboolean uncertain;
37 : 1 : guchar data[] =
38 : : "[Desktop Entry]\n"
39 : : "Type=Application\n"
40 : : "Name=appinfo-test\n"
41 : : "Exec=./appinfo-test --option\n";
42 : :
43 : 1 : if (skip_missing_shared_mime_info ())
44 : 0 : return;
45 : :
46 : : #ifdef G_OS_WIN32
47 : : existing_directory = (gchar *) g_getenv ("SYSTEMROOT");
48 : :
49 : : if (existing_directory)
50 : : existing_directory = g_strdup_printf ("%s" G_DIR_SEPARATOR_S, existing_directory);
51 : : #else
52 : 1 : existing_directory = g_strdup ("/etc/");
53 : : #endif
54 : :
55 : 1 : res = g_content_type_guess (existing_directory, NULL, 0, &uncertain);
56 : 1 : g_free (existing_directory);
57 : 1 : expected = g_content_type_from_mime_type ("inode/directory");
58 : 1 : g_assert_content_type_equals (expected, res);
59 : 1 : g_assert_true (uncertain);
60 : 1 : g_free (res);
61 : 1 : g_free (expected);
62 : :
63 : 1 : res = g_content_type_guess ("foo.txt", NULL, 0, &uncertain);
64 : 1 : expected = g_content_type_from_mime_type ("text/plain");
65 : 1 : g_assert_content_type_equals (expected, res);
66 : 1 : g_free (res);
67 : 1 : g_free (expected);
68 : :
69 : 1 : res = g_content_type_guess ("foo.txt", data, sizeof (data) - 1, &uncertain);
70 : 1 : expected = g_content_type_from_mime_type ("text/plain");
71 : 1 : g_assert_content_type_equals (expected, res);
72 : 1 : g_assert_false (uncertain);
73 : 1 : g_free (res);
74 : 1 : g_free (expected);
75 : :
76 : : /* Sadly win32 & OSX just don't have as large and robust of a mime type database as Linux */
77 : : #ifndef G_OS_WIN32
78 : : #ifndef __APPLE__
79 : 1 : res = g_content_type_guess ("foo", data, sizeof (data) - 1, &uncertain);
80 : 1 : expected = g_content_type_from_mime_type ("text/plain");
81 : 1 : g_assert_content_type_equals (expected, res);
82 : 1 : g_assert_false (uncertain);
83 : 1 : g_free (res);
84 : 1 : g_free (expected);
85 : :
86 : 1 : res = g_content_type_guess ("foo.desktop", data, sizeof (data) - 1, &uncertain);
87 : 1 : expected = g_content_type_from_mime_type ("application/x-desktop");
88 : 1 : g_assert_content_type_equals (expected, res);
89 : 1 : g_assert_false (uncertain);
90 : 1 : g_free (res);
91 : 1 : g_free (expected);
92 : :
93 : 1 : res = g_content_type_guess (NULL, data, sizeof (data) - 1, &uncertain);
94 : 1 : expected = g_content_type_from_mime_type ("application/x-desktop");
95 : 1 : g_assert_content_type_equals (expected, res);
96 : 1 : g_assert_false (uncertain);
97 : 1 : g_free (res);
98 : 1 : g_free (expected);
99 : :
100 : : /* this is potentially ambiguous: it does not match the PO template format,
101 : : * but looks like text so it can't be Powerpoint */
102 : 1 : res = g_content_type_guess ("test.pot", (guchar *)"ABC abc", 7, &uncertain);
103 : 1 : expected = g_content_type_from_mime_type ("text/x-gettext-translation-template");
104 : 1 : g_assert_content_type_equals (expected, res);
105 : 1 : g_assert_false (uncertain);
106 : 1 : g_free (res);
107 : 1 : g_free (expected);
108 : :
109 : 1 : res = g_content_type_guess ("test.pot", (guchar *)"msgid \"", 7, &uncertain);
110 : 1 : expected = g_content_type_from_mime_type ("text/x-gettext-translation-template");
111 : 1 : g_assert_content_type_equals (expected, res);
112 : 1 : g_assert_false (uncertain);
113 : 1 : g_free (res);
114 : 1 : g_free (expected);
115 : :
116 : 1 : res = g_content_type_guess ("test.pot", (guchar *)"\xCF\xD0\xE0\x11", 4, &uncertain);
117 : 1 : expected = g_content_type_from_mime_type ("application/vnd.ms-powerpoint");
118 : 1 : g_assert_content_type_equals (expected, res);
119 : : /* we cannot reliably detect binary powerpoint files as long as there is no
120 : : * defined MIME magic, so do not check uncertain here
121 : : */
122 : 1 : g_free (res);
123 : 1 : g_free (expected);
124 : :
125 : 1 : res = g_content_type_guess ("test.otf", (guchar *)"OTTO", 4, &uncertain);
126 : 1 : expected = g_content_type_from_mime_type ("application/x-font-otf");
127 : 1 : g_assert_content_type_equals (expected, res);
128 : 1 : g_assert_false (uncertain);
129 : 1 : g_free (res);
130 : 1 : g_free (expected);
131 : : #endif /* __APPLE__ */
132 : :
133 : 1 : res = g_content_type_guess (NULL, (guchar *)"%!PS-Adobe-2.0 EPSF-1.2", 23, &uncertain);
134 : 1 : expected = g_content_type_from_mime_type ("image/x-eps");
135 : 1 : g_assert_content_type_equals (expected, res);
136 : 1 : g_assert_false (uncertain);
137 : 1 : g_free (res);
138 : 1 : g_free (expected);
139 : :
140 : : /* The data below would be detected as a valid content type, but shouldn’t be read at all. */
141 : 1 : res = g_content_type_guess (NULL, (guchar *)"%!PS-Adobe-2.0 EPSF-1.2", 0, &uncertain);
142 : 1 : expected = g_content_type_from_mime_type ("application/x-zerosize");
143 : 1 : g_assert_content_type_equals (expected, res);
144 : 1 : g_assert_false (uncertain);
145 : 1 : g_free (res);
146 : 1 : g_free (expected);
147 : : #endif /* G_OS_WIN32 */
148 : : }
149 : :
150 : : static void
151 : 1 : test_unknown (void)
152 : : {
153 : : gchar *unknown;
154 : : gchar *str;
155 : :
156 : 1 : unknown = g_content_type_from_mime_type ("application/octet-stream");
157 : 1 : g_assert_true (g_content_type_is_unknown (unknown));
158 : 1 : str = g_content_type_get_mime_type (unknown);
159 : 1 : g_assert_cmpstr (str, ==, "application/octet-stream");
160 : 1 : g_free (str);
161 : 1 : g_free (unknown);
162 : 1 : }
163 : :
164 : : static void
165 : 1 : test_subtype (void)
166 : : {
167 : : gchar *plain;
168 : : gchar *xml;
169 : :
170 : 1 : if (skip_missing_shared_mime_info ())
171 : 0 : return;
172 : :
173 : 1 : plain = g_content_type_from_mime_type ("text/plain");
174 : 1 : xml = g_content_type_from_mime_type ("application/xml");
175 : :
176 : 1 : g_assert_true (g_content_type_is_a (xml, plain));
177 : 1 : g_assert_true (g_content_type_is_mime_type (xml, "text/plain"));
178 : :
179 : 1 : g_free (plain);
180 : 1 : g_free (xml);
181 : : }
182 : :
183 : : static gint
184 : 355 : find_mime (gconstpointer a, gconstpointer b)
185 : : {
186 : 355 : if (g_content_type_equals (a, b))
187 : 2 : return 0;
188 : 353 : return 1;
189 : : }
190 : :
191 : : static void
192 : 1 : test_list (void)
193 : : {
194 : : GList *types;
195 : : gchar *plain;
196 : : gchar *xml;
197 : :
198 : 1 : if (skip_missing_shared_mime_info ())
199 : 0 : return;
200 : :
201 : : #ifdef __APPLE__
202 : : g_test_skip ("The OSX backend does not implement g_content_types_get_registered()");
203 : : return;
204 : : #endif
205 : :
206 : 1 : plain = g_content_type_from_mime_type ("text/plain");
207 : 1 : xml = g_content_type_from_mime_type ("application/xml");
208 : :
209 : 1 : types = g_content_types_get_registered ();
210 : :
211 : 1 : g_assert_cmpuint (g_list_length (types), >, 1);
212 : :
213 : : /* just check that some types are in the list */
214 : 1 : g_assert_nonnull (g_list_find_custom (types, plain, find_mime));
215 : 1 : g_assert_nonnull (g_list_find_custom (types, xml, find_mime));
216 : :
217 : 1 : g_list_free_full (types, g_free);
218 : :
219 : 1 : g_free (plain);
220 : 1 : g_free (xml);
221 : : }
222 : :
223 : : static void
224 : 1 : test_executable (void)
225 : : {
226 : : gchar *type;
227 : :
228 : 1 : if (skip_missing_shared_mime_info ())
229 : 0 : return;
230 : :
231 : : #ifdef G_OS_WIN32
232 : : type = g_content_type_from_mime_type ("application/vnd.microsoft.portable-executable");
233 : : /* FIXME: the MIME is not in the default `MIME\Database\Content Type` registry.
234 : : * g_assert_true (g_content_type_can_be_executable (type));
235 : : */
236 : : g_free (type);
237 : : #else
238 : 1 : type = g_content_type_from_mime_type ("application/x-executable");
239 : 1 : g_assert_true (g_content_type_can_be_executable (type));
240 : 1 : g_free (type);
241 : :
242 : 1 : type = g_content_type_from_mime_type ("text/plain");
243 : 1 : g_assert_true (g_content_type_can_be_executable (type));
244 : 1 : g_free (type);
245 : : #endif
246 : 1 : type = g_content_type_from_mime_type ("image/png");
247 : 1 : g_assert_false (g_content_type_can_be_executable (type));
248 : 1 : g_free (type);
249 : : }
250 : :
251 : : static void
252 : 1 : test_description (void)
253 : : {
254 : : gchar *type;
255 : : gchar *desc;
256 : :
257 : 1 : if (skip_missing_shared_mime_info ())
258 : 0 : return;
259 : :
260 : 1 : type = g_content_type_from_mime_type ("text/plain");
261 : 1 : desc = g_content_type_get_description (type);
262 : 1 : g_assert_nonnull (desc);
263 : :
264 : 1 : g_free (desc);
265 : 1 : g_free (type);
266 : : }
267 : :
268 : : static void
269 : 1 : test_icon (void)
270 : : {
271 : : gchar *type;
272 : : GIcon *icon;
273 : :
274 : 1 : if (skip_missing_shared_mime_info ())
275 : 0 : return;
276 : :
277 : 1 : type = g_content_type_from_mime_type ("text/plain");
278 : 1 : icon = g_content_type_get_icon (type);
279 : 1 : g_assert_true (G_IS_ICON (icon));
280 : 1 : if (G_IS_THEMED_ICON (icon))
281 : : {
282 : : const gchar *const *names;
283 : :
284 : 1 : names = g_themed_icon_get_names (G_THEMED_ICON (icon));
285 : : #ifdef __APPLE__
286 : : g_assert_true (g_strv_contains (names, "text-*"));
287 : : #elif defined(G_OS_WIN32)
288 : : g_assert_cmpuint (g_strv_length ((GStrv) names), >, 0);
289 : : #else
290 : 1 : g_assert_true (g_strv_contains (names, "text-plain"));
291 : 1 : g_assert_true (g_strv_contains (names, "text-x-generic"));
292 : : #endif
293 : : }
294 : 1 : g_object_unref (icon);
295 : 1 : g_free (type);
296 : :
297 : 1 : type = g_content_type_from_mime_type ("application/rtf");
298 : 1 : icon = g_content_type_get_icon (type);
299 : 1 : g_assert_true (G_IS_ICON (icon));
300 : 1 : if (G_IS_THEMED_ICON (icon))
301 : : {
302 : : const gchar *const *names;
303 : :
304 : 1 : names = g_themed_icon_get_names (G_THEMED_ICON (icon));
305 : : #ifdef G_OS_WIN32
306 : : g_assert_true (g_strv_contains (names, "text-x-generic"));
307 : : #else
308 : 1 : g_assert_true (g_strv_contains (names, "application-rtf"));
309 : : #ifndef __APPLE__
310 : 1 : g_assert_true (g_strv_contains (names, "x-office-document"));
311 : : #endif
312 : : #endif
313 : : }
314 : 1 : g_object_unref (icon);
315 : 1 : g_free (type);
316 : : }
317 : :
318 : : static void
319 : 1 : test_symbolic_icon (void)
320 : : {
321 : : #ifndef G_OS_WIN32
322 : : gchar *type;
323 : : GIcon *icon;
324 : :
325 : 1 : if (skip_missing_shared_mime_info ())
326 : 0 : return;
327 : :
328 : 1 : type = g_content_type_from_mime_type ("text/plain");
329 : 1 : icon = g_content_type_get_symbolic_icon (type);
330 : 1 : g_assert_true (G_IS_ICON (icon));
331 : 1 : if (G_IS_THEMED_ICON (icon))
332 : : {
333 : : const gchar *const *names;
334 : :
335 : 1 : names = g_themed_icon_get_names (G_THEMED_ICON (icon));
336 : : #ifdef __APPLE__
337 : : g_assert_true (g_strv_contains (names, "text-*-symbolic"));
338 : : g_assert_true (g_strv_contains (names, "text-*"));
339 : : #else
340 : 1 : g_assert_true (g_strv_contains (names, "text-plain-symbolic"));
341 : 1 : g_assert_true (g_strv_contains (names, "text-x-generic-symbolic"));
342 : 1 : g_assert_true (g_strv_contains (names, "text-plain"));
343 : 1 : g_assert_true (g_strv_contains (names, "text-x-generic"));
344 : : #endif
345 : : }
346 : 1 : g_object_unref (icon);
347 : 1 : g_free (type);
348 : :
349 : 1 : type = g_content_type_from_mime_type ("application/rtf");
350 : 1 : icon = g_content_type_get_symbolic_icon (type);
351 : 1 : g_assert_true (G_IS_ICON (icon));
352 : 1 : if (G_IS_THEMED_ICON (icon))
353 : : {
354 : : const gchar *const *names;
355 : :
356 : 1 : names = g_themed_icon_get_names (G_THEMED_ICON (icon));
357 : 1 : g_assert_true (g_strv_contains (names, "application-rtf-symbolic"));
358 : 1 : g_assert_true (g_strv_contains (names, "application-rtf"));
359 : : #ifndef __APPLE__
360 : 1 : g_assert_true (g_strv_contains (names, "x-office-document-symbolic"));
361 : 1 : g_assert_true (g_strv_contains (names, "x-office-document"));
362 : : #endif
363 : : }
364 : 1 : g_object_unref (icon);
365 : 1 : g_free (type);
366 : : #endif
367 : : }
368 : :
369 : : static void
370 : 1 : test_tree (void)
371 : : {
372 : 1 : const gchar *tests[] = {
373 : : "x-content/image-dcf",
374 : : "x-content/unix-software",
375 : : "x-content/win32-software"
376 : : };
377 : : const gchar *path;
378 : : GFile *file;
379 : : gchar **types;
380 : : gsize i;
381 : :
382 : 1 : if (skip_missing_shared_mime_info ())
383 : 0 : return;
384 : :
385 : : #if defined(__APPLE__) || defined(G_OS_WIN32)
386 : : g_test_skip ("The OSX & Windows backends do not implement g_content_type_guess_for_tree()");
387 : : return;
388 : : #endif
389 : :
390 : 4 : for (i = 0; i < G_N_ELEMENTS (tests); i++)
391 : : {
392 : 3 : path = g_test_get_filename (G_TEST_DIST, tests[i], NULL);
393 : 3 : file = g_file_new_for_path (path);
394 : 3 : types = g_content_type_guess_for_tree (file);
395 : 3 : g_assert_content_type_equals (types[0], tests[i]);
396 : 3 : g_strfreev (types);
397 : 3 : g_object_unref (file);
398 : : }
399 : : }
400 : :
401 : : static void
402 : 1 : test_tree_invalid_encoding (void)
403 : : {
404 : : gchar *path;
405 : : gchar *name;
406 : : GFile *tmpdir;
407 : : GFile *file;
408 : : gchar **types;
409 : 1 : GError *error = NULL;
410 : :
411 : 1 : g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/3168");
412 : :
413 : : #if defined(__APPLE__) || defined(G_OS_WIN32)
414 : : g_test_skip ("The OSX & Windows backends do not implement g_content_type_guess_for_tree()");
415 : : return;
416 : : #endif
417 : :
418 : 1 : path = g_dir_make_tmp ("gio-test-tree-invalid-encoding-XXXXXX", &error);
419 : 1 : g_assert_no_error (error);
420 : 1 : tmpdir = g_file_new_for_path (path);
421 : 1 : g_free (path);
422 : :
423 : 1 : name = g_strdup_printf ("\260");
424 : 1 : file = g_file_get_child (tmpdir, name);
425 : 1 : g_free (name);
426 : :
427 : 1 : g_file_replace_contents (file, "", 0, NULL, FALSE, 0, NULL, NULL, &error);
428 : 1 : if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT))
429 : : {
430 : 0 : g_test_skip ("Unable to create testing file with non-ASCII characters.");
431 : :
432 : 0 : g_object_unref (tmpdir);
433 : 0 : g_object_unref (file);
434 : 0 : g_clear_error (&error);
435 : :
436 : 0 : return;
437 : : }
438 : 1 : g_assert_no_error (error);
439 : :
440 : 1 : types = g_content_type_guess_for_tree (tmpdir);
441 : 1 : g_strfreev (types);
442 : :
443 : 1 : g_file_delete (file, NULL, &error);
444 : 1 : g_assert_no_error (error);
445 : 1 : g_object_unref (file);
446 : :
447 : 1 : g_file_delete (tmpdir, NULL, &error);
448 : 1 : g_assert_no_error (error);
449 : 1 : g_object_unref (tmpdir);
450 : : }
451 : :
452 : : static void
453 : 1 : test_type_is_a_special_case (void)
454 : : {
455 : : gboolean res;
456 : :
457 : 1 : g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=782311");
458 : :
459 : : /* Everything but the inode type is application/octet-stream */
460 : 1 : res = g_content_type_is_a ("inode/directory", "application/octet-stream");
461 : 1 : g_assert_false (res);
462 : : #if !defined(__APPLE__) && !defined(G_OS_WIN32)
463 : 1 : res = g_content_type_is_a ("anything", "application/octet-stream");
464 : 1 : g_assert_true (res);
465 : : #endif
466 : 1 : }
467 : :
468 : : static void
469 : 1 : test_guess_svg_from_data (void)
470 : : {
471 : 1 : const gchar svgfilecontent[] = "<svg xmlns=\"http://www.w3.org/2000/svg\"\
472 : : xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n\
473 : : <rect x=\"10\" y=\"10\" height=\"100\" width=\"100\"\n\
474 : : style=\"stroke:#ff0000; fill: #0000ff\"/>\n\
475 : : </svg>\n";
476 : :
477 : 1 : gboolean uncertain = TRUE;
478 : : gchar *res;
479 : :
480 : 1 : if (skip_missing_shared_mime_info ())
481 : 0 : return;
482 : :
483 : 1 : res = g_content_type_guess (NULL, (guchar *)svgfilecontent,
484 : : sizeof (svgfilecontent) - 1, &uncertain);
485 : : #ifdef __APPLE__
486 : : g_assert_cmpstr (res, ==, "public.svg-image");
487 : : #elif defined(G_OS_WIN32)
488 : : g_test_skip ("svg type detection from content is not implemented on WIN32");
489 : : #else
490 : 1 : g_assert_cmpstr (res, ==, "image/svg+xml");
491 : : #endif
492 : 1 : g_assert_false (uncertain);
493 : 1 : g_free (res);
494 : : }
495 : :
496 : : static void
497 : 1 : test_mime_from_content (void)
498 : : {
499 : : #ifdef __APPLE__
500 : : gchar *mime_type;
501 : : mime_type = g_content_type_get_mime_type ("com.microsoft.bmp");
502 : : g_assert_cmpstr (mime_type, ==, "image/bmp");
503 : : g_free (mime_type);
504 : : mime_type = g_content_type_get_mime_type ("com.compuserve.gif");
505 : : g_assert_cmpstr (mime_type, ==, "image/gif");
506 : : g_free (mime_type);
507 : : mime_type = g_content_type_get_mime_type ("public.png");
508 : : g_assert_cmpstr (mime_type, ==, "image/png");
509 : : g_free (mime_type);
510 : : mime_type = g_content_type_get_mime_type ("public.text");
511 : : g_assert_cmpstr (mime_type, ==, "text/*");
512 : : g_free (mime_type);
513 : : mime_type = g_content_type_get_mime_type ("public.svg-image");
514 : : g_assert_cmpstr (mime_type, ==, "image/svg+xml");
515 : : g_free (mime_type);
516 : : #elif defined(G_OS_WIN32)
517 : : g_test_skip ("mime from content type test not implemented on WIN32");
518 : : #else
519 : 1 : g_test_skip ("mime from content type test not implemented on UNIX");
520 : : #endif
521 : 1 : }
522 : :
523 : : static void
524 : 1 : test_mime_to_content (void)
525 : : {
526 : : #ifdef __APPLE__
527 : : gchar *uti;
528 : : uti = g_content_type_from_mime_type ("image/bmp");
529 : : g_assert_cmpstr (uti, ==, "com.microsoft.bmp");
530 : : g_free (uti);
531 : : uti = g_content_type_from_mime_type ("image/gif");
532 : : g_assert_cmpstr (uti, ==, "com.compuserve.gif");
533 : : g_free (uti);
534 : : uti = g_content_type_from_mime_type ("image/png");
535 : : g_assert_cmpstr (uti, ==, "public.png");
536 : : g_free (uti);
537 : : uti = g_content_type_from_mime_type ("text/*");
538 : : g_assert_cmpstr (uti, ==, "public.text");
539 : : g_free (uti);
540 : : uti = g_content_type_from_mime_type ("image/svg+xml");
541 : : g_assert_cmpstr (uti, ==, "public.svg-image");
542 : : g_free (uti);
543 : : uti = g_content_type_from_mime_type ("application/my-custom-type");
544 : : g_assert_true (g_str_has_prefix (uti, "dyn."));
545 : : g_free (uti);
546 : : #elif defined(G_OS_WIN32)
547 : : g_test_skip ("mime from content type test not implemented on WIN32");
548 : : #else
549 : 1 : g_test_skip ("mime from content type test not implemented on UNIX");
550 : : #endif
551 : 1 : }
552 : :
553 : : int
554 : 1 : main (int argc, char *argv[])
555 : : {
556 : 1 : g_test_init (&argc, &argv, NULL);
557 : :
558 : 1 : g_test_add_func ("/contenttype/guess", test_guess);
559 : 1 : g_test_add_func ("/contenttype/guess_svg_from_data", test_guess_svg_from_data);
560 : 1 : g_test_add_func ("/contenttype/mime_to_content", test_mime_to_content);
561 : 1 : g_test_add_func ("/contenttype/mime_from_content", test_mime_from_content);
562 : 1 : g_test_add_func ("/contenttype/unknown", test_unknown);
563 : 1 : g_test_add_func ("/contenttype/subtype", test_subtype);
564 : 1 : g_test_add_func ("/contenttype/list", test_list);
565 : 1 : g_test_add_func ("/contenttype/executable", test_executable);
566 : 1 : g_test_add_func ("/contenttype/description", test_description);
567 : 1 : g_test_add_func ("/contenttype/icon", test_icon);
568 : 1 : g_test_add_func ("/contenttype/symbolic-icon", test_symbolic_icon);
569 : 1 : g_test_add_func ("/contenttype/tree", test_tree);
570 : 1 : g_test_add_func ("/contenttype/tree_invalid_encoding",
571 : : test_tree_invalid_encoding);
572 : 1 : g_test_add_func ("/contenttype/test_type_is_a_special_case",
573 : : test_type_is_a_special_case);
574 : :
575 : 1 : return g_test_run ();
576 : : }
|