1 | /* |
2 | * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY |
3 | * |
4 | * FILE: dat_strcoll.c |
5 | * |
6 | * STRCOLL: int strcoll (const char *s1, const char *s2); |
7 | */ |
8 | |
9 | /* |
10 | NOTE: |
11 | |
12 | If a return value is expected to be 0, set ret_flg=1 and the |
13 | expected value = 0. If a return value is expected to be a |
14 | positive/negative value, set ret_flg=0, and set the expected value |
15 | = +1/-1. |
16 | There is inconsistensy between tst_strcoll() and tst_wcscoll()(it |
17 | has cmp_flg) for input data. I'll fix it. |
18 | |
19 | Assuming en_US to be en_US.ascii. (maybe, should be iso8859-1). |
20 | |
21 | |
22 | |
23 | ASCII CODE : A,B,C, ... , a, b, c, ... B,a:-1 a,B:+1 |
24 | DICTIONARY : A,a,B,b,C,c,.... a,B:-1 B,a:+1 */ |
25 | |
26 | TST_STRCOLL tst_strcoll_loc [] = { |
27 | { |
28 | { Tstrcoll, TST_LOC_de }, |
29 | { |
30 | { /*input.*/ { "ÄBCDEFG" , "ÄBCDEFG" }, /* #1 */ |
31 | /*expect*/ { 0,1,0, }, |
32 | }, |
33 | { /*input.*/ { "XX Ä XX" , "XX B XX" }, /* #2 */ |
34 | /*expect*/ { 0,0,-1, }, |
35 | }, |
36 | { /*input.*/ { "XX B XX" , "XX Ä XX" }, /* #3 */ |
37 | /*expect*/ { 0,0,+1, }, |
38 | }, |
39 | { /*input.*/ { "B" , "a" }, /* #4 */ |
40 | /*expect*/ { 0,0,+1, }, |
41 | }, |
42 | { /*input.*/ { "a" , "B" }, /* #5 */ |
43 | /*expect*/ { 0,0,-1, }, |
44 | }, |
45 | { /*input.*/ { "b" , "A" }, /* #6 */ |
46 | /*expect*/ { 0,0,+1, }, |
47 | }, |
48 | { /*input.*/ { "A" , "b" }, /* #7 */ |
49 | /*expect*/ { 0,0,-1, }, |
50 | }, |
51 | { /*input.*/ { "ä" , "B" }, /* #8 */ |
52 | /*expect*/ { 0,0,-1, }, |
53 | }, |
54 | { /*input.*/ { "B" , "ä" }, /* #9 */ |
55 | /*expect*/ { 0,0,+1, }, |
56 | }, |
57 | { .is_last = 1 } /* Last element. */ |
58 | } |
59 | }, |
60 | { |
61 | { Tstrcoll, TST_LOC_enUS }, |
62 | { |
63 | { /*input.*/ { "ABCDEFG" , "ABCDEFG" }, /* #1 */ |
64 | /*expect*/ { 0,1,0, }, |
65 | }, |
66 | { /*input.*/ { "XX a XX" , "XX B XX" }, /* #2 */ |
67 | /*expect*/ { 0,0,-1, }, |
68 | }, |
69 | { /*input.*/ { "XX B XX" , "XX a XX" }, /* #3 */ |
70 | /*expect*/ { 0,0,+1, }, |
71 | }, |
72 | { |
73 | /* <WAIVER> */ |
74 | /*input.*/ { "B" , "a" }, /* #4 */ |
75 | /* XXX We are not testing the C locale. */ |
76 | /*expect*/ { 0,0,+1, }, |
77 | }, |
78 | { |
79 | /* <WAIVER> */ |
80 | /*input.*/ { "a" , "B" }, /* #5 */ |
81 | /* XXX We are not testing the C locale. */ |
82 | /*expect*/ { 0,0,-1, }, |
83 | }, |
84 | { /*input.*/ { "b" , "A" }, /* #6 */ |
85 | /*expect*/ { 0,0,+1, }, |
86 | }, |
87 | { /*input.*/ { "A" , "b" }, /* #7 */ |
88 | /*expect*/ { 0,0,-1, }, |
89 | }, |
90 | #ifdef NO_WAIVER |
91 | /* XXX I do not yet know whether strcoll really should reject |
92 | characters outside the multibyte character range. */ |
93 | { |
94 | /* #8 */ /* <WAIVER> */ |
95 | /*input.*/ { "\244\242\244\244\244\246\244\250\244\252" , "ABCDEFG" }, |
96 | /*expect*/ { EINVAL,0,0, }, |
97 | }, |
98 | { |
99 | /* #9 */ /* <WAIVER> */ |
100 | /*input.*/ { "ABCZEFG" , "\244\242\244\244\244\246\244\250\244\252" }, |
101 | /*expect*/ { EINVAL,0,0, }, |
102 | }, |
103 | #endif |
104 | { .is_last = 1 } /* Last element. */ |
105 | } |
106 | }, |
107 | { |
108 | { Tstrcoll, TST_LOC_eucJP }, |
109 | { |
110 | { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252" , |
111 | "\244\242\244\244\244\246\244\250\244\252" }, /* #1 */ |
112 | /*expect*/ { 0,1,0, }, |
113 | }, |
114 | { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252" , |
115 | "\244\242\244\244\244\363\244\250\244\252" }, /* #2 */ |
116 | /*expect*/ { 0,0,-1, }, |
117 | }, |
118 | { /*input.*/ { "\244\242\244\244\244\363\244\250\244\252" , |
119 | "\244\242\244\244\244\246\244\250\244\252" }, /* #3 */ |
120 | /*expect*/ { 0,0,+1, }, |
121 | }, |
122 | { /*input.*/ { "B" , "a" }, /* #4 */ |
123 | /*expect*/ { 0,0,-1, }, |
124 | }, |
125 | { /*input.*/ { "a" , "B" }, /* #5 */ |
126 | /*expect*/ { 0,0,+1, }, |
127 | }, |
128 | { /*input.*/ { "b" , "A" }, /* #6 */ |
129 | /*expect*/ { 0,0,+1, }, |
130 | }, |
131 | { /*input.*/ { "A" , "b" }, /* #7 */ |
132 | /*expect*/ { 0,0,-1, }, |
133 | }, |
134 | #ifdef NO_WAIVER |
135 | /* XXX I do not yet know whether strcoll really should reject |
136 | characters outside the multibyte character range. */ |
137 | { |
138 | /* <WAIVER> */ |
139 | /*input.*/ { "\200\216\217" , "ABCDEFG" }, /* #8 */ |
140 | /*expect*/ { EINVAL,0,0, }, |
141 | }, |
142 | { |
143 | /* <WAIVER> */ |
144 | /*input.*/ { "ABCZEFG" , "\200\216\217" }, /* #9 */ |
145 | /*expect*/ { EINVAL,0,0, }, |
146 | }, |
147 | #endif |
148 | { .is_last = 1 } /* Last element. */ |
149 | } |
150 | }, |
151 | { |
152 | { Tstrcoll, TST_LOC_end } |
153 | } |
154 | }; |
155 | |