diff options
Diffstat (limited to 'tests/unigbrk/test-uc-is-grapheme-break.c')
-rw-r--r-- | tests/unigbrk/test-uc-is-grapheme-break.c | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/tests/unigbrk/test-uc-is-grapheme-break.c b/tests/unigbrk/test-uc-is-grapheme-break.c deleted file mode 100644 index 8a9ac59..0000000 --- a/tests/unigbrk/test-uc-is-grapheme-break.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Grapheme cluster break function test. - Copyright (C) 2010-2015 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/* Written by Ben Pfaff <blp@cs.stanford.edu>, 2010. */ - -#include <config.h> - -/* Specification. */ -#include <unigbrk.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -const char * -graphemebreakproperty_to_string (int gbp) -{ - printf ("%d\n", gbp); - switch (gbp) - { -#define CASE(VALUE) case GBP_##VALUE: return #VALUE; - CASE(OTHER) - CASE(CR) - CASE(LF) - CASE(CONTROL) - CASE(EXTEND) - CASE(PREPEND) - CASE(SPACINGMARK) - CASE(L) - CASE(V) - CASE(T) - CASE(LV) - CASE(LVT) - CASE(RI) - } - abort (); -} - -int -main (int argc, char *argv[]) -{ - const char *filename; - char line[1024]; - int exit_code; - FILE *stream; - int lineno; - - if (argc != 2) - { - fprintf (stderr, "usage: %s FILENAME\n" - "where FILENAME is the location of the GraphemeBreakTest.txt\n" - "test file.\n", argv[0]); - exit (1); - } - - filename = argv[1]; - stream = fopen (filename, "r"); - if (stream == NULL) - { - fprintf (stderr, "error during fopen of '%s'\n", filename); - exit (1); - } - - exit_code = 0; - lineno = 0; - while (fgets (line, sizeof line, stream)) - { - char *comment; - const char *p; - ucs4_t prev; - - lineno++; - - comment = strchr (line, '#'); - if (comment != NULL) - *comment = '\0'; - if (line[strspn (line, " \t\r\n")] == '\0') - continue; - - prev = 0; - p = line; - do - { - bool should_break; - ucs4_t next; - - p += strspn (p, " \t\r\n"); - if (!strncmp (p, "\303\267" /* ÷ */, 2)) - { - should_break = true; - p += 2; - } - else if (!strncmp (p, "\303\227" /* × */, 2)) - { - should_break = false; - p += 2; - } - else - { - fprintf (stderr, "%s:%d.%d: syntax error expecting '÷' or '×'\n", - filename, lineno, (int) (p - line + 1)); - exit (1); - } - - p += strspn (p, " \t\r\n"); - if (*p == '\0') - next = 0; - else - { - unsigned int next_int; - int n; - - if (sscanf (p, "%x%n", &next_int, &n) != 1) - { - fprintf (stderr, "%s:%d.%d: syntax error at '%s' " - "expecting hexadecimal Unicode code point number\n", - filename, lineno, (int) (p - line + 1), p); - exit (1); - } - p += n; - - next = next_int; - } - - if (uc_is_grapheme_break (prev, next) != should_break) - { - int prev_gbp = uc_graphemeclusterbreak_property (prev); - int next_gbp = uc_graphemeclusterbreak_property (next); - fprintf (stderr, "%s:%d: should %s U+%04X (%s) and " - "U+%04X (%s)\n", - filename, lineno, - should_break ? "break" : "join", - prev, graphemebreakproperty_to_string (prev_gbp), - next, graphemebreakproperty_to_string (next_gbp)); - exit_code = 1; - } - - p += strspn (p, " \t\r\n"); - prev = next; - } - while (*p != '\0'); - } - - return exit_code; -} |