X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F10-simple.t;h=adcbf34655015c895ac7f2f9ce3d25b5781585e9;hb=refs%2Ftags%2Fv0.14;hp=a5d091701154b54c8aa83487eb61a97ac17b0227;hpb=14f66d40970bef63105be046a109c1a32859a8a0;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/t/10-simple.t b/t/10-simple.t index a5d0917..adcbf34 100644 --- a/t/10-simple.t +++ b/t/10-simple.t @@ -3,34 +3,62 @@ use strict; use warnings; -use Test::More tests => 14; +use Test::More tests => 46; -use Variable::Magic qw/wizard gensig getsig cast dispell/; +use Variable::Magic qw/wizard gensig getsig cast dispell MGf_COPY MGf_DUP MGf_LOCAL VMG_UVAR/; + +my $args = 7; +++$args if MGf_COPY; +++$args if MGf_DUP; +++$args if MGf_LOCAL; +$args += 4 if VMG_UVAR; +for (0 .. 20) { + next if $_ == $args; + eval { Variable::Magic::_wizard(('hlagh') x $_) }; + ok($@, "_wizard called directly with a wrong number of arguments croaks ($@)"); +} + +for (0 .. 3) { + eval { wizard(('dong') x (2 * $_ + 1)) }; + ok($@, "wizard called with an odd number of arguments croaks ($@)"); +} my $sig = gensig; my $wiz = eval { wizard sig => $sig }; -ok(!$@, "wizard creation error ($@)"); -ok(defined $wiz, 'wizard is defined'); -ok(ref $wiz eq 'SCALAR', 'wizard is a scalar ref'); -ok($sig == getsig $wiz, 'wizard signature is correct'); +ok(!$@, "wizard doesn't croak ($@)"); +ok(defined $wiz, 'wizard is defined'); +is(ref $wiz, 'SCALAR', 'wizard is a scalar ref'); +is($sig, getsig $wiz, 'wizard signature is correct'); my $a = 1; my $res = eval { cast $a, $wiz }; -ok(!$@, "cast croaks ($@)"); -ok($res, 'cast invalid'); +ok(!$@, "cast doesn't croak ($@)"); +ok($res, 'cast is valid'); $res = eval { dispell $a, $wiz }; -ok(!$@, "dispell from wizard croaks ($@)"); -ok($res, 'dispell from wizard invalid'); +ok(!$@, "dispell from wizard doesn't croak ($@)"); +ok($res, 'dispell from wizard is valid'); $res = eval { cast $a, $wiz }; -ok(!$@, "re-cast croaks ($@)"); -ok($res, 're-cast invalid'); +ok(!$@, "re-cast doesn't croak ($@)"); +ok($res, 're-cast is valid'); -$res = eval { dispell $a, $wiz }; -ok(!$@, "re-dispell croaks ($@)"); -ok($res, 're-dispell invalid'); +$res = eval { dispell $a, gensig }; +ok(!$@, "re-dispell from wrong sig doesn't croak ($@)"); +ok(!defined($res), 're-dispell from wrong sig returns undef'); + +$res = eval { dispell $a, undef }; +ok($@, "re-dispell from undef croaks ($@)"); +ok(!defined($res), 're-dispell from undef returns undef'); + +$res = eval { dispell $a, $sig }; +ok(!$@, "re-dispell from good sig doesn't croak ($@)"); +ok($res, 're-dispell from good sig is valid'); + +$res = eval { dispell my $b, $wiz }; +ok(!$@, "dispell non-magic object doesn't croak ($@)"); +is($res, 0, 'dispell non-magic object returns 0'); $sig = gensig; { @@ -40,5 +68,9 @@ $sig = gensig; } my $c = 3; $res = eval { cast $c, $sig }; -ok(!$@, "cast from obsolete signature croaks ($@)"); +ok(!$@, "cast from obsolete signature doesn't croak ($@)"); ok(!defined($res), 'cast from obsolete signature returns undef'); + +$res = eval { cast $c, undef }; +ok($@, "cast from undef croaks ($@)"); +ok(!defined($res), 'cast from undef returns undef');