1 /* GtkFileFilter tests
2 *
3 * Copyright (C) 2021, Red Hat, Inc.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include <locale.h>
20
21 #include <gtk/gtk.h>
22
23 static void
test_basic(void)24 test_basic (void)
25 {
26 GtkFileFilter *filter;
27
28 filter = gtk_file_filter_new ();
29 gtk_file_filter_set_name (filter, "test");
30 g_assert_cmpstr (gtk_file_filter_get_name (filter), ==, "test");
31
32 g_object_unref (filter);
33 }
34
35 static void
test_pattern(void)36 test_pattern (void)
37 {
38 GtkFileFilter *filter;
39 char *attrs;
40 GFileInfo *info;
41
42 filter = gtk_file_filter_new ();
43 gtk_file_filter_add_pattern (filter, "D*.st[xy]");
44 attrs = g_strjoinv (",", (char **)gtk_file_filter_get_attributes (filter));
45
46 info = g_file_info_new ();
47
48 g_file_info_set_display_name (info, "abracadabra");
49 g_assert_false (gtk_filter_match (GTK_FILTER (filter), info));
50
51 g_file_info_set_display_name (info, "dro.stx");
52 g_assert_false (gtk_filter_match (GTK_FILTER (filter), info));
53
54 g_file_info_set_display_name (info, "Dro.sty");
55 g_assert_true (gtk_filter_match (GTK_FILTER (filter), info));
56
57 g_object_unref (info);
58 g_free (attrs);
59 g_object_unref (filter);
60 }
61
62 static void
test_suffix(void)63 test_suffix (void)
64 {
65 GtkFileFilter *filter;
66 char *attrs;
67 GFileInfo *info;
68
69 filter = gtk_file_filter_new ();
70 gtk_file_filter_add_suffix (filter, "txt");
71 attrs = g_strjoinv (",", (char **)gtk_file_filter_get_attributes (filter));
72
73 info = g_file_info_new ();
74
75 g_file_info_set_display_name (info, "abracadabra");
76 g_assert_false (gtk_filter_match (GTK_FILTER (filter), info));
77
78 g_file_info_set_display_name (info, "dro.txt");
79 g_assert_true (gtk_filter_match (GTK_FILTER (filter), info));
80
81 g_file_info_set_display_name (info, "dro.TXT");
82 g_assert_true (gtk_filter_match (GTK_FILTER (filter), info));
83
84 g_object_unref (info);
85 g_free (attrs);
86 g_object_unref (filter);
87 }
88
89 static void
test_mime_type(void)90 test_mime_type (void)
91 {
92 GtkFileFilter *filter;
93 char *attrs;
94 GFileInfo *info;
95
96 filter = gtk_file_filter_new ();
97 gtk_file_filter_add_mime_type (filter, "image/png");
98 attrs = g_strjoinv (",", (char **)gtk_file_filter_get_attributes (filter));
99
100 info = g_file_info_new ();
101
102 g_file_info_set_display_name (info, "abracadabra");
103 g_file_info_set_content_type (info, "text/plain");
104 g_assert_false (gtk_filter_match (GTK_FILTER (filter), info));
105
106 g_file_info_set_display_name (info, "dro.png");
107 g_file_info_set_content_type (info, "image/png");
108 g_assert_true (gtk_filter_match (GTK_FILTER (filter), info));
109
110 g_file_info_set_display_name (info, "dro.PNG");
111 g_file_info_set_content_type (info, "image/png");
112 g_assert_true (gtk_filter_match (GTK_FILTER (filter), info));
113
114 g_object_unref (info);
115 g_free (attrs);
116 g_object_unref (filter);
117 }
118
119 int
main(int argc,char * argv[])120 main (int argc, char *argv[])
121 {
122 (g_test_init) (&argc, &argv, NULL);
123 setlocale (LC_ALL, "C");
124
125 g_test_add_func ("/filefilter/basic", test_basic);
126 g_test_add_func ("/filefilter/pattern", test_pattern);
127 g_test_add_func ("/filefilter/suffix", test_suffix);
128 g_test_add_func ("/filefilter/mimetype", test_mime_type);
129
130 return g_test_run ();
131 }
132