X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Ftests%2Fcollate.c;h=24a913d24789969f523f011d198b8cc799afe51f;hb=ea4f9ce8a060d53cbc299e4c384089f6cc926caa;hp=7750c40e492eff09d77634d09206d18b89b82890;hpb=3d93c44374964b5846aea61f32ecb294efe148db;p=platform%2Fupstream%2Fglib.git diff --git a/glib/tests/collate.c b/glib/tests/collate.c index 7750c40..24a913d 100644 --- a/glib/tests/collate.c +++ b/glib/tests/collate.c @@ -3,6 +3,8 @@ #include #include +static gboolean missing_locale = FALSE; + typedef struct { const gchar **input; const gchar **sorted; @@ -10,10 +12,16 @@ typedef struct { } CollateTest; typedef struct { - const gchar *key; + gchar *key; const gchar *str; } Line; +static void +clear_line (Line *line) +{ + g_free (line->key); +} + static int compare_collate (const void *a, const void *b) { @@ -35,10 +43,19 @@ compare_key (const void *a, const void *b) static void do_collate (gboolean for_file, gboolean use_key, const CollateTest *test) { - GArray *line_array = g_array_new (FALSE, FALSE, sizeof(Line)); + GArray *line_array; Line line; gint i; + if (missing_locale) + { + g_test_skip ("no en_US locale"); + return; + } + + line_array = g_array_new (FALSE, FALSE, sizeof(Line)); + g_array_set_clear_func (line_array, (GDestroyNotify)clear_line); + for (i = 0; test->input[i]; i++) { line.str = test->input[i]; @@ -61,6 +78,8 @@ do_collate (gboolean for_file, gboolean use_key, const CollateTest *test) else g_assert_cmpstr (str, ==, test->sorted[i]); } + + g_array_free (line_array, TRUE); } static void @@ -90,6 +109,7 @@ const gchar *input0[] = { "eer34", "223", "er1", + "üĠണ", "foo", "bar", "baz", @@ -106,6 +126,7 @@ const gchar *sorted0[] = { "er1", "foo", "GTK+", + "üĠണ", "z", NULL }; @@ -119,6 +140,7 @@ const gchar *file_sorted0[] = { "er1", "foo", "GTK+", + "üĠണ", "z", NULL }; @@ -174,13 +196,64 @@ const gchar *file_sorted1[] = { NULL }; +const gchar *input2[] = { + "file26", + "file100", + "file1", + "file:foo", + "a.a", + "file027", + "file10", + "aa.a", + "file5", + "file0027", + "a-.a", + "file0000", + "file000x", + NULL +}; + +const gchar *sorted2[] = { + "a-.a", + "a.a", + "aa.a", + "file0000", + "file000x", + "file0027", + "file027", + "file1", + "file10", + "file100", + "file26", + "file5", + "file:foo", + NULL +}; + +const gchar *file_sorted2[] = { + "a.a", + "a-.a", + "aa.a", + "file0000", + "file000x", + "file1", + "file5", + "file10", + "file26", + "file027", + "file0027", + "file100", + "file:foo", + NULL +}; + int main (int argc, char *argv[]) { gchar *path; gint i; const gchar *locale; - CollateTest test[2]; + CollateTest test[3]; g_test_init (&argc, &argv, NULL); @@ -188,8 +261,10 @@ main (int argc, char *argv[]) locale = setlocale (LC_ALL, ""); if (locale == NULL || strcmp (locale, "en_US") != 0) { - g_test_message ("No suitable locale, skipping test"); - return 0; + g_test_message ("No suitable locale, skipping tests"); + missing_locale = TRUE; + /* let the tests run to completion so they show up as SKIP'd in TAP + * output */ } test[0].input = input0; @@ -198,6 +273,9 @@ main (int argc, char *argv[]) test[1].input = input1; test[1].sorted = sorted1; test[1].file_sorted = file_sorted1; + test[2].input = input2; + test[2].sorted = sorted2; + test[2].file_sorted = file_sorted2; for (i = 0; i < G_N_ELEMENTS (test); i++) { @@ -205,10 +283,10 @@ main (int argc, char *argv[]) g_test_add_data_func (path, &test[i], test_collate); g_free (path); path = g_strdup_printf ("/unicode/collate-key/%d", i); - g_test_add_data_func (path, test, test_collate_key); + g_test_add_data_func (path, &test[i], test_collate_key); g_free (path); path = g_strdup_printf ("/unicode/collate-filename/%d", i); - g_test_add_data_func (path, test, test_collate_file); + g_test_add_data_func (path, &test[i], test_collate_file); g_free (path); }