tests: Add tests for fileattributematchers

This commit is contained in:
Benjamin Otte 2011-11-01 19:12:17 +01:00
parent b400127b3e
commit 60c42f6648
2 changed files with 92 additions and 0 deletions

View File

@ -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)

View 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 ();
}