summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--modules/uninorm/decomposing-form-tests16
-rw-r--r--tests/uninorm/test-decomposing-form.c47
3 files changed, 82 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ab7fd90ece..195adc330a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
2009-03-07 Bruno Haible <bruno@clisp.org>
+ Tests for module 'uninorm/decomposing-form'.
+ * modules/uninorm/decomposing-form-tests: New file.
+ * tests/uninorm/test-decomposing-form.c: New file.
+
+ New module 'uninorm/decomposing-form'.
+ * lib/uninorm.h (uninorm_decomposing_form): New declaration.
+ * lib/uninorm/normalize-internal.h (struct unicode_normalization_form):
+ Add 'decomposing_variant' field.
+ * lib/uninorm/decomposing-form.c: New file.
+ * lib/uninorm/nfc.c (uninorm_nfc): Update.
+ * lib/uninorm/nfd.c (uninorm_nfd): Update.
+ * lib/uninorm/nfkc.c (uninorm_nfkc): Update.
+ * lib/uninorm/nfkd.c (uninorm_nfkd): Update.
+ * modules/uninorm/decomposing-form: New file.
+ * modules/uninorm/nfc (Depends-on): Add uninorm/nfd.
+ * modules/uninorm/nfkc (Depends-on): Add uninorm/nfkd.
+
+2009-03-07 Bruno Haible <bruno@clisp.org>
+
* lib/uninorm/u-normcmp.h (FUNC): Use stack=allocated buffers for small
strings.
diff --git a/modules/uninorm/decomposing-form-tests b/modules/uninorm/decomposing-form-tests
new file mode 100644
index 0000000000..5c8536d5fd
--- /dev/null
+++ b/modules/uninorm/decomposing-form-tests
@@ -0,0 +1,16 @@
+Files:
+tests/uninorm/test-decomposing-form.c
+
+Depends-on:
+uninorm/nfc
+uninorm/nfd
+uninorm/nfkc
+uninorm/nfkd
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-decomposing-form
+check_PROGRAMS += test-decomposing-form
+test_decomposing_form_SOURCES = uninorm/test-decomposing-form.c
+
diff --git a/tests/uninorm/test-decomposing-form.c b/tests/uninorm/test-decomposing-form.c
new file mode 100644
index 0000000000..3802c3fe15
--- /dev/null
+++ b/tests/uninorm/test-decomposing-form.c
@@ -0,0 +1,47 @@
+/* Test of decomposing variant of a normalization form.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uninorm_decomposing_form (UNINORM_NFC) == UNINORM_NFD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFD) == UNINORM_NFD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFKC) == UNINORM_NFKD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFKD) == UNINORM_NFKD);
+
+ return 0;
+}