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