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