Commit | Line | Data |
38bf2a25 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | use File::Spec; |
6 | |
7 | use Class::MOP; |
8 | |
9 | BEGIN { |
10 | require_ok(File::Spec->catfile('examples', 'Perl6Attribute.pod')); |
11 | } |
12 | |
13 | { |
14 | package Foo; |
15 | |
16 | use metaclass; |
17 | |
18 | Foo->meta->add_attribute(Perl6Attribute->new('$.foo')); |
19 | Foo->meta->add_attribute(Perl6Attribute->new('@.bar')); |
20 | Foo->meta->add_attribute(Perl6Attribute->new('%.baz')); |
21 | |
22 | sub new { |
23 | my $class = shift; |
24 | $class->meta->new_object(@_); |
25 | } |
26 | } |
27 | |
28 | my $foo = Foo->new(); |
29 | isa_ok($foo, 'Foo'); |
30 | |
31 | can_ok($foo, 'foo'); |
32 | can_ok($foo, 'bar'); |
33 | can_ok($foo, 'baz'); |
34 | |
35 | is($foo->foo, undef, '... Foo.foo == undef'); |
36 | |
37 | $foo->foo(42); |
38 | is($foo->foo, 42, '... Foo.foo == 42'); |
39 | |
40 | is_deeply($foo->bar, [], '... Foo.bar == []'); |
41 | is_deeply($foo->baz, {}, '... Foo.baz == {}'); |
42 | |
43 | done_testing; |