Mercurial > hg > octave-nkf > gnulib-hg
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 |
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 } |