File: mixin2.t

package info (click to toggle)
libspiffy-perl 0.21-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 256 kB
  • ctags: 99
  • sloc: perl: 1,067; makefile: 50
file content (71 lines) | stat: -rw-r--r-- 1,182 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use lib 't', 'lib';
use Spiffy ();
package A;
sub _role_a { qw(a1 a2 a3) }
sub a1 {'a1' }
sub a2 {'a2' }
sub a3 {'a3' }
sub _role_A { qw(A1 A2 A3) }
sub A1 {'A1' }
sub A2 {'A2' }
sub A3 {'A3' }
sub _role_aA { qw(:a :A foo) }
sub foo {'foo'}

package BB;
use base 'A';

package X;
use mixin A => qw(:a !a2);

package X2;
use mixin BB => qw(:a !a2);

package X3;
use mixin A => qw(!:A A2);

package X4;
use mixin A => qw(:aA !a1 !a1 !A1);

package X5;
use mixin A => qw(!:a !:A);

package main;
use Test::More tests => 32;

ok(X->can('a1'));
ok(not X->can('a2'));
ok(X->can('a3'));
ok(not X->can('A1'));
is(X->a1, 'a1');
is(X->a3, 'a3');

ok(X2->can('a1'));
ok(not X2->can('a2'));
ok(X2->can('a3'));
ok(not X2->can('A1'));
is(X2->a1, 'a1');
is(X2->a3, 'a3');

ok(X3->can('a1'));
ok(X3->can('a2'));
ok(X3->can('a3'));
ok(not X3->can('A1'));
ok(X3->can('A2'));
ok(not X3->can('A3'));

ok(not X4->can('a1'));
ok(X4->can('a2'));
ok(X4->can('a3'));
ok(not X4->can('A1'));
ok(X4->can('A2'));
ok(X4->can('A3'));
ok(X4->can('foo'));

ok(not X5->can('a1'));
ok(not X5->can('a2'));
ok(not X5->can('a3'));
ok(not X5->can('A1'));
ok(not X5->can('A2'));
ok(not X5->can('A3'));
ok(X5->can('foo'));