X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F002-init.t;h=04276944bbeb33e1829173454cbb6265446d99cb;hb=eb98d2ddaf2f2e01386719cd8fba9bb432bcd87a;hp=2c2589756310fc5af7b4b915994f618fea138cf4;hpb=1de95613f2dfae86af1a8f548d66d1de842e7201;p=gitmo%2FMooseX-Singleton.git diff --git a/t/002-init.t b/t/002-init.t index 2c25897..0427694 100644 --- a/t/002-init.t +++ b/t/002-init.t @@ -1,6 +1,7 @@ use strict; use warnings; -use Test::More tests => 8; +use Test::More tests => 11; +use Test::Exception; my $i = 0; sub new_singleton_pkg { @@ -15,38 +16,51 @@ sub new_singleton_pkg { return $pkg_name; } -eval { new_singleton_pkg()->instance; }; -like( - $@, - qr/\QAttribute (number) is required/, - q{can't get the Singleton if requires attrs and we don't provide them}, -); +throws_ok { new_singleton_pkg()->instance } + qr/\QAttribute (number) is required/, + q{can't get the Singleton if requires attrs and we don't provide them}; -eval { new_singleton_pkg()->string; }; -like( - $@, - qr/\QAttribute (number) is required/, - q{can't call any Singleton attr reader if Singleton can't be inited}, -); +throws_ok { new_singleton_pkg()->string } + qr/\QAttribute (number) is required/, + q{can't call any Singleton attr reader if Singleton can't be inited}; for my $pkg (new_singleton_pkg) { - my $mst = $pkg->new(number => 5); - isa_ok($mst, $pkg); + my $mst = $pkg->new( number => 5 ); + isa_ok( $mst, $pkg ); - is($mst->number, 5, "the instance has the given attribute value"); + is( $mst->number, 5, "the instance has the given attribute value" ); - is( - $pkg->number, - 5, - "the class method, called directly, returns the given attribute value" - ); + is( + $pkg->number, + 5, + "the class method, called directly, returns the given attribute value" + ); - eval { $pkg->new(number => 3) }; - ok($@, "can't make new singleton with conflicting attributes"); + throws_ok { $pkg->new( number => 3 ) } + qr/already/, + "can't make new singleton with conflicting attributes"; - my $second = eval { $pkg->new }; - ok(!$@, "...but a second ->new without args is okay"); + my $second = eval { $pkg->new }; + ok( !$@, "...but a second ->new without args is okay" ); - is($second->number, 5, "...we get the originally inited number from it"); + is( $second->number, 5, + "...we get the originally inited number from it" ); + + throws_ok { $pkg->initialize } + qr/already/, + "...but ->initialize() is still an error"; } +{ + package Single; + + use MooseX::Singleton; + + has foo => ( is => 'ro' ); +} + +{ + Single->initialize( foo => 2 ); + ok( Single->new, 'can call ->new without any args' ); + ok( Single->instance, 'can call ->instance without any args' ); +}