Add testcase for search utilities functions

https://bugzilla.gnome.org/show_bug.cgi?id=709753
This commit is contained in:
Xavier Claessens 2013-10-09 14:32:58 -04:00 committed by Ryan Lortie
parent 38dfce5992
commit 0420295430
3 changed files with 78 additions and 0 deletions

View File

@ -53,6 +53,7 @@ rec-mutex
regex
rwlock
scannerapi
search-utils
sequence
shell
slice

View File

@ -76,6 +76,7 @@ test_programs = \
regex \
rwlock \
scannerapi \
search-utils \
sequence \
shell \
slice \

76
glib/tests/search-utils.c Normal file
View File

@ -0,0 +1,76 @@
#include "config.h"
#include <locale.h>
#include <glib.h>
typedef struct
{
const gchar *string;
const gchar *prefix;
gboolean should_match;
} SearchTest;
static void
test_search (void)
{
SearchTest tests[] =
{
/* Test word separators and case */
{ "Hello World", "he", TRUE },
{ "Hello World", "wo", TRUE },
{ "Hello World", "lo", FALSE },
{ "Hello World", "ld", FALSE },
{ "Hello-World", "wo", TRUE },
{ "HelloWorld", "wo", FALSE },
/* Test composed chars (accentued letters) */
{ "Jörgen", "jor", TRUE },
{ "Gaëtan", "gaetan", TRUE },
{ "élève", "ele", TRUE },
{ "Azais", "AzaÏs", FALSE },
{ "AzaÏs", "Azais", TRUE },
/* Test decomposed chars, they looks the same, but are actually
* composed of multiple unicodes */
{ "Jorgen", "Jör", FALSE },
{ "Jörgen", "jor", TRUE },
/* Multi words */
{ "Xavier Claessens", "Xav Cla", TRUE },
{ "Xavier Claessens", "Cla Xav", TRUE },
{ "Foo Bar Baz", " b ", TRUE },
{ "Foo Bar Baz", "bar bazz", FALSE },
{ NULL, NULL, FALSE }
};
guint i;
setlocale(LC_ALL, "");
g_debug ("Started");
for (i = 0; tests[i].string != NULL; i ++)
{
gboolean match;
gboolean ok;
match = g_str_match_string (tests[i].prefix, tests[i].string, TRUE);
ok = (match == tests[i].should_match);
g_debug ("'%s' - '%s' %s: %s", tests[i].prefix, tests[i].string,
tests[i].should_match ? "should match" : "should NOT match",
ok ? "OK" : "FAILED");
g_assert (ok);
}
}
int
main (int argc,
char **argv)
{
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/search", test_search);
return g_test_run ();
}