xref: /haiku/src/tests/system/libroot/posix/test_wcfuncs.c (revision cbe0a0c436162d78cc3f92a305b64918c839d079)
1 /* Copyright (C) 1999, 2000 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, write to the Free
16  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17  02111-1307 USA.  */
18 
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <wctype.h>
22 
23 
24 int
25 main(int argc, char *argv[])
26 {
27 	int result = 0;
28 	wint_t ch;
29 
30 	for (ch = 0; ch < 128; ++ch) {
31 		if (iswlower(ch)) {
32 			/* Get corresponding upper case character.  */
33 			wint_t up = towupper(ch);
34 			/* This should have no effect.  */
35 			wint_t low = towlower(ch);
36 
37 			if ((ch != low) || (up == ch) || (up == low)) {
38 				printf(
39 					"iswlower/towupper/towlower for character \\%x failed\n",
40 					ch);
41 				result++;
42 			}
43 		}
44 		if (iswupper(ch)) {
45 			/* Get corresponding lower case character.  */
46 			wint_t low = towlower(ch);
47 			/* This should have no effect.  */
48 			wint_t up = towupper(ch);
49 
50 			if ((ch != up) || (low == ch) || (up == low)) {
51 				printf(
52 					"iswupper/towlower/towupper for character \\%x failed\n",
53 					ch);
54 				result++;
55 			}
56 		}
57 	}
58 
59 	/* Finally some specific tests.  */
60 	ch = L'A';
61 	if (!iswupper(ch) || iswlower(ch)) {
62 		printf("!iswupper/iswlower (L'A') failed\n");
63 		result++;
64 
65 	}
66 	ch = L'a';
67 	if (iswupper(ch) || !iswlower(ch)) {
68 		printf("iswupper/!iswlower (L'a') failed\n");
69 		result++;
70 	}
71 	if (towlower(L'A') != L'a') {
72 		printf("towlower(L'A') failed\n");
73 		result++;
74 	}
75 	if (towupper(L'a') != L'A') {
76 		printf("towupper(L'a') failed\n");
77 		result++;
78 	}
79 
80 	if (result == 0)
81 		puts("All test successful!");
82 	return result != 0;
83 }
84