glib/glib/tests/search-utils.c
Matthias Clasen 555d40eeed Improve search utils test coverage
This adds test cases for the Turkish i.
2013-11-28 16:01:23 -05:00

81 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 },
/* Turkish special case */
{ "İstanbul", "ist", TRUE },
{ "Diyarbakır", "diyarbakir", 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 ();
}