[glib] Move utf8 pointer tests to test framework
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Move utf8 pointer tests to test framework
- Date: Mon, 21 Jun 2010 01:06:25 +0000 (UTC)
commit 5b08ef84e4132db8f3e873f52c4bc929949dff4d
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Jun 20 21:04:47 2010 -0400
Move utf8 pointer tests to test framework
glib/tests/Makefile.am | 6 +
glib/tests/collate.c | 215 ++++++++++++++++++++++++++++++++++
{tests => glib/tests}/utf8-pointer.c | 0
tests/Makefile.am | 1 -
4 files changed, 221 insertions(+), 1 deletions(-)
---
diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am
index 58caa3c..0e72e70 100644
--- a/glib/tests/Makefile.am
+++ b/glib/tests/Makefile.am
@@ -68,6 +68,12 @@ sequence_LDADD = $(progs_ldadd)
TEST_PROGS += scannerapi
scannerapi_LDADD = $(progs_ldadd)
+TEST_PROGS += collate
+collate_LDADD = $(progs_ldadd)
+
+TEST_PROGS += utf8-pointer
+utf8_pointer_LDADD = $(progs_ldadd)
+
if OS_UNIX
# some testing of gtester funcitonality
diff --git a/glib/tests/collate.c b/glib/tests/collate.c
new file mode 100644
index 0000000..b831e5d
--- /dev/null
+++ b/glib/tests/collate.c
@@ -0,0 +1,215 @@
+#include <glib.h>
+#include <locale.h>
+
+typedef struct {
+ const gchar **input;
+ const gchar **sorted;
+ const gchar **file_sorted;
+} CollateTest;
+
+typedef struct {
+ const gchar *key;
+ const gchar *str;
+} Line;
+
+int
+compare_collate (const void *a, const void *b)
+{
+ const Line *line_a = a;
+ const Line *line_b = b;
+
+ return g_utf8_collate (line_a->str, line_b->str);
+}
+
+int
+compare_key (const void *a, const void *b)
+{
+ const Line *line_a = a;
+ const Line *line_b = b;
+
+ return strcmp (line_a->key, line_b->key);
+}
+
+static void
+do_collate (gboolean for_file, gboolean use_key, const CollateTest *test)
+{
+ GArray *line_array = g_array_new (FALSE, FALSE, sizeof(Line));
+ Line line;
+ gint i;
+
+ for (i = 0; test->input[i]; i++)
+ {
+ line.str = test->input[i];
+ if (for_file)
+ line.key = g_utf8_collate_key_for_filename (line.str, -1);
+ else
+ line.key = g_utf8_collate_key (line.str, -1);
+
+ g_array_append_val (line_array, line);
+ }
+
+ qsort (line_array->data, line_array->len, sizeof (Line), use_key ? compare_key : compare_collate);
+
+ for (i = 0; test->input[i]; i++)
+ {
+ const gchar *str;
+ str = g_array_index (line_array, Line, i).str;
+ if (for_file)
+ g_assert_cmpstr (str, ==, test->file_sorted[i]);
+ else
+ g_assert_cmpstr (str, ==, test->sorted[i]);
+ }
+}
+
+static void
+test_collate (gconstpointer d)
+{
+ const CollateTest *test = d;
+ do_collate (FALSE, FALSE, test);
+}
+
+static void
+test_collate_key (gconstpointer d)
+{
+ const CollateTest *test = d;
+ do_collate (FALSE, TRUE, test);
+}
+
+static void
+test_collate_file (gconstpointer d)
+{
+ const CollateTest *test = d;
+ do_collate (TRUE, TRUE, test);
+}
+
+const gchar *input0[] = {
+ "z",
+ "c",
+ "eer34",
+ "223",
+ "er1",
+ "foo",
+ "bar",
+ "baz",
+ "GTK+",
+ NULL
+};
+
+const gchar *sorted0[] = {
+ "223",
+ "bar",
+ "baz",
+ "c",
+ "eer34",
+ "er1",
+ "foo",
+ "GTK+",
+ "z",
+ NULL
+};
+
+const gchar *file_sorted0[] = {
+ "223",
+ "bar",
+ "baz",
+ "c",
+ "eer34",
+ "er1",
+ "foo",
+ "GTK+",
+ "z",
+ NULL
+};
+
+const gchar *input1[] = {
+ "file.txt",
+ "file2.bla",
+ "file.c",
+ "file3.xx",
+ "bla001",
+ "bla02",
+ "bla03",
+ "bla4",
+ "bla10",
+ "bla100",
+ "event.c",
+ "eventgenerator.c",
+ "event.h",
+ NULL
+};
+
+const gchar *sorted1[] = {
+ "bla001",
+ "bla02",
+ "bla03",
+ "bla10",
+ "bla100",
+ "bla4",
+ "event.c",
+ "eventgenerator.c",
+ "event.h",
+ "file2.bla",
+ "file3.xx",
+ "file.c",
+ "file.txt",
+ NULL
+};
+
+const gchar *file_sorted1[] = {
+ "bla001",
+ "bla02",
+ "bla03",
+ "bla4",
+ "bla10",
+ "bla100",
+ "event.c",
+ "event.h",
+ "eventgenerator.c",
+ "file.c",
+ "file.txt",
+ "file2.bla",
+ "file3.xx",
+ NULL
+};
+
+int
+main (int argc, char *argv[])
+{
+ gchar *path;
+ gint i;
+ const gchar *locale;
+ CollateTest test[2];
+
+ g_test_init (&argc, &argv, NULL);
+
+ g_setenv ("LC_ALL", "en_US", TRUE);
+ locale = setlocale (LC_ALL, "");
+ if (locale == NULL || strcmp (locale, "en_US") != 0)
+ {
+ g_test_message ("No suitable locale, skipping test");
+ return 0;
+ }
+
+ test[0].input = input0;
+ test[0].sorted = sorted0;
+ test[0].file_sorted = file_sorted0;
+ test[1].input = input1;
+ test[1].sorted = sorted1;
+ test[1].file_sorted = file_sorted1;
+
+ for (i = 0; i < G_N_ELEMENTS (test); i++)
+ {
+ path = g_strdup_printf ("/unicode/collate/%d", i);
+ 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_free (path);
+ path = g_strdup_printf ("/unicode/collate-filename/%d", i);
+ g_test_add_data_func (path, test, test_collate_file);
+ g_free (path);
+ }
+
+ return g_test_run ();
+}
+
diff --git a/tests/utf8-pointer.c b/glib/tests/utf8-pointer.c
similarity index 100%
rename from tests/utf8-pointer.c
rename to glib/tests/utf8-pointer.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 6d91cdf..44afe95 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -126,7 +126,6 @@ test_programs = \
unicode-caseconv \
unicode-encoding \
utf8-validate \
- utf8-pointer \
uri-test
test_scripts = run-markup-tests.sh run-collate-tests.sh run-bookmark-test.sh run-assert-msg-test.sh
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]