1# VOODOO LINE-NOISE
2my($C,$M,$P,$N,$S);END{print"1..$C\n$M";print"\nfailed: $N\n"if$N}
3sub ok{$C++; $M.= ($_[0]||!@_)?"ok $C\n":($N++,"not ok $C (".
4((caller 1)[1]||(caller 0)[1]).":".((caller 1)[2]||(caller 0)[2]).")\n")}
5sub try{$P=qr/^$_[0]$/}sub fail{ok($S=$_[0]!~$P)}sub pass{ok($S=$_[0]=~$P)}
6
7# LOAD
8
9use Regexp::Common;
10ok;
11
12# TEST BASE 10
13
14try $RE{num}{real}{-keep};
15
16pass 0;
17pass 1;
18pass 12;
19pass 1234567;
20pass 1.23456789;
21pass '+1';
22pass '+12';
23pass '+1234567.89';
24pass '-1';
25pass '-12.333333333333333333333333333333333333333';
26pass '-1234567';
27pass -1;
28pass -12;
29pass -1234567;
30pass 1.2;
31fail "a";
32fail "";
33fail "1a";
34fail "- 1234";
35fail "1,234,567";
36fail "12,345.6789";
37fail "1,2345,6789";
38fail "1.2345.6789";
39
40
41try $RE{num}{real}{-places => 2};
42
43pass 0;
44pass 1;
45pass 12;
46pass 1234567;
47fail 1.23456789;
48pass 1.23;
49pass '+1';
50pass '+12';
51pass '+1234567.89';
52pass '-1';
53fail '-12.333333333333333333333333333333333333333';
54pass '-1234567';
55pass -1;
56pass -12;
57pass -1234567;
58fail 1.2;
59fail "a";
60fail "";
61fail "1a";
62fail "- 1234";
63fail "1,234,567";
64fail "12,345.6789";
65fail "1,2345,6789";
66fail "1.2345.6789";
67
68try $RE{num}{real}{-places => '3,8'};
69
70pass 0;
71pass 1;
72pass 12;
73pass 1234567;
74pass 1.23456789;
75pass '+1';
76pass '+12';
77fail '+1234567.89';
78pass '-1';
79fail '-12.333333333333333333333333333333333333333';
80pass '-1234567';
81pass -1;
82pass -12;
83pass -1234567;
84fail 1.2;
85fail "a";
86fail "";
87fail "1a";
88fail "- 1234";
89fail "1,234,567";
90fail "12,345.6789";
91fail "1,2345,6789";
92fail "1.2345.6789";
93
94try $RE{num}{dec};
95
96pass 0;
97pass 1;
98pass 12;
99pass 1234567;
100pass 1.23456789;
101pass '+1';
102pass '+12';
103pass '+1234567.89';
104pass '-1';
105pass '-12.333333333333333333333333333333333333333';
106pass '-1234567';
107pass -1;
108pass -12;
109pass -1234567;
110pass 1.2;
111fail "a";
112fail "";
113fail "1a";
114fail "- 1234";
115fail "1,234,567";
116fail "12,345.6789";
117fail "1,2345,6789";
118fail "1.2345.6789";
119
120
121# TEST BASE 2
122
123try $RE{num}{real}{-base => 2};
124
125pass 0;
126pass 1;
127fail 12;
128fail 1234567;
129fail 1.23456789;
130pass '+1';
131fail '+12';
132pass '+101010';
133pass '+101010.0001010';
134fail '+1234567.89';
135pass '-1';
136pass -1;
137fail "a";
138fail "";
139fail "1a";
140fail "- 1010";
141fail "1,001,101";
142fail "1,010.1110";
143fail "1,0101,0011";
144fail "1.0011.0011";
145
146try $RE{num}{bin};
147
148pass 0;
149pass 1;
150fail 12;
151fail 1234567;
152fail 1.23456789;
153pass '+1';
154fail '+12';
155pass '+101010';
156pass '+101010.0001010';
157fail '+1234567.89';
158pass '-1';
159pass -1;
160fail "a";
161fail "";
162fail "1a";
163fail "- 1010";
164fail "1,001,101";
165fail "1,010.1110";
166fail "1,0101,0011";
167fail "1.0011.0011";
168
169
170# TEST BASE 8
171
172try $RE{num}{real}{-base => 8};
173
174pass 0;
175pass 1;
176pass 12;
177pass 1234567;
178fail 12345678;
179pass 1.23456;
180pass '+1';
181pass '+12';
182pass '+1234567.01';
183fail '+1234567.09';
184pass '-1';
185pass '-12.333333333333333333333333333333333333333';
186pass '-1234567';
187fail '-1234568';
188pass -1;
189pass -12;
190pass -1234567;
191fail -1234568;
192pass 1.2;
193fail "a";
194fail "";
195fail "1a";
196fail "- 1234";
197fail "1,234,567";
198fail "12,345.67";
199fail "12,345.68";
200fail "1,2345,5670";
201fail "1.234.567";
202
203try $RE{num}{oct};
204
205pass 0;
206pass 1;
207pass 12;
208pass 1234567;
209fail 12345678;
210pass 1.23456;
211pass '+1';
212pass '+12';
213pass '+1234567.01';
214fail '+1234567.09';
215pass '-1';
216pass '-12.333333333333333333333333333333333333333';
217pass '-1234567';
218fail '-1234568';
219pass -1;
220pass -12;
221pass -1234567;
222fail -1234568;
223pass 1.2;
224fail "a";
225fail "";
226fail "1a";
227fail "- 1234";
228fail "1,234,567";
229fail "12,345.67";
230fail "12,345.68";
231fail "1,2345,5670";
232fail "1.234.567";
233
234
235# TEST BASE 16
236
237try $RE{num}{real}{-base => 16};
238
239pass 0;
240pass 1;
241pass 12;
242pass '12A4C67';
243fail '12345678G';
244pass '1.23A56';
245fail '1.23Z56';
246pass '+1';
247pass '+12';
248pass '+1234567.01A';
249fail '+1234567.09Q';
250pass '-1';
251pass '-12.ddddddddddddddddddddddddddddddddddddddd';
252pass '-123B4567';
253fail '-123H4567';
254pass -1;
255pass -12;
256pass -1234567;
257pass 1.2;
258pass "a";
259fail "";
260pass "1a";
261pass "a1a";
262pass "DeadBeef";
263fail "LiveLamb";
264fail "- 1234";
265fail "1,abc,def";
266fail "12,345.67A";
267fail "12,3C5,68";
268fail "1,23C5,5670";
269fail "1.234.567";
270
271try $RE{num}{hex};
272
273pass 0;
274pass 1;
275pass 12;
276pass '12A4C67';
277fail '12345678G';
278pass '1.23A56';
279fail '1.23Z56';
280pass '+1';
281pass '+12';
282pass '+1234567.01A';
283fail '+1234567.09Q';
284pass '-1';
285pass '-12.ddddddddddddddddddddddddddddddddddddddd';
286pass '-123B4567';
287fail '-123H4567';
288pass -1;
289pass -12;
290pass -1234567;
291pass 1.2;
292pass "a";
293fail "";
294pass "1a";
295pass "a1a";
296pass "DeadBeef";
297fail "LiveLamb";
298fail "- 1234";
299fail "1,abc,def";
300fail "12,345.67A";
301fail "12,3C5,68";
302fail "1,23C5,5670";
303fail "1.234.567";
304
305
306# TEST BASE 34
307
308try $RE{num}{real}{-base => 34};
309
310pass 0;
311pass 1;
312pass 12;
313pass '12A4C67';
314pass '12345678G';
315pass '1.23A56';
316fail '1.23Z56';
317pass '+1';
318pass '+12';
319pass '+1234567.01A';
320pass '+1234567.09Q';
321pass '-1';
322pass '-12.ddddddddddddddddddddddddddddddddddddddd';
323pass '-123B4567';
324pass '-123H4567';
325pass -1;
326pass -12;
327pass -1234567;
328pass 1.2;
329pass "a";
330fail "";
331pass "1a";
332pass "a1a";
333pass "DeadBeef";
334pass "LiveLamb";
335fail "- 1234";
336fail "1,abc,def";
337fail "12,345.67A";
338fail "12,3C5,68";
339fail "1,23C5,5670";
340fail "1.234.567";
341
342
343# TEST BASE 1
344
345try $RE{num}{real}{-base => 1};
346
347pass 0;
348pass "00000000000";
349pass "00000.00000";
350fail "00,000,000,000";
351fail "00,000.000000";
352fail 1;
353fail 12;
354fail '12A4C67';
355fail '12345678G';
356
357
358try $RE{num}{real}{-base => 1}{"-sep$;,"};
359
360pass 0;
361fail "00000000000";
362fail "00000.00000";
363pass "00,000,000,000";
364pass "00,000.000000";
365fail 1;
366fail 12;
367fail '12A4C67';
368fail '12345678G';
369
370