Commit | Line | Data |
b2b106d7 |
1 | #!/usr/bin/perl |
2 | use strict; |
3 | use warnings; |
4 | |
5 | use Test::More tests => 2; |
6 | use Test::Exception; |
7 | |
8 | my @phonograph; |
9 | { |
10 | package Duck; |
11 | use Mouse; |
12 | |
13 | sub walk { |
14 | push @phonograph, 'footsteps', |
15 | } |
16 | |
17 | sub quack { |
18 | push @phonograph, 'quack'; |
19 | } |
20 | |
21 | package Swan; |
22 | use Mouse; |
23 | |
24 | sub honk { |
25 | push @phonograph, 'honk'; |
26 | } |
27 | |
28 | package DucktypeTest; |
29 | use Mouse; |
30 | use Mouse::Util::TypeConstraints; |
31 | |
32 | my $ducktype = duck_type 'DuckType' => qw(walk quack); |
33 | |
34 | has duck => ( |
35 | isa => $ducktype, |
36 | handles => $ducktype, |
37 | ); |
38 | } |
39 | |
40 | my $t = DucktypeTest->new(duck => Duck->new); |
41 | $t->quack; |
42 | is_deeply([splice @phonograph], ['quack']); |
43 | |
44 | $t->walk; |
45 | is_deeply([splice @phonograph], ['footsteps']); |
46 | |