test immutable too
[gitmo/MooseX-InsideOut.git] / t / sub.t
CommitLineData
64468268 1use strict;
2use warnings;
03663c54 3use Test::More tests => 56;
64468268 4
5use lib 't/lib';
6my @classes = qw(IO Array Hash Moose);
7
64468268 8for my $c (@classes) {
9 my $base = "InsideOut::Base$c";
10 my $sub = "InsideOut::Sub$c";
11 eval "require $base;1" or die $@;
12 eval "require $sub;1" or die $@;
13
14 my $obj = eval { $sub->new(base_foo => 17) };
15 is($@, "", "$c: no errors creating object");
16
55a9ddc1 17 my $get = eval { $obj->base_foo };
18 is($@, "", "$c: no errors getting attribute");
64468268 19 {
55a9ddc1 20 local $TODO = "don't clobber superclass' meta's create_instance"
21 if $c eq 'Moose';
64468268 22 is($get, 17, "$c: base_foo is 17");
64468268 23 }
55a9ddc1 24
25 my $set_base = eval {
26 $obj->base_foo(18);
27 $obj->base_foo;
28 };
29 is($@, "", "$c: no errors setting base class attribute");
30 is($set_base, 18, "$c: base_foo is 18");
31
64468268 32 my $set_sub = eval {
33 $obj->sub_foo(23);
34 $obj->sub_foo;
35 };
36 is($@, "", "$c: no errors setting attribute");
37 is($set_sub, 23, "$c: sub_foo is 23");
38
39# diag MooseX::InsideOut::Meta::Instance->__dump($obj);
40# use Data::Dumper;
41# diag Dumper($obj);
42
03663c54 43 $sub->meta->make_immutable, redo if $sub->meta->is_mutable;
64468268 44}