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