X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Funicode-collate.c;h=785f1690990026a17459786940546130dce3a2cb;hb=9fa5b8e5c7701d9ea40577a9a317d02c79b17d18;hp=5475c89b83940c1d5156d77d8a2e2bebac20a56b;hpb=39caf76a7f7313f60eecdf31741f9edd48327be1;p=platform%2Fupstream%2Fglib.git diff --git a/tests/unicode-collate.c b/tests/unicode-collate.c index 5475c89..785f169 100644 --- a/tests/unicode-collate.c +++ b/tests/unicode-collate.c @@ -1,6 +1,11 @@ +#undef G_DISABLE_ASSERT +#undef G_LOG_DOMAIN + #include #include #include +#include +#include typedef struct { const char *key; @@ -32,19 +37,49 @@ int main (int argc, char **argv) GError *error = NULL; GArray *line_array = g_array_new (FALSE, FALSE, sizeof(Line)); guint i; + gboolean do_key = FALSE; + gboolean do_file = FALSE; + gchar *locale; + + /* FIXME: need to modify environment here, + * since g_utf8_collate_key calls setlocal (LC_COLLATE, "") + */ + g_setenv ("LC_ALL", "en_US", TRUE); + locale = setlocale (LC_ALL, ""); + if (locale == NULL || strcmp (locale, "en_US") != 0) + { + fprintf (stderr, "No suitable locale, skipping test\n"); + return 2; + } - if (argc != 1 && argc != 2) + if (argc != 1 && argc != 2 && argc != 3) { - fprintf (stderr, "Usage: unicode-collate [FILE]\n"); + fprintf (stderr, "Usage: unicode-collate [--key|--file] [FILE]\n"); return 1; } - if (argc == 2) + i = 1; + if (argc > 1) + { + if (strcmp (argv[1], "--key") == 0) + { + do_key = TRUE; + i = 2; + } + else if (strcmp (argv[1], "--file") == 0) + { + do_key = TRUE; + do_file = TRUE; + i = 2; + } + } + + if (argc > i) { - in = g_io_channel_new_file (argv[1], G_IO_FILE_MODE_READ, &error); + in = g_io_channel_new_file (argv[i], "r", &error); if (!in) { - fprintf (stderr, "Cannot open %s: %s\n", argv[1], error->message); + fprintf (stderr, "Cannot open %s: %s\n", argv[i], error->message); return 1; } } @@ -64,7 +99,10 @@ int main (int argc, char **argv) str[term_pos] = '\0'; - line.key = g_utf8_collate_key (str, -1); + if (do_file) + line.key = g_utf8_collate_key_for_filename (str, -1); + else + line.key = g_utf8_collate_key (str, -1); line.str = str; g_array_append_val (line_array, line); @@ -76,19 +114,11 @@ int main (int argc, char **argv) return 1; } - printf ("== g_utf8_collate ==\n"); - - qsort (line_array->data, line_array->len, sizeof (Line), compare_collate); - for (i = 0; i < line_array->len; i++) - printf ("%s\n", g_array_index (line_array, Line, i).str); - - printf ("== g_utf8_collate_key ==\n"); - - qsort (line_array->data, line_array->len, sizeof (Line), compare_key); + qsort (line_array->data, line_array->len, sizeof (Line), do_key ? compare_key : compare_collate); for (i = 0; i < line_array->len; i++) printf ("%s\n", g_array_index (line_array, Line, i).str); - g_io_channel_close (in); + g_io_channel_unref (in); return 0; }