mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
tests: Add tests for fileattributematchers
This commit is contained in:
parent
b400127b3e
commit
60c42f6648
@ -57,6 +57,7 @@ TEST_PROGS += \
|
|||||||
cancellable \
|
cancellable \
|
||||||
vfs \
|
vfs \
|
||||||
network-monitor \
|
network-monitor \
|
||||||
|
fileattributematcher \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
if OS_UNIX
|
if OS_UNIX
|
||||||
@ -387,6 +388,9 @@ mimeapps_LDADD = $(progs_ldadd)
|
|||||||
file_SOURCES = file.c
|
file_SOURCES = file.c
|
||||||
file_LDADD = $(progs_ldadd)
|
file_LDADD = $(progs_ldadd)
|
||||||
|
|
||||||
|
fileattributematcher_SOURCES = fileattributematcher.c
|
||||||
|
fileattributematcher_LDADD = $(progs_ldadd)
|
||||||
|
|
||||||
gapplication_SOURCES = gapplication.c gdbus-sessionbus.c
|
gapplication_SOURCES = gapplication.c gdbus-sessionbus.c
|
||||||
gapplication_LDADD = $(progs_ldadd)
|
gapplication_LDADD = $(progs_ldadd)
|
||||||
|
|
||||||
|
88
gio/tests/fileattributematcher.c
Normal file
88
gio/tests/fileattributematcher.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#include <gio/gio.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_exact (void)
|
||||||
|
{
|
||||||
|
char *exact_matches[] = {
|
||||||
|
"*",
|
||||||
|
"a::*",
|
||||||
|
"a::*,b::*",
|
||||||
|
"a::a,a::b",
|
||||||
|
"a::a,a::b,b::*"
|
||||||
|
};
|
||||||
|
|
||||||
|
GFileAttributeMatcher *matcher;
|
||||||
|
char *s;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (exact_matches); i++)
|
||||||
|
{
|
||||||
|
matcher = g_file_attribute_matcher_new (exact_matches[i]);
|
||||||
|
s = g_file_attribute_matcher_to_string (matcher);
|
||||||
|
if (! g_str_equal (exact_matches[i], s))
|
||||||
|
{
|
||||||
|
g_test_fail ();
|
||||||
|
g_test_message ("matcher should be %s, but is %s", exact_matches[i], s);
|
||||||
|
}
|
||||||
|
g_free (s);
|
||||||
|
g_file_attribute_matcher_unref (matcher);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_equality (void)
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
char *expected;
|
||||||
|
char *actual;
|
||||||
|
} equals[] = {
|
||||||
|
/* star makes everything else go away */
|
||||||
|
{ "*", "*,*" },
|
||||||
|
{ "*", "*,a::*" },
|
||||||
|
{ "*", "*,a::b" },
|
||||||
|
{ "*", "a::*,*" },
|
||||||
|
{ "*", "a::b,*" },
|
||||||
|
{ "*", "a::b,*,a::*" },
|
||||||
|
/* a::* makes a::<anything> go away */
|
||||||
|
{ "a::*", "a::*,a::*" },
|
||||||
|
{ "a::*", "a::*,a::b" },
|
||||||
|
{ "a::*", "a::b,a::*" },
|
||||||
|
{ "a::*", "a::b,a::*,a::c" },
|
||||||
|
/* a::b does not allow duplicates */
|
||||||
|
{ "a::b", "a::b,a::b" },
|
||||||
|
{ "a::b,a::c", "a::b,a::c,a::b" },
|
||||||
|
/* stuff gets ordered in registration order */
|
||||||
|
{ "a::b,a::c", "a::c,a::b" },
|
||||||
|
{ "a::*,b::*", "b::*,a::*" },
|
||||||
|
};
|
||||||
|
|
||||||
|
GFileAttributeMatcher *matcher;
|
||||||
|
char *s;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (equals); i++)
|
||||||
|
{
|
||||||
|
matcher = g_file_attribute_matcher_new (equals[i].actual);
|
||||||
|
s = g_file_attribute_matcher_to_string (matcher);
|
||||||
|
if (! g_str_equal (equals[i].expected, s))
|
||||||
|
{
|
||||||
|
g_test_fail ();
|
||||||
|
g_test_message ("matcher for %s should be %s, but is %s", equals[i].actual, equals[i].expected, s);
|
||||||
|
}
|
||||||
|
g_free (s);
|
||||||
|
g_file_attribute_matcher_unref (matcher);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
g_type_init ();
|
||||||
|
|
||||||
|
g_test_init (&argc, &argv, NULL);
|
||||||
|
|
||||||
|
g_test_add_func ("/fileattributematcher/exact", test_exact);
|
||||||
|
g_test_add_func ("/fileattributematcher/equality", test_equality);
|
||||||
|
|
||||||
|
return g_test_run ();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user