Convert all tests to done_testing.
[gitmo/Moose.git] / t / 010_basics / 003_super_and_override.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Exception;
8
9
10 {
11     package Foo;
12     use Moose;
13
14     sub foo { 'Foo::foo' }
15     sub bar { 'Foo::bar' }
16     sub baz { 'Foo::baz' }
17
18     package Bar;
19     use Moose;
20
21     extends 'Foo';
22
23     override bar => sub { 'Bar::bar -> ' . super() };
24
25     package Baz;
26     use Moose;
27
28     extends 'Bar';
29
30     override bar => sub { 'Baz::bar -> ' . super() };
31     override baz => sub { 'Baz::baz -> ' . super() };
32
33     no Moose; # ensure super() still works after unimport
34 }
35
36 my $baz = Baz->new();
37 isa_ok($baz, 'Baz');
38 isa_ok($baz, 'Bar');
39 isa_ok($baz, 'Foo');
40
41 is($baz->foo(), 'Foo::foo', '... got the right value from &foo');
42 is($baz->bar(), 'Baz::bar -> Bar::bar -> Foo::bar', '... got the right value from &bar');
43 is($baz->baz(), 'Baz::baz -> Foo::baz', '... got the right value from &baz');
44
45 my $bar = Bar->new();
46 isa_ok($bar, 'Bar');
47 isa_ok($bar, 'Foo');
48
49 is($bar->foo(), 'Foo::foo', '... got the right value from &foo');
50 is($bar->bar(), 'Bar::bar -> Foo::bar', '... got the right value from &bar');
51 is($bar->baz(), 'Foo::baz', '... got the right value from &baz');
52
53 my $foo = Foo->new();
54 isa_ok($foo, 'Foo');
55
56 is($foo->foo(), 'Foo::foo', '... got the right value from &foo');
57 is($foo->bar(), 'Foo::bar', '... got the right value from &bar');
58 is($foo->baz(), 'Foo::baz', '... got the right value from &baz');
59
60 # some error cases
61
62 {
63     package Bling;
64     use Moose;
65
66     sub bling { 'Bling::bling' }
67
68     package Bling::Bling;
69     use Moose;
70
71     extends 'Bling';
72
73     sub bling { 'Bling::bling' }
74
75     ::dies_ok {
76         override 'bling' => sub {};
77     } '... cannot override a method which has a local equivalent';
78
79 }
80
81 done_testing;