X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F800_shikabased%2F003-make_immutable.t;fp=t%2F800_shikabased%2F003-make_immutable.t;h=0000000000000000000000000000000000000000;hb=4786262b51c7c709fa9fb9d4e64235ad385d96f5;hp=d1539b4eb4a74acec0fc0b6c86139b2f63ce038f;hpb=478cab2c569b5da1c9ba0883de7a516d931b8a72;p=gitmo%2FMouse.git diff --git a/t/800_shikabased/003-make_immutable.t b/t/800_shikabased/003-make_immutable.t deleted file mode 100644 index d1539b4..0000000 --- a/t/800_shikabased/003-make_immutable.t +++ /dev/null @@ -1,85 +0,0 @@ -use strict; -use warnings; -use Test::More tests => 18; -use Test::Exception; -use Scalar::Util qw/isweak/; - -{ - package Headers; - use Mouse; - has data => ( - is => 'rw', - isa => 'Str', - ); - no Mouse; -} - -{ - package Types; - use MouseX::Types -declare => [qw/Foo/]; - use MouseX::Types::Mouse 'HashRef'; - class_type Foo, { class => 'Headers' }; - coerce Foo, - from HashRef, - via { - Headers->new($_); - }; -} - - -&main; exit; - -sub construct { - my $class = shift; - eval <<"..."; - package $class; - use Mouse; - BEGIN { Types->import('Foo') } - has bone => ( - is => 'rw', - required => 1, - ); - has foo => ( - is => 'rw', - isa => Foo, - coerce => 1, - ); - has weak_foo => ( - is => 'rw', - weak_ref => 1, - ); - has trigger_foo => ( - is => 'rw', - trigger => sub { \$_[0]->bone('eat') }, - ); - sub BUILD { main::ok "calling BUILD in SoftDog" } - no Mouse; -... - die $@ if $@; -} - -sub test { - my $class = shift; - lives_ok { $class->new(bone => 'moo') } "$class new"; - throws_ok { $class->new() } qr/\QAttribute (bone) is required/; - is($class->new(bone => 'moo', foo => { data => 3 })->foo->data, 3); - - my $foo = Headers->new(); - ok(Scalar::Util::isweak($class->new(bone => 'moo', weak_foo => $foo)->{weak_foo})); - - { - my $o = $class->new(bone => 'moo'); - $o->trigger_foo($foo); - is($o->bone, 'eat'); - } -} - -sub main { - construct('SoftDog'); - test('SoftDog'); - - construct('HardDog'); - HardDog->meta->make_immutable; - test('HardDog'); -} -