[glib/glib-2-28] Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-28] Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk
- Date: Sat, 21 May 2011 04:01:47 +0000 (UTC)
commit 76c8e94637b86d1c139cae9e5b3aed3707682357
Author: Behdad Esfahbod <behdad behdad org>
Date: Mon May 2 11:43:02 2011 -0400
Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk
Add tests.
glib/tests/utf8-misc.c | 91 +++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 87 insertions(+), 4 deletions(-)
---
diff --git a/glib/tests/utf8-misc.c b/glib/tests/utf8-misc.c
index 6572001..dc441f2 100644
--- a/glib/tests/utf8-misc.c
+++ b/glib/tests/utf8-misc.c
@@ -124,7 +124,7 @@ test_unichar_validate (void)
static void
test_unichar_character_type (void)
{
- gint i;
+ guint i;
struct {
GUnicodeType type;
gunichar c;
@@ -170,7 +170,7 @@ test_unichar_character_type (void)
static void
test_unichar_break_type (void)
{
- gint i;
+ guint i;
struct {
GUnicodeBreakType type;
gunichar c;
@@ -223,7 +223,7 @@ test_unichar_break_type (void)
static void
test_unichar_script (void)
{
- gint i;
+ guint i;
struct {
GUnicodeScript script;
gunichar c;
@@ -336,7 +336,7 @@ test_unichar_script (void)
static void
test_combining_class (void)
{
- gint i;
+ guint i;
struct {
gint class;
gunichar c;
@@ -427,6 +427,88 @@ test_title (void)
g_assert (g_unichar_totitle ('A') == 'A');
}
+static void
+test_wide (void)
+{
+ guint i;
+ struct {
+ gunichar c;
+ enum {
+ NOT_WIDE,
+ WIDE_CJK,
+ WIDE
+ } wide;
+ } examples[] = {
+ /* Neutral */
+ { 0x0000, NOT_WIDE },
+ { 0x0483, NOT_WIDE },
+ { 0x0641, NOT_WIDE },
+ { 0xFFFC, NOT_WIDE },
+ { 0x10000, NOT_WIDE },
+ { 0xE0001, NOT_WIDE },
+
+ /* Narrow */
+ { 0x0020, NOT_WIDE },
+ { 0x0041, NOT_WIDE },
+ { 0x27E6, NOT_WIDE },
+
+ /* Halfwidth */
+ { 0x20A9, NOT_WIDE },
+ { 0xFF61, NOT_WIDE },
+ { 0xFF69, NOT_WIDE },
+ { 0xFFEE, NOT_WIDE },
+
+ /* Ambiguous */
+ { 0x00A1, WIDE_CJK },
+ { 0x00BE, WIDE_CJK },
+ { 0x02DD, WIDE_CJK },
+ { 0x2020, WIDE_CJK },
+ { 0xFFFD, WIDE_CJK },
+ { 0x00A1, WIDE_CJK },
+ { 0x1F100, WIDE_CJK },
+ { 0xE0100, WIDE_CJK },
+ { 0x100000, WIDE_CJK },
+ { 0x10FFFD, WIDE_CJK },
+
+ /* Fullwidth */
+ { 0x3000, WIDE },
+ { 0xFF60, WIDE },
+
+ /* Wide */
+ { 0x2329, WIDE },
+ { 0x3001, WIDE },
+ { 0xFE69, WIDE },
+ { 0x30000, WIDE },
+ { 0x3FFFD, WIDE },
+
+ /* Default Wide blocks */
+ { 0x4DBF, WIDE },
+ { 0x9FFF, WIDE },
+ { 0xFAFF, WIDE },
+ { 0x2A6DF, WIDE },
+ { 0x2B73F, WIDE },
+ { 0x2B81F, WIDE },
+ { 0x2FA1F, WIDE },
+
+ /* Uniode-5.2 character additions */
+ /* Wide */
+ { 0x115F, WIDE },
+
+ /* Uniode-6.0 character additions */
+ /* Wide */
+ { 0x2B740, WIDE },
+ { 0x1B000, WIDE },
+
+ { 0x111111, NOT_WIDE }
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (examples); i++)
+ {
+ g_assert (g_unichar_iswide (examples[i].c) == (examples[i].wide == WIDE));
+ g_assert (g_unichar_iswide_cjk (examples[i].c) == (examples[i].wide != NOT_WIDE));
+ }
+};
+
int
main (int argc,
char *argv[])
@@ -445,6 +527,7 @@ main (int argc,
g_test_add_func ("/unicode/mirror", test_mirror);
g_test_add_func ("/unicode/mark", test_mark);
g_test_add_func ("/unicode/title", test_title);
+ g_test_add_func ("/unicode/wide", test_wide);
return g_test_run();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]