annotate tests/uniwbrk/test-uc-wordbreaks.c @ 17870:04ed097a2048

uniwbrk/u32-wordbreaks-tests: add conformance test * modules/uniwbrk/u32-wordbreaks-tests (Files): Add tests/uniwbrk/test-uc-wordbreaks.c, tests/uniwbrk/test-uc-wordbreaks.sh, and tests/uniwbrk/WordBreakTest.txt. (Makefile.am): Add uniwbrk/test-uc-wordbreaks.sh to $(TESTS), add test-uc-wordbreaks to $(check_PROGRAMS), and define test_uc_wordbreaks_SOURCES and test_uc_wordbreaks_LDADD. * tests/uniwbrk/test-uc-wordbreaks.sh: New file. * tests/uniwbrk/test-uc-wordbreaks.c: New file.
author Daiki Ueno <ueno@gnu.org>
date Thu, 15 Jan 2015 12:06:30 +0900
parents
children ab67a6ee6dc8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17870
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
1 /* Word break function test, using test data from UCD.
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
2 Copyright (C) 2010-2014 Free Software Foundation, Inc.
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
3
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
4 This program is free software: you can redistribute it and/or modify it
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
5 under the terms of the GNU Lesser General Public License as published
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
6 by the Free Software Foundation; either version 3 of the License, or
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
7 (at your option) any later version.
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
8
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
12 Lesser General Public License for more details.
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
13
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
14 You should have received a copy of the GNU Lesser General Public License
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
16
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
17 /* Written by Daiki Ueno <ueno@gnu.org>, 2014.
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
18
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
19 Largely based on unigbrk/test-uc-is-grapheme-break.c,
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
20 written by Ben Pfaff <blp@cs.stanford.edu>, 2010. */
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
21
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
22 #include <config.h>
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
23
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
24 /* Specification. */
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
25 #include <uniwbrk.h>
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
26
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
27 #include <stdio.h>
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
28 #include <stdlib.h>
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
29 #include <string.h>
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
30
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
31 const char *
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
32 wordbreakproperty_to_string (int wbp)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
33 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
34 switch (wbp)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
35 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
36 #define CASE(VALUE) case WBP_##VALUE: return #VALUE;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
37 CASE(OTHER)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
38 CASE(CR)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
39 CASE(LF)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
40 CASE(NEWLINE)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
41 CASE(EXTEND)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
42 CASE(FORMAT)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
43 CASE(KATAKANA)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
44 CASE(ALETTER)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
45 CASE(MIDNUMLET)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
46 CASE(MIDLETTER)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
47 CASE(MIDNUM)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
48 CASE(NUMERIC)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
49 CASE(EXTENDNUMLET)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
50 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
51 abort ();
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
52 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
53
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
54 int
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
55 main (int argc, char *argv[])
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
56 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
57 const char *filename;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
58 char line[4096];
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
59 int exit_code;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
60 FILE *stream;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
61 int lineno;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
62
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
63 if (argc != 2)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
64 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
65 fprintf (stderr, "usage: %s FILENAME\n"
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
66 "where FILENAME is the location of the WordBreakTest.txt\n"
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
67 "test file.\n", argv[0]);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
68 exit (1);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
69 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
70
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
71 filename = argv[1];
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
72 stream = fopen (filename, "r");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
73 if (stream == NULL)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
74 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
75 fprintf (stderr, "error during fopen of '%s'\n", filename);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
76 exit (1);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
77 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
78
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
79 exit_code = 0;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
80 lineno = 0;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
81 while (fgets (line, sizeof line, stream))
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
82 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
83 char *comment;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
84 const char *p;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
85 uint32_t input[100];
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
86 char breaks[101];
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
87 char breaks_expected[101];
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
88 int i;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
89
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
90 lineno++;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
91
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
92 memset (breaks, 0, sizeof (breaks));
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
93 memset (breaks_expected, 0, sizeof (breaks_expected));
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
94
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
95 comment = strchr (line, '#');
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
96 if (comment != NULL)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
97 *comment = '\0';
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
98 if (line[strspn (line, " \t\r\n")] == '\0')
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
99 continue;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
100
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
101 i = 0;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
102 p = line;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
103 do
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
104 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
105 p += strspn (p, " \t\r\n");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
106 if (!strncmp (p, "\303\267" /* ÷ */, 2))
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
107 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
108 breaks_expected[i] = 1;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
109 p += 2;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
110 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
111 else if (!strncmp (p, "\303\227" /* × */, 2))
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
112 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
113 breaks_expected[i] = 0;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
114 p += 2;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
115 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
116 else
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
117 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
118 fprintf (stderr, "%s:%d.%d: syntax error expecting '÷' or '×'\n",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
119 filename, lineno, (int) (p - line + 1));
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
120 exit (1);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
121 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
122
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
123 p += strspn (p, " \t\r\n");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
124 if (*p != '\0')
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
125 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
126 unsigned int next_int;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
127 int n;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
128
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
129 if (sscanf (p, "%x%n", &next_int, &n) != 1)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
130 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
131 fprintf (stderr, "%s:%d.%d: syntax error at '%s' "
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
132 "expecting hexadecimal Unicode code point number\n",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
133 filename, lineno, (int) (p - line + 1), p);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
134 exit (1);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
135 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
136 p += n;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
137
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
138 input[i] = next_int;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
139 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
140
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
141 p += strspn (p, " \t\r\n");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
142 i++;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
143 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
144 while (*p != '\0');
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
145
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
146 u32_wordbreaks (input, i - 1, breaks);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
147
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
148 /* u32_wordbreaks always set BREAKS[0] to 0. */
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
149 breaks[0] = breaks_expected[0] = 1;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
150 if (memcmp (breaks, breaks_expected, i - 1) != 0)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
151 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
152 int j;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
153
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
154 fprintf (stderr, "%s:%d: expected: ", filename, lineno);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
155 for (j = 0; j < i - 1; j++)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
156 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
157 int input_wbp = uc_wordbreak_property (input[j]);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
158 fprintf (stderr, "%s U+%04X (%s) ",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
159 breaks_expected[j] == 1 ? "\303\267" : "\303\227",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
160 input[j], wordbreakproperty_to_string (input_wbp));
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
161 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
162 fprintf (stderr, "\n");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
163 fprintf (stderr, "%s:%d: actual: ", filename, lineno);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
164 for (j = 0; j < i - 1; j++)
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
165 {
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
166 int input_wbp = uc_wordbreak_property (input[j]);
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
167 fprintf (stderr, "%s U+%04X (%s) ",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
168 breaks[j] == 1 ? "\303\267" : "\303\227",
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
169 input[j], wordbreakproperty_to_string (input_wbp));
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
170 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
171 fprintf (stderr, "\n");
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
172 exit_code = 1;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
173 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
174 }
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
175
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
176 return exit_code;
04ed097a2048 uniwbrk/u32-wordbreaks-tests: add conformance test
Daiki Ueno <ueno@gnu.org>
parents:
diff changeset
177 }