X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F012_package_variables.t;h=bcf960ae6e9fec2fa6b45265690e278598130ba4;hb=5efa6a46982d17e1ff642e8b97673c6618fa7e6d;hp=8df066871d7dc930d017fabad8aaf6ec299d36e0;hpb=efd3d14c1cf03120dfd1ed7787f8050e55bb8319;p=gitmo%2FClass-MOP.git diff --git a/t/012_package_variables.t b/t/012_package_variables.t index 8df0668..bcf960a 100644 --- a/t/012_package_variables.t +++ b/t/012_package_variables.t @@ -1,10 +1,8 @@ -#!/usr/bin/perl - use strict; use warnings; -use Test::More tests => 86; -use Test::Exception; +use Test::More; +use Test::Fatal; use Class::MOP; @@ -15,7 +13,7 @@ use Class::MOP; =pod -This is the same test as 080_meta_package.t just here +This is the same test as 080_meta_package.t just here we call all the methods through Class::MOP::Class. =cut @@ -26,11 +24,11 @@ we call all the methods through Class::MOP::Class. ok(!defined($Foo::{foo}), '... the %foo slot has not been created yet'); ok(!Foo->meta->has_package_symbol('%foo'), '... the meta agrees'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('%foo' => { one => 1 }); -} '... created %Foo::foo successfully'; +}, undef, '... created %Foo::foo successfully' ); -# ... scalar should NOT be created here +# ... scalar should NOT be created here ok(!Foo->meta->has_package_symbol('$foo'), '... SCALAR shouldnt have been created too'); ok(!Foo->meta->has_package_symbol('@foo'), '... ARRAY shouldnt have been created too'); @@ -57,9 +55,9 @@ $foo->{two} = 2; { no strict 'refs'; is(\%{'Foo::foo'}, Foo->meta->get_package_symbol('%foo'), '... our %foo is the same as the metas'); - + ok(exists ${'Foo::foo'}{two}, '... our %foo was updated correctly'); - is(${'Foo::foo'}{two}, 2, '... our %foo was updated correctly'); + is(${'Foo::foo'}{two}, 2, '... our %foo was updated correctly'); } # ---------------------------------------------------------------------- @@ -67,14 +65,14 @@ $foo->{two} = 2; ok(!defined($Foo::{bar}), '... the @bar slot has not been created yet'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('@bar' => [ 1, 2, 3 ]); -} '... created @Foo::bar successfully'; +}, undef, '... created @Foo::bar successfully' ); ok(defined($Foo::{bar}), '... the @bar slot was created successfully'); ok(Foo->meta->has_package_symbol('@bar'), '... the meta agrees'); -# ... why does this not work ... +# ... why does this not work ... ok(!Foo->meta->has_package_symbol('$bar'), '... SCALAR shouldnt have been created too'); ok(!Foo->meta->has_package_symbol('%bar'), '... HASH shouldnt have been created too'); @@ -93,9 +91,9 @@ ok(!Foo->meta->has_package_symbol('&bar'), '... CODE shouldnt have been created ok(!defined($Foo::{baz}), '... the $baz slot has not been created yet'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('$baz' => 10); -} '... created $Foo::baz successfully'; +}, undef, '... created $Foo::baz successfully' ); ok(defined($Foo::{baz}), '... the $baz slot was created successfully'); ok(Foo->meta->has_package_symbol('$baz'), '... the meta agrees'); @@ -104,14 +102,14 @@ ok(!Foo->meta->has_package_symbol('@baz'), '... ARRAY shouldnt have been created ok(!Foo->meta->has_package_symbol('%baz'), '... HASH shouldnt have been created too'); ok(!Foo->meta->has_package_symbol('&baz'), '... CODE shouldnt have been created too'); -is(${Foo->meta->get_package_symbol('$baz')}, 10, '... got the right value back'); +is(${Foo->meta->get_package_symbol('$baz')}, 10, '... got the right value back'); { no strict 'refs'; ${'Foo::baz'} = 1; is(${'Foo::baz'}, 1, '... our $baz was assigned to correctly'); - is(${Foo->meta->get_package_symbol('$baz')}, 1, '... the meta agrees'); + is(${Foo->meta->get_package_symbol('$baz')}, 1, '... the meta agrees'); } # ---------------------------------------------------------------------- @@ -119,9 +117,9 @@ is(${Foo->meta->get_package_symbol('$baz')}, 10, '... got the right value back') ok(!defined($Foo::{funk}), '... the &funk slot has not been created yet'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('&funk' => sub { "Foo::funk" }); -} '... created &Foo::funk successfully'; +}, undef, '... created &Foo::funk successfully' ); ok(defined($Foo::{funk}), '... the &funk slot was created successfully'); ok(Foo->meta->has_package_symbol('&funk'), '... the meta agrees'); @@ -143,23 +141,23 @@ is(Foo->funk(), 'Foo::funk', '... got the right value from the function'); my $ARRAY = [ 1, 2, 3 ]; my $CODE = sub { "Foo::foo" }; -lives_ok { +is( exception { Foo->meta->add_package_symbol('@foo' => $ARRAY); -} '... created @Foo::foo successfully'; +}, undef, '... created @Foo::foo successfully' ); ok(Foo->meta->has_package_symbol('@foo'), '... the @foo slot was added successfully'); is(Foo->meta->get_package_symbol('@foo'), $ARRAY, '... got the right values for @Foo::foo'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('&foo' => $CODE); -} '... created &Foo::foo successfully'; +}, undef, '... created &Foo::foo successfully' ); ok(Foo->meta->has_package_symbol('&foo'), '... the meta agrees'); is(Foo->meta->get_package_symbol('&foo'), $CODE, '... got the right value for &Foo::foo'); -lives_ok { +is( exception { Foo->meta->add_package_symbol('$foo' => 'Foo::foo'); -} '... created $Foo::foo successfully'; +}, undef, '... created $Foo::foo successfully' ); ok(Foo->meta->has_package_symbol('$foo'), '... the meta agrees'); my $SCALAR = Foo->meta->get_package_symbol('$foo'); @@ -170,9 +168,9 @@ is($$SCALAR, 'Foo::foo', '... got the right scalar value back'); is(${'Foo::foo'}, 'Foo::foo', '... got the right value from the scalar'); } -lives_ok { +is( exception { Foo->meta->remove_package_symbol('%foo'); -} '... removed %Foo::foo successfully'; +}, undef, '... removed %Foo::foo successfully' ); ok(!Foo->meta->has_package_symbol('%foo'), '... the %foo slot was removed successfully'); ok(Foo->meta->has_package_symbol('@foo'), '... the @foo slot still exists'); @@ -186,14 +184,14 @@ is(Foo->meta->get_package_symbol('$foo'), $SCALAR, '... got the right value for { no strict 'refs'; ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully'); - ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); - ok(defined(*{"Foo::foo"}{CODE}), '... the &foo slot has NOT been removed'); - ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed'); + ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); + ok(defined(*{"Foo::foo"}{CODE}), '... the &foo slot has NOT been removed'); + ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed'); } -lives_ok { +is( exception { Foo->meta->remove_package_symbol('&foo'); -} '... removed &Foo::foo successfully'; +}, undef, '... removed &Foo::foo successfully' ); ok(!Foo->meta->has_package_symbol('&foo'), '... the &foo slot no longer exists'); @@ -205,15 +203,15 @@ is(Foo->meta->get_package_symbol('$foo'), $SCALAR, '... got the right value for { no strict 'refs'; - ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully'); - ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed'); - ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); - ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed'); + ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully'); + ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed'); + ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); + ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed'); } -lives_ok { +is( exception { Foo->meta->remove_package_symbol('$foo'); -} '... removed $Foo::foo successfully'; +}, undef, '... removed $Foo::foo successfully' ); ok(!Foo->meta->has_package_symbol('$foo'), '... the $foo slot no longer exists'); @@ -223,27 +221,10 @@ is(Foo->meta->get_package_symbol('@foo'), $ARRAY, '... got the right values for { no strict 'refs'; - ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully'); - ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed'); - ok(!defined(${"Foo::foo"}), '... the $foo slot has now been removed'); - ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); + ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully'); + ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed'); + ok(!defined(${"Foo::foo"}), '... the $foo slot has now been removed'); + ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed'); } - -# check some errors - -dies_ok { - Foo->meta->add_package_symbol('bar'); -} '... no sigil for bar'; - -dies_ok { - Foo->meta->remove_package_symbol('bar'); -} '... no sigil for bar'; - -dies_ok { - Foo->meta->get_package_symbol('bar'); -} '... no sigil for bar'; - -dies_ok { - Foo->meta->has_package_symbol('bar'); -} '... no sigil for bar'; +done_testing;