File: tests.erl

package info (click to toggle)
erlang-p1-stringprep 1.0.30-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 648 kB
  • sloc: tcl: 892; cpp: 442; erlang: 348; makefile: 34
file content (299 lines) | stat: -rw-r--r-- 10,908 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
-module(tests).

-include_lib("eunit/include/eunit.hrl").
-compile(export_all).

application_start_test_() ->
    [ ?_assertMatch({ok, _},
                    application:ensure_all_started(stringprep)),
      ?_assertEqual(ok, stringprep:start()) ].

application_start_stop_start_test_() ->
    [ ?_assertEqual({ok, []},
                    application:ensure_all_started(stringprep)),
      ?_assertEqual(ok, application:stop(stringprep)),
      ?_assertEqual(ok, stringprep:start()) ].

badarg_test() ->
    ?assertError(badarg, stringprep:nodeprep(foo)),
    ?assertError(badarg, stringprep:nameprep(123)),
    ?assertError(badarg, stringprep:resourceprep({foo, bar})),
    ?assertError(badarg, stringprep:tolower(fun() -> ok end)).

empty_string_test() ->
    ?assertEqual(<<>>, stringprep:nodeprep(<<>>)),
    ?assertEqual(<<>>, stringprep:nameprep(<<>>)),
    ?assertEqual(<<>>, stringprep:resourceprep(<<>>)),
    ?assertEqual(<<>>, stringprep:tolower(<<>>)).

'@_nodeprep_test'() ->
    ?assertEqual(error, stringprep:nodeprep(<<"@">>)).

tolower_test() ->
    ?assertEqual(<<"abcd">>, stringprep:tolower(<<"AbCd">>)).

resourceprep_test() ->
    ?assertEqual(
       <<95,194,183,194,176,226,137,136,88,46,209,130,208,189,206,
         181,32,208,188,97,206,183,32,195,143,197,139,32,196,174,
         209,143,207,131,206,174,32,208,188,97,115,208,186,46,88,
         226,137,136,194,176,194,183,95>>,
       stringprep:resourceprep(
         <<95,194,183,194,176,226,137,136,88,46,209,130,208,189,
           206,181,32,208,188,194,170,206,183,32,195,143,197,139,
           32,196,174,209,143,207,131,206,174,32,208,188,194,170,
           115,208,186,46,88,226,137,136,194,176,194,183,95>>)).

nameprep_fail_test() ->
    ?assertEqual(error,
                 stringprep:nameprep(<<217,173,65,112,107,97,119,97,217,173>>)).

