[glib: 1/2] Merge test/unicode-caseconc.c into glib/tests/unicode.c
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] Merge test/unicode-caseconc.c into glib/tests/unicode.c
- Date: Wed, 19 Jan 2022 15:54:20 +0000 (UTC)
commit b9f07a458a338a1fabac995183ef5a45bbafefcf
Author: Emmanuel Fleury <emmanuel fleury gmail com>
Date: Fri Jan 14 14:14:48 2022 +0100
Merge test/unicode-caseconc.c into glib/tests/unicode.c
Related to issue #1434
{tests => glib/tests}/casefold.txt | 0
{tests => glib/tests}/casemap.txt | 0
{tests => glib/tests}/gen-casefold-txt.py | 0
{tests => glib/tests}/gen-casemap-txt.py | 0
glib/tests/meson.build | 10 ++-
glib/tests/unicode.c | 95 ++++++++++++++++++++++
tests/meson.build | 3 -
tests/unicode-caseconv.c | 131 ------------------------------
8 files changed, 101 insertions(+), 138 deletions(-)
---
diff --git a/tests/casefold.txt b/glib/tests/casefold.txt
similarity index 100%
rename from tests/casefold.txt
rename to glib/tests/casefold.txt
diff --git a/tests/casemap.txt b/glib/tests/casemap.txt
similarity index 100%
rename from tests/casemap.txt
rename to glib/tests/casemap.txt
diff --git a/tests/gen-casefold-txt.py b/glib/tests/gen-casefold-txt.py
similarity index 100%
rename from tests/gen-casefold-txt.py
rename to glib/tests/gen-casefold-txt.py
diff --git a/tests/gen-casemap-txt.py b/glib/tests/gen-casemap-txt.py
similarity index 100%
rename from tests/gen-casemap-txt.py
rename to glib/tests/gen-casemap-txt.py
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index 862bcdf6d..125d38ec9 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
@@ -184,13 +184,15 @@ endif
if installed_tests_enabled
install_data(
- 'keyfiletest.ini',
- 'pages.ini',
- 'keyfile.c',
- 'empty',
'4096-random-bytes',
+ 'casefold.txt',
+ 'casemap.txt',
'echo-script',
'echo-script.bat',
+ 'empty',
+ 'keyfile.c',
+ 'keyfiletest.ini',
+ 'pages.ini',
install_dir : installed_tests_execdir,
)
install_subdir('bookmarks', install_dir : installed_tests_execdir)
diff --git a/glib/tests/unicode.c b/glib/tests/unicode.c
index 9d6596687..75487fd53 100644
--- a/glib/tests/unicode.c
+++ b/glib/tests/unicode.c
@@ -28,6 +28,7 @@
#endif
#include <locale.h>
+#include <stdio.h>
#include "glib.h"
@@ -535,6 +536,99 @@ test_casefold (void)
g_free (str_casefold);
}
+static void
+test_casemap_and_casefold (void)
+{
+ FILE *infile;
+ char buffer[1024];
+ char **strings;
+ char *filename;
+ const char *locale;
+ const char *test;
+ const char *expected;
+ char *convert;
+ char *current_locale = setlocale (LC_CTYPE, NULL);
+
+ filename = g_test_build_filename (G_TEST_DIST, "casemap.txt", NULL);
+ infile = fopen (filename, "r");
+ g_assert (infile != NULL);
+
+ while (fgets (buffer, sizeof (buffer), infile))
+ {
+ if (buffer[0] == '#')
+ continue;
+
+ strings = g_strsplit (buffer, "\t", -1);
+ locale = strings[0];
+ if (!locale[0])
+ locale = "C";
+
+ if (strcmp (locale, current_locale) != 0)
+ {
+ setlocale (LC_CTYPE, locale);
+ current_locale = setlocale (LC_CTYPE, NULL);
+
+ if (strncmp (current_locale, locale, 2) != 0)
+ {
+ g_test_message ("Cannot set locale to %s, skipping", locale);
+ goto next;
+ }
+ }
+
+ test = strings[1];
+
+ /* gen-casemap-txt.py uses an empty string when a single
+ * character doesn't have an equivalent in a particular case;
+ * since that behavior is nonsense for multicharacter strings,
+ * it would make more sense to put the expected result ... the
+ * original character unchanged. But for now, we just work
+ * around it here and take the empty string to mean "same as
+ * original"
+ */
+
+ convert = g_utf8_strup (test, -1);
+ expected = strings[4][0] ? strings[4] : test;
+ g_assert_cmpstr (convert, ==, expected);
+ g_free (convert);
+
+ convert = g_utf8_strdown (test, -1);
+ expected = strings[2][0] ? strings[2] : test;
+ g_assert_cmpstr (convert, ==, expected);
+ g_free (convert);
+
+ next:
+ g_strfreev (strings);
+ }
+
+ fclose (infile);
+
+ g_free (filename);
+ filename = g_test_build_filename (G_TEST_DIST, "casefold.txt", NULL);
+
+ infile = fopen (filename, "r");
+ g_assert (infile != NULL);
+
+ while (fgets (buffer, sizeof (buffer), infile))
+ {
+ if (buffer[0] == '#')
+ continue;
+
+ buffer[strlen (buffer) - 1] = '\0';
+ strings = g_strsplit (buffer, "\t", -1);
+
+ test = strings[0];
+
+ convert = g_utf8_casefold (test, -1);
+ g_assert_cmpstr (convert, ==, strings[1]);
+ g_free (convert);
+
+ g_strfreev (strings);
+ }
+
+ fclose (infile);
+ g_free (filename);
+}
+
/* Test that g_unichar_ismark() returns the correct value for various
* ASCII and Unicode alphabetic, numeric, and other, codepoints. */
static void
@@ -1720,6 +1814,7 @@ main (int argc,
g_test_add_func ("/unicode/break-type", test_unichar_break_type);
g_test_add_func ("/unicode/canonical-decomposition", test_canonical_decomposition);
g_test_add_func ("/unicode/casefold", test_casefold);
+ g_test_add_func ("/unicode/casemap_and_casefold", test_casemap_and_casefold);
g_test_add_func ("/unicode/cases", test_cases);
g_test_add_func ("/unicode/character-type", test_unichar_character_type);
g_test_add_func ("/unicode/cntrl", test_cntrl);
diff --git a/tests/meson.build b/tests/meson.build
index 585e10549..813b83a3d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -32,7 +32,6 @@ tests = {
'thread-test' : {},
'threadpool-test' : {'suite' : ['slow']},
'type-test' : {},
- 'unicode-caseconv' : {},
'unicode-encoding' : {},
'module-test-library' : {
'dependencies' : [libgmodule_dep],
@@ -73,8 +72,6 @@ endif
if installed_tests_enabled
install_data(
'iochannel-test-infile',
- 'casemap.txt',
- 'casefold.txt',
'utf8.txt',
install_dir : installed_tests_execdir,
)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]