1 | /* Copyright (C) 1996-2022 Free Software Foundation, Inc. |
2 | This file is part of the GNU C Library. |
3 | |
4 | The GNU C Library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Lesser General Public |
6 | License as published by the Free Software Foundation; either |
7 | version 2.1 of the License, or (at your option) any later version. |
8 | |
9 | The GNU C Library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Lesser General Public License for more details. |
13 | |
14 | You should have received a copy of the GNU Lesser General Public |
15 | License along with the GNU C Library; if not, see |
16 | <https://www.gnu.org/licenses/>. */ |
17 | |
18 | #include <ctype.h> |
19 | #include <stdio.h> |
20 | #include <stdlib.h> |
21 | #include <wctype.h> |
22 | |
23 | int |
24 | main (int argc, char *argv[]) |
25 | { |
26 | int result = 0; |
27 | wctype_t bit_alnum = wctype (property: "alnum" ); |
28 | wctype_t bit_alpha = wctype (property: "alpha" ); |
29 | wctype_t bit_cntrl = wctype (property: "cntrl" ); |
30 | wctype_t bit_digit = wctype (property: "digit" ); |
31 | wctype_t bit_graph = wctype (property: "graph" ); |
32 | wctype_t bit_lower = wctype (property: "lower" ); |
33 | wctype_t bit_print = wctype (property: "print" ); |
34 | wctype_t bit_punct = wctype (property: "punct" ); |
35 | wctype_t bit_space = wctype (property: "space" ); |
36 | wctype_t bit_upper = wctype (property: "upper" ); |
37 | wctype_t bit_xdigit = wctype (property: "xdigit" ); |
38 | int ch; |
39 | |
40 | if (wctype (property: "does not exist" ) != 0) |
41 | { |
42 | puts (s: "wctype return value != 0 for non existing property" ); |
43 | result = 1; |
44 | } |
45 | |
46 | for (ch = 0; ch < 256; ++ch) |
47 | { |
48 | #define TEST(test) \ |
49 | do \ |
50 | { \ |
51 | if ((is##test (ch) == 0) != (iswctype (ch, bit_##test) == 0)) \ |
52 | { \ |
53 | printf ("`iswctype' class `%s' test " \ |
54 | "for character \\%o failed\n", #test, ch); \ |
55 | result = 1; \ |
56 | } \ |
57 | if ((is##test (ch) == 0) != (isw##test (ch) == 0)) \ |
58 | { \ |
59 | printf ("`isw%s' test for character \\%o failed\n", \ |
60 | #test, ch); \ |
61 | result = 1; \ |
62 | } \ |
63 | } \ |
64 | while (0) |
65 | |
66 | TEST (alnum); |
67 | TEST (alpha); |
68 | TEST (cntrl); |
69 | TEST (digit); |
70 | TEST (graph); |
71 | TEST (lower); |
72 | TEST (print); |
73 | TEST (punct); |
74 | TEST (space); |
75 | TEST (upper); |
76 | TEST (xdigit); |
77 | } |
78 | |
79 | if (result == 0) |
80 | puts (s: "All test successful!" ); |
81 | return result; |
82 | } |
83 | |