1*d3273b5bSchristos /* $NetBSD: test-prohibited.c,v 1.2 2017/01/28 21:31:50 christos Exp $ */
2ca1c9b0cSelric
3ca1c9b0cSelric /*
4ca1c9b0cSelric * Copyright (c) 2004 Kungliga Tekniska Högskolan
5ca1c9b0cSelric * (Royal Institute of Technology, Stockholm, Sweden).
6ca1c9b0cSelric * All rights reserved.
7ca1c9b0cSelric *
8ca1c9b0cSelric * Redistribution and use in source and binary forms, with or without
9ca1c9b0cSelric * modification, are permitted provided that the following conditions
10ca1c9b0cSelric * are met:
11ca1c9b0cSelric *
12ca1c9b0cSelric * 1. Redistributions of source code must retain the above copyright
13ca1c9b0cSelric * notice, this list of conditions and the following disclaimer.
14ca1c9b0cSelric *
15ca1c9b0cSelric * 2. Redistributions in binary form must reproduce the above copyright
16ca1c9b0cSelric * notice, this list of conditions and the following disclaimer in the
17ca1c9b0cSelric * documentation and/or other materials provided with the distribution.
18ca1c9b0cSelric *
19ca1c9b0cSelric * 3. Neither the name of the Institute nor the names of its contributors
20ca1c9b0cSelric * may be used to endorse or promote products derived from this software
21ca1c9b0cSelric * without specific prior written permission.
22ca1c9b0cSelric *
23ca1c9b0cSelric * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24ca1c9b0cSelric * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25ca1c9b0cSelric * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26ca1c9b0cSelric * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27ca1c9b0cSelric * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28ca1c9b0cSelric * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29ca1c9b0cSelric * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30ca1c9b0cSelric * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31ca1c9b0cSelric * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32ca1c9b0cSelric * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33ca1c9b0cSelric * SUCH DAMAGE.
34ca1c9b0cSelric */
35ca1c9b0cSelric
36ca1c9b0cSelric #ifdef HAVE_CONFIG_H
37ca1c9b0cSelric #include <config.h>
38ca1c9b0cSelric #endif
39ca1c9b0cSelric #include <stdio.h>
40ca1c9b0cSelric #include "windlocl.h"
41ca1c9b0cSelric
42ca1c9b0cSelric static uint32_t positives[] = {
43ca1c9b0cSelric 0x00A0, 0x3000,
44ca1c9b0cSelric 0x0080, 0x009F, 0x206A, 0x206F, 0xFEFF,
45ca1c9b0cSelric 0xFFF9, 0xFFFD, 0xFFFE, 0xFFFF,
46ca1c9b0cSelric 0x1D173, 0x1D17A,
47ca1c9b0cSelric 0xE000, 0xF8FF, 0xF0000, 0xFFFFD,
48ca1c9b0cSelric 0x100000, 0x10FFFD,
49ca1c9b0cSelric 0xFDD0, 0xFDEF,
50ca1c9b0cSelric 0xFFFE, 0xFFFF,
51ca1c9b0cSelric 0x1FFFE, 0x1FFFF,
52ca1c9b0cSelric 0x2FFFE, 0x2FFFF,
53ca1c9b0cSelric 0x3FFFE, 0x3FFFF,
54ca1c9b0cSelric 0x4FFFE, 0x4FFFF,
55ca1c9b0cSelric 0x5FFFE, 0x5FFFF,
56ca1c9b0cSelric 0x6FFFE, 0x6FFFF,
57ca1c9b0cSelric 0x7FFFE, 0x7FFFF,
58ca1c9b0cSelric 0x8FFFE, 0x8FFFF,
59ca1c9b0cSelric 0x9FFFE, 0x9FFFF,
60ca1c9b0cSelric 0xAFFFE, 0xAFFFF,
61ca1c9b0cSelric 0xBFFFE, 0xBFFFF,
62ca1c9b0cSelric 0xCFFFE, 0xCFFFF,
63ca1c9b0cSelric 0xDFFFE, 0xDFFFF,
64ca1c9b0cSelric 0xEFFFE, 0xEFFFF,
65ca1c9b0cSelric 0xFFFFE, 0xFFFFF,
66ca1c9b0cSelric 0x10FFFE, 0x10FFFF,
67ca1c9b0cSelric 0xD800, 0xDFFF,
68ca1c9b0cSelric 0xFFF9,
69ca1c9b0cSelric 0xFFFA,
70ca1c9b0cSelric 0xFFFB,
71ca1c9b0cSelric 0xFFFC,
72ca1c9b0cSelric 0x2FF0, 0x2FFB,
73ca1c9b0cSelric 0x0340,
74ca1c9b0cSelric 0x0341,
75ca1c9b0cSelric 0x200E,
76ca1c9b0cSelric 0x200F,
77ca1c9b0cSelric 0x202A,
78ca1c9b0cSelric 0x202B,
79ca1c9b0cSelric 0x202C,
80ca1c9b0cSelric 0x202D,
81ca1c9b0cSelric 0x202E,
82ca1c9b0cSelric 0x206A,
83ca1c9b0cSelric 0x206B,
84ca1c9b0cSelric 0x206C,
85ca1c9b0cSelric 0x206D,
86ca1c9b0cSelric 0x206E,
87ca1c9b0cSelric 0x206F,
88ca1c9b0cSelric 0xE0001,
89ca1c9b0cSelric 0xE0020,
90ca1c9b0cSelric 0xE007F,
91ca1c9b0cSelric };
92ca1c9b0cSelric
93ca1c9b0cSelric static uint32_t negatives[] = {
94ca1c9b0cSelric 0x0000, 0x001F, 0x007F,
95ca1c9b0cSelric 0x0020, 0x2069, 0x2070, 0x0FFF8,
96ca1c9b0cSelric 0x1D172, 0x1D17B,
97ca1c9b0cSelric 0xF900,
98ca1c9b0cSelric 0xFDCF, 0xFDF0,
99ca1c9b0cSelric 0x10000,
100ca1c9b0cSelric 0x1FFFD, 0x20000,
101ca1c9b0cSelric 0x2FFFD, 0x30000,
102ca1c9b0cSelric 0x3FFFD, 0x40000,
103ca1c9b0cSelric 0x4FFFD, 0x50000,
104ca1c9b0cSelric 0x5FFFD, 0x60000,
105ca1c9b0cSelric 0x6FFFD, 0x70000,
106ca1c9b0cSelric 0x7FFFD, 0x80000,
107ca1c9b0cSelric 0x8FFFD, 0x90000,
108ca1c9b0cSelric 0x9FFFD, 0xA0000,
109ca1c9b0cSelric 0xAFFFD, 0xB0000,
110ca1c9b0cSelric 0xBFFFD, 0xC0000,
111ca1c9b0cSelric 0xCFFFD, 0xD0000,
112ca1c9b0cSelric 0xDFFFD, 0xE0000,
113ca1c9b0cSelric 0xEFFFD,
114ca1c9b0cSelric 0x110000,
115ca1c9b0cSelric 0xD7FF,
116ca1c9b0cSelric 0xFFF8,
117ca1c9b0cSelric 0x2FEF, 0x2FFC,
118ca1c9b0cSelric };
119ca1c9b0cSelric
120ca1c9b0cSelric int
main(void)121ca1c9b0cSelric main(void)
122ca1c9b0cSelric {
123ca1c9b0cSelric unsigned i;
124ca1c9b0cSelric unsigned failures = 0;
125ca1c9b0cSelric
126ca1c9b0cSelric for (i = 0; i < sizeof(positives)/sizeof(positives[0]); ++i)
127ca1c9b0cSelric if (!_wind_stringprep_error(positives[i], WIND_PROFILE_NAME)) {
128ca1c9b0cSelric printf ("code-point 0x%x not marked as prohibited\n",
129ca1c9b0cSelric positives[i]);
130ca1c9b0cSelric ++failures;
131ca1c9b0cSelric }
132ca1c9b0cSelric
133ca1c9b0cSelric for (i = 0; i < sizeof(negatives)/sizeof(negatives[0]); ++i)
134ca1c9b0cSelric if (_wind_stringprep_error(negatives[i], WIND_PROFILE_NAME)) {
135ca1c9b0cSelric printf ("code-point 0x%x not marked as non-prohibited\n",
136ca1c9b0cSelric negatives[i]);
137ca1c9b0cSelric ++failures;
138ca1c9b0cSelric }
139ca1c9b0cSelric return failures != 0;
140ca1c9b0cSelric }
141