4316e256cdc2524beb42c1e5e94e47bfaf92e864
[gitmo/Mouse.git] / t / 007-attributes.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 10;
5 use Test::Exception;
6
7 do {
8     package Class;
9     use Mouse;
10
11     has 'x';
12
13     has 'y' => (
14         is => 'ro',
15     );
16
17     has 'z' => (
18         is => 'rw',
19     );
20 };
21
22 ok(!Class->can('x'), "No accessor is injected if 'is' has no value");
23 can_ok('Class', 'y', 'z');
24
25 my $object = Class->new;
26
27 ok(!$object->can('x'), "No accessor is injected if 'is' has no value");
28 can_ok($object, 'y', 'z');
29
30 is($object->y, undef);
31
32 throws_ok {
33     $object->y(10);
34 } qr/Cannot assign a value to a read-only accessor/;
35
36 is($object->y, undef);
37
38 is($object->z, undef);
39 is($object->z(10), 10);
40 is($object->z, 10);
41