X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F002-init.t;h=ef2f9497dd5e9efcb716d533965642b5b0d3e775;hb=7fc144c9cb90c2fc7f37fcf956f53bcefe369419;hp=2c2589756310fc5af7b4b915994f618fea138cf4;hpb=1de95613f2dfae86af1a8f548d66d1de842e7201;p=gitmo%2FMooseX-Singleton.git diff --git a/t/002-init.t b/t/002-init.t index 2c25897..ef2f949 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; +use Test::Fatal; my $i = 0; sub new_singleton_pkg { @@ -15,38 +16,53 @@ 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}, -); +like( exception { 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}, -); +like( exception { 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"); + like( exception { $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" ); + + like( exception { $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' ); } +done_testing;