Blame glib/tests/search-utils.c

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