1 | /* Copyright (C) 1999-2024 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 <stdio.h> |
19 | #include <stdlib.h> |
20 | #include <wctype.h> |
21 | |
22 | int |
23 | main (int argc, char *argv[]) |
24 | { |
25 | int result = 0; |
26 | wint_t ch; |
27 | |
28 | |
29 | for (ch = 0; ch < 128; ++ch) |
30 | { |
31 | if (iswlower (ch)) |
32 | { |
33 | /* Get corresponding upper case character. */ |
34 | wint_t up = towupper (ch); |
35 | /* This should have no effect. */ |
36 | wint_t low = towlower (ch); |
37 | |
38 | if ((ch != low) || (up == ch) || (up == low)) |
39 | { |
40 | printf (format: "iswlower/towupper/towlower for character \\%x failed\n" , ch); |
41 | result++; |
42 | } |
43 | } |
44 | if (iswupper (wc: ch)) |
45 | { |
46 | /* Get corresponding lower case character. */ |
47 | wint_t low = towlower (ch); |
48 | /* This should have no effect. */ |
49 | wint_t up = towupper (ch); |
50 | |
51 | if ((ch != up) || (low == ch) || (up == low)) |
52 | { |
53 | printf (format: "iswupper/towlower/towupper for character \\%x failed\n" , ch); |
54 | result++; |
55 | } |
56 | } |
57 | } |
58 | |
59 | /* Finally some specific tests. */ |
60 | ch = L'A'; |
61 | if (!iswupper (wc: ch) || iswlower (ch)) |
62 | { |
63 | printf (format: "!iswupper/iswlower (L'A') failed\n" ); |
64 | result++; |
65 | |
66 | } |
67 | ch = L'a'; |
68 | if (iswupper (wc: ch) || !iswlower (ch)) |
69 | { |
70 | printf (format: "iswupper/!iswlower (L'a') failed\n" ); |
71 | result++; |
72 | } |
73 | if (towlower (L'A') != L'a') |
74 | { |
75 | printf (format: "towlower(L'A') failed\n" ); |
76 | result++; |
77 | } |
78 | if (towupper (L'a') != L'A') |
79 | { |
80 | printf (format: "towupper(L'a') failed\n" ); |
81 | result++; |
82 | } |
83 | |
84 | if (result == 0) |
85 | puts (s: "All test successful!" ); |
86 | return result != 0; |
87 | } |
88 | |