my
(
$C
,
$M
,
$P
,
$N
,
$S
);END{
print
"1..$C\n$M"
;
print
"\nfailed: $N\n"
if
$N
}
sub
ok{
$C
++;
$M
.= (
$_
[0]||!
@_
)?
"ok $C\n"
:(
$N
++,
"not ok $C ("
.
((
caller
1)[1]||(
caller
0)[1]).
":"
.((
caller
1)[2]||(
caller
0)[2]).
")\n"
)}
sub
try
{
$P
=
qr/^$_[0]$/
}
sub
fail{ok(
$S
=
$_
[0]!~
$P
)}
sub
pass{ok(
$S
=
$_
[0]=~
$P
)}
ok;
try
$RE
{net}{MAC};
pass
'0:0:0:0:0:0'
;
pass
'1:1:1:1:1:1'
;
pass
'a:b:c:d:e:f'
;
pass
'a0:b0:c0:d0:e0:f0'
;
pass
'a0:b0:6:80:e0:f'
;
fail
'0:0:0:0:0'
;
fail
'1:1:1:1:1:1:1'
;
fail
'a:b:c:d:e:g'
;
fail
'a0-b0-c0-d0-e0-f0'
;
fail
'255:255:255:255:255:255'
;
try
$RE
{net}{MAC}{
hex
};
pass
'0:0:0:0:0:0'
;
pass
'1:1:1:1:1:1'
;
pass
'a:b:c:d:e:f'
;
pass
'a0:b0:c0:d0:e0:f0'
;
pass
'a0:b0:6:80:e0:f'
;
fail
'0:0:0:0:0'
;
fail
'1:1:1:1:1:1:1'
;
fail
'a:b:c:d:e:g'
;
fail
'a0-b0-c0-d0-e0-f0'
;
fail
'255:255:255:255:255:255'
;
try
$RE
{net}{MAC}{dec};
pass
'0:0:0:0:0:0'
;
pass
'1:1:1:1:1:1'
;
pass
'10:11:12:13:14:15'
;
pass
'255:255:255:56:255:255'
;
pass
'255:255:27:255:255:255'
;
pass
'255:255:255:255:255:30'
;
fail
'0:0:0:0:0'
;
fail
'1:1:1:1:1:1:1'
;
fail
'a:b:c:d:e:f'
;
fail
'0-0-0-0-0--0'
;
fail
'255:255:255:256:255:255:'
;
fail
'255:255:274:255:255:255:'
;
fail
'255:255:255:255:255:300:'
;
try
$RE
{net}{MAC}{
oct
};
pass
'0:0:0:0:0:0'
;
pass
'1:1:1:1:1:1'
;
pass
'10:11:12:13:14:15'
;
pass
'377:377:377:56:377:377'
;
pass
'377:377:27:377:377:377'
;
pass
'377:377:377:377:377:30'
;
fail
'0:0:0:0:0'
;
fail
'1:1:1:1:1:1:1'
;
fail
'1:1:1:1:8:1'
;
fail
'a:b:c:d:e:f'
;
fail
'0-0-0-0-0-0'
;
fail
'377:377:377:400:377:377'
;
fail
'377:377:379:377:377:377'
;
fail
'377:377:377:377:377:380'
;
try
$RE
{net}{MAC}{bin};
pass
'0:0:0:0:0:0'
;
pass
'1:1:1:1:1:1'
;
pass
'10:11:100:101:110:111'
;
pass
'11111111:11111111:11111111:1111111:11111111:11111111'
;
pass
'11111111:11111111:11111111:11111110:11111111:11111111'
;
pass
'11111111:11111111:11111111:11111111:11111111:11111111'
;
fail
'0:0:0:0:0'
;
fail
'1:1:1:1:1:1:1'
;
fail
'1:1:1:1:111111111:1'
;
fail
'a:b:c:d:e:f'
;
fail
'0-0-0-0-0-0'
;
try
$RE
{net}{MAC}{
hex
}{
-sep
=>
""
};
pass
'000000'
;
pass
'111111'
;
pass
'abcdef'
;
pass
'a0b0c0d0e0f'
;
pass
'a0b0680e0f'
;
fail
'cdefgh'
;
fail
'a0-b0-c0-d0-e0-f0'
;
fail
'255255255255255255'
;
try
$RE
{net}{MAC}{
hex
}{
-sep
=>
" "
};
pass
'0 0 0 0 0 0'
;
pass
'1 1 1 1 1 1'
;
pass
'a b c d e f'
;
pass
'a0 b0 c0 d0 e0 f0'
;
pass
'a0 b0 6 80 e0 f'
;
fail
'0 0 0 0 0'
;
fail
'1 1 1 1 1 1 1'
;
fail
'c d e f g h'
;
fail
'a0-b0-c0-d0-e0-f0'
;
fail
'255 255 255 255 255 255'
;
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC} -> subs (
'8:9:a:b:c:d'
);
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{
hex
} -> subs (
'8:9:a:b:c:d'
);
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{
hex
}{
-sep
=>
'-'
} -> subs (
'8-9-a-b-c-d'
);
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{
hex
}{
-sep
=>
''
} -> subs (
'89abcd'
);
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{dec} -> subs (
'8:9:10:11:12:13'
);
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{
oct
} -> subs (
'10:11:12:13:14:15'
);
unless
($] < 5.006) {
ok
'08:09:0a:0b:0c:0d'
eq
$RE
{net}{MAC}{bin} -> subs (
'1000:1001:1010:1011:1100:1101'
);
}
ok
'8:9:a:b:c:g'
eq
$RE
{net}{MAC}{
hex
} -> subs (
'8:9:a:b:c:g'
);