vector_test() ->
    Cases = [
             {<<"foo", 16#C2, 16#AD, 16#CD, 16#8F, 16#E1, 16#A0, 16#86, 16#E1, 16#A0, 16#8B,
                "bar", 16#E2, 16#80, 16#8B, 16#E2, 16#81, 16#A0, "baz", 16#EF, 16#B8, 16#80,
                16#EF, 16#B8, 16#88, 16#EF, 16#B8, 16#8F, 16#EF, 16#BB, 16#BF>>,
              <<"foobarbaz">>,
              <<"foobarbaz">>,
              <<"foobarbaz">>,
              <<"foobarbaz">>},
             {<<"CAFE">>,
              <<"cafe">>,
              <<"cafe">>,
              <<"CAFE">>,
              <<"cafe">>},
             {<<16#C3, 16#9F>>,
              <<"ss">>,
              <<"ss">>,
              <<16#C3, 16#9F>>,
              <<"ss">>},
             {<<16#C4, 16#B0>>,
              <<"i", 16#CC, 16#87>>,
              <<"i", 16#CC, 16#87>>,
              <<16#C4, 16#B0>>,
              <<"i", 16#CC, 16#87>>},
             {<<16#C5, 16#83, 16#CD, 16#BA>>,
              <<16#C5, 16#84, " ", 16#CE, 16#B9>>,
              error,
              <<16#C5, 16#83, " ", 16#CD, 16#85>>,
              <<16#C5, 16#84, " ", 16#CE, 16#B9>>},
             {<<16#E2, 16#84, 16#A1, 16#E3, 16#8F, 16#86, 16#F0, 16#9D, 16#9E, 16#BB>>,
              <<"telC", 16#E2, 16#88, 16#95, "kg", 16#CF, 16#83>>,
              <<"telC", 16#E2, 16#88, 16#95, "kg", 16#CF, 16#83>>,
              <<"TELC", 16#E2, 16#88, 16#95, "kg", 16#CF, 16#82>>,
              <<"telC", 16#E2, 16#88, 16#95, "kg", 16#CF, 16#83>>},
             {<<"j", 16#CC, 16#8C, 16#C2, 16#A0, 16#C2, 16#AA>>,
              <<16#C7, 16#B0, " a">>,
              error,
              <<16#C7, 16#B0, " a">>,
              <<16#C7, 16#B0, " a">>},
             {<<16#E1, 16#BE, 16#B7>>,
              <<16#E1, 16#BE, 16#B6, 16#CE, 16#B9>>,
              <<16#E1, 16#BE, 16#B6, 16#CE, 16#B9>>,
              <<16#E1, 16#BE, 16#B7>>,
              <<16#E1, 16#BE, 16#B6, 16#CE, 16#B9>>},
             {<<16#C7, 16#F0>>,
              error,
              error,
              error,
              error},
             {<<16#CE, 16#90>>,
              <<16#CE, 16#90>>,
              <<16#CE, 16#90>>,
              <<16#CE, 16#90>>,
              <<16#CE, 16#90>>},
             {<<16#CE, 16#B0>>,
              <<16#CE, 16#B0>>,
              <<16#CE, 16#B0>>,
              <<16#CE, 16#B0>>,
              <<16#CE, 16#B0>>},
             {<<16#E1, 16#BA, 16#96>>,
              <<16#E1, 16#BA, 16#96>>,
              <<16#E1, 16#BA, 16#96>>,
              <<16#E1, 16#BA, 16#96>>,
              <<16#E1, 16#BA, 16#96>>},
             {<<16#E1, 16#BD, 16#96>>,
              <<16#E1, 16#BD, 16#96>>,
              <<16#E1, 16#BD, 16#96>>,
              <<16#E1, 16#BD, 16#96>>,
              <<16#E1, 16#BD, 16#96>>},
             {<<" ">>,
              <<" ">>,
              error,
              <<" ">>,
              <<" ">>},
             {<<16#C2, 16#A0>>,
              <<" ">>,
              error,
              <<" ">>,
              <<" ">>},
             {<<16#E1, 16#9A, 16#80>>,
              error,
              error,
              error,
              error},
             {<<16#E2, 16#80, 16#80>>,
              <<" ">>,
              error,
              <<" ">>,
              <<" ">>},
             {<<16#E2, 16#80, 16#8B>>,
              <<>>,
              <<>>,
              <<>>,
              <<>>},
             {<<16#E3, 16#80, 16#80>>,
              <<" ">>,
              error,
              <<" ">>,
              <<" ">>},
             {<<16#10, 16#7f>>,
              <<16#10, 16#7f>>,
              error,
              error,
              <<16#10, 16#7f>>},
             {<<16#C2, 16#85>>,
              error,
              error,
              error,
              error},
             {<<16#E1, 16#A0, 16#8E>>,
              error,
              error,
              error,
              error},
             {<<16#EF, 16#BB, 16#BF>>,
              <<>>,
              <<>>,
              <<>>,
              <<>>},
             {<<16#F0, 16#9D, 16#85, 16#B5>>,
              error,
              error,
              error,
              error},
             {<<16#EF, 16#84, 16#A3>>,
              error,
              error,
              error,
              error},
             {<<16#F3, 16#B1, 16#88, 16#B4>>,
              error,
              error,
              error,
              error},
             {<<16#F4, 16#8F, 16#88, 16#B4>>,
              error,
              error,
              error,
              error},
             {<<16#F2, 16#8F, 16#BF, 16#BE>>,
              error,
              error,
              error,
              error},
             {<<16#F4, 16#8F, 16#BF, 16#BF>>,
              error,
              error,
              error,
              error},
             {<<16#ED, 16#BD, 16#82>>,
              error,
              error,
              error,
              error},
             {<<16#EF, 16#BF, 16#BD>>,
              error,
              error,
              error,
              error},
             {<<16#E2, 16#BF, 16#B5>>,
              error,
              error,
              error,
              error},
             {<<16#CD, 16#81>>,
              <<16#CC, 16#81>>,
              <<16#CC, 16#81>>,
              <<16#CC, 16#81>>,
              <<16#CC, 16#81>>},
             {<<16#E2, 16#80, 16#8E>>,
              error,
              error,
              error,
              error},
             {<<16#E2, 16#80, 16#AA>>,
              error,
              error,
              error,
              error},
             {<<16#F3, 16#A0, 16#80, 16#81>>,
              error,
              error,
              error,
              error},
             {<<16#F3, 16#A0, 16#81, 16#82>>,
              error,
              error,
              error,
              error},
             {<<"foo", 16#D6, 16#BE, "bar">>,
              error,
              error,
              error,
              error},
             {<<"foo", 16#EF, 16#B5, 16#90, "bar">>,
              error,
              error,
              error,
              error},
             {<<"foo", 16#EF, 16#B9, 16#B6, "bar">>,
              <<"foo ", 16#D9, 16#8E, "bar">>,
              error,
              <<"foo ", 16#D9, 16#8E, "bar">>,
              <<"foo ", 16#D9, 16#8E, "bar">>},
             {<<16#D8, 16#A7, "1">>,
              error,
              error,
              error,
              error},
             {<<16#D8, 16#A7, "1", 16#D8, 16#A8>>,
              <<16#D8, 16#A7, "1", 16#D8, 16#A8>>,
              <<16#D8, 16#A7, "1", 16#D8, 16#A8>>,
              <<16#D8, 16#A7, "1", 16#D8, 16#A8>>,
              <<16#D8, 16#A7, "1", 16#D8, 16#A8>>},
             {<<16#F3, 16#A0, 16#80, 16#82>>,
              error,
              error,
              error,
              error},
             {<<"X", 16#C2, 16#AD, 16#C3, 16#9F, 16#C4, 16#B0, 16#E2, 16#84, 16#A1, "j", 16#CC, 16#8C,
                16#C2, 16#A0, 16#C2, 16#AA, 16#CE, 16#B0, 16#E2, 16#80, 16#80>>,
              <<"xssi", 16#CC, 16#87, "tel", 16#C7, 16#B0, " a", 16#CE, 16#B0, " ">>,
              error,
              <<"X", 16#C3, 16#9F, 16#C4, 16#B0, "TEL", 16#C7, 16#B0, " a", 16#CE, 16#B0, " ">>,
              <<"xssi", 16#CC, 16#87, "tel", 16#C7, 16#B0, " a", 16#CE, 16#B0, " ">>},
             {<<"X", 16#C3, 16#9F, 16#E3, 16#8C, 16#96, 16#C4, 16#B0, 16#E2, 16#84, 16#A1, 16#E2, 16#92,
                16#9F, 16#E3, 16#8C, 16#80>>,
              <<"xss", 16#E3, 16#82, 16#AD, 16#E3, 16#83, 16#AD, 16#E3, 16#83, 16#A1, 16#E3, 16#83, 16#BC,
                16#E3, 16#83, 16#88, 16#E3, 16#83, 16#AB, "i", 16#CC, 16#87, "tel(d)", 16#E3, 16#82, 16#A2,
                16#E3, 16#83, 16#91, 16#E3, 16#83, 16#BC, 16#E3, 16#83, 16#88>>,
              <<"xss", 16#E3, 16#82, 16#AD, 16#E3, 16#83, 16#AD, 16#E3, 16#83, 16#A1, 16#E3, 16#83, 16#BC,
                16#E3, 16#83, 16#88, 16#E3, 16#83, 16#AB, "i", 16#CC, 16#87, "tel(d)", 16#E3, 16#82, 16#A2,
                16#E3, 16#83, 16#91, 16#E3, 16#83, 16#BC, 16#E3, 16#83, 16#88>>,
              <<"X", 16#C3, 16#9F, 16#E3, 16#82, 16#AD, 16#E3, 16#83, 16#AD, 16#E3, 16#83, 16#A1, 16#E3,
                16#83, 16#BC, 16#E3, 16#83, 16#88, 16#E3, 16#83, 16#AB, 16#C4, 16#B0, "TEL(d)", 16#E3, 16#82,
                16#A2, 16#E3, 16#83, 16#91, 16#E3, 16#83, 16#BC, 16#E3, 16#83, 16#88>>,
              <<"xss", 16#E3, 16#82, 16#AD, 16#E3, 16#83, 16#AD, 16#E3, 16#83, 16#A1, 16#E3, 16#83, 16#BC,
                16#E3, 16#83, 16#88, 16#E3, 16#83, 16#AB, "i", 16#CC, 16#87, "tel(d)", 16#E3, 16#82, 16#A2,
                16#E3, 16#83, 16#91, 16#E3, 16#83, 16#BC, 16#E3, 16#83, 16#88>>}
            ],
    lists:foreach(fun({Arg, Name, Node, Resource, Lower}) ->
                          ?assertEqual(Name, stringprep:nameprep(Arg)),
                          ?assertEqual(Node, stringprep:nodeprep(Arg)),
                          ?assertEqual(Resource, stringprep:resourceprep(Arg)),
                          ?assertEqual(Lower, stringprep:tolower(Arg))
                  end, Cases).

application_stop_test() ->
    ?assertEqual(ok, application:stop(stringprep)).