File: handle_moose.t

package info (click to toggle)
libmoo-perl 0.091011-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 476 kB
  • sloc: perl: 1,688; makefile: 4; sh: 1
file content (55 lines) | stat: -rw-r--r-- 1,121 bytes parent folder | download
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
use strictures 1;
use Test::Exception;

BEGIN { require "t/moo-accessors.t"; }

require Moose;

my $meta = Class::MOP::get_metaclass_by_name('Foo');

my $attr;

ok($attr = $meta->get_attribute('one'), 'Meta-attribute exists');
is($attr->get_read_method, 'one', 'Method name');
is($attr->get_read_method_ref->body, Foo->can('one'), 'Right method');

is(Foo->new(one => 1, THREE => 3)->one, 1, 'Accessor still works');

is(
  Foo->meta->get_attribute('one')->get_read_method, 'one',
  'Method name via ->meta'
);

$meta = Moose::Meta::Class->initialize('Spoon');

$meta->superclasses('Moose::Object');

Moose::Util::apply_all_roles($meta, 'Bar');

my $spoon = Spoon->new(four => 4);

is($spoon->four, 4, 'Role application ok');

{
   package MooRequiresFour;

   use Moo::Role;

   requires 'four';

   package MooRequiresGunDog;

   use Moo::Role;

   requires 'gun_dog';
}

lives_ok {
   Moose::Util::apply_all_roles($meta, 'MooRequiresFour');
} 'apply role with satisified requirement';

dies_ok {
   Moose::Util::apply_all_roles($meta, 'MooRequiresGunDog');
} 'apply role with unsatisified requirement';

done_testing;