Import tests for attribute from Mouse's tests
[gitmo/Mouse.git] / t / 020_attributes / failing / 029_accessor_context.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Test::More tests => 14;
6 use Test::Exception;
7
8 lives_ok {
9     package My::Class;
10     use Mouse;
11
12     has s_rw => (
13         is => 'rw',
14     );
15
16     has s_ro => (
17         is => 'ro',
18     );
19
20     has a_rw => (
21         is  => 'rw',
22         isa => 'ArrayRef',
23
24         auto_deref => 1,
25     );
26
27     has a_ro => (
28         is  => 'ro',
29         isa => 'ArrayRef',
30
31         auto_deref => 1,
32     );
33
34     has h_rw => (
35         is  => 'rw',
36         isa => 'HashRef',
37
38         auto_deref => 1,
39     );
40
41     has h_ro => (
42         is  => 'ro',
43         isa => 'HashRef',
44
45         auto_deref => 1,
46     );
47 } 'class definition';
48
49 lives_ok {
50     my $o = My::Class->new();
51
52     is_deeply [scalar $o->s_rw], [undef], 'uninitialized scalar attribute/rw in scalar context';
53     is_deeply [$o->s_rw],        [undef], 'uninitialized scalar attribute/rw in list context';
54     is_deeply [scalar $o->s_ro], [undef], 'uninitialized scalar attribute/ro in scalar context';
55     is_deeply [$o->s_ro],        [undef], 'uninitialized scalar attribute/ro in list context';
56
57
58     is_deeply [scalar $o->a_rw], [undef], 'uninitialized ArrayRef attribute/rw in scalar context';
59     is_deeply [$o->a_rw],        [],      'uninitialized ArrayRef attribute/rw in list context';
60     is_deeply [scalar $o->a_ro], [undef], 'uninitialized ArrayRef attribute/ro in scalar context';
61     is_deeply [$o->a_ro],        [],      'uninitialized ArrayRef attribute/ro in list context';
62
63     is_deeply [scalar $o->h_rw], [undef], 'uninitialized HashRef attribute/rw in scalar context';
64     is_deeply [$o->h_rw],        [],      'uninitialized HashRef attribute/rw in list context';
65     is_deeply [scalar $o->h_ro], [undef], 'uninitialized HashRef attribute/ro in scalar context';
66     is_deeply [$o->h_ro],        [],      'uninitialized HashRef attribute/ro in list context';
67
68 } 'testing';