Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 300_immutable / 012_default_values.t
1 #!/usr/bin/perl
2 # This is automatically generated by author/import-moose-test.pl.
3 # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4 use t::lib::MooseCompat;
5
6 use strict;
7 use warnings;
8
9 use Test::More;
10 use Test::Exception;
11
12 {
13
14     package Foo;
15     use Mouse;
16
17     has 'foo' => ( is => 'rw', default => q{'} );
18     has 'bar' => ( is => 'rw', default => q{\\} );
19     has 'baz' => ( is => 'rw', default => q{"} );
20     has 'buz' => ( is => 'rw', default => q{"'\\} );
21     has 'faz' => ( is => 'rw', default => qq{\0} );
22
23     ::lives_ok {  __PACKAGE__->meta->make_immutable }
24         'no errors making a package immutable when it has default values that could break quoting';
25 }
26
27 my $foo = Foo->new;
28 is( $foo->foo, q{'},
29     'default value for foo attr' );
30 is( $foo->bar, q{\\},
31     'default value for bar attr' );
32 is( $foo->baz, q{"},
33     'default value for baz attr' );
34 is( $foo->buz, q{"'\\},
35     'default value for buz attr' );
36 is( $foo->faz, qq{\0},
37     'default value for faz attr' );
38
39
40 # Lazy attrs were never broken, but it doesn't hurt to test that they
41 # won't be broken by any future changes.
42 {
43
44     package Bar;
45     use Mouse;
46
47     has 'foo' => ( is => 'rw', default => q{'}, lazy => 1 );
48     has 'bar' => ( is => 'rw', default => q{\\}, lazy => 1 );
49     has 'baz' => ( is => 'rw', default => q{"}, lazy => 1 );
50     has 'buz' => ( is => 'rw', default => q{"'\\}, lazy => 1 );
51     has 'faz' => ( is => 'rw', default => qq{\0}, lazy => 1 );
52
53     ::lives_ok {  __PACKAGE__->meta->make_immutable }
54         'no errors making a package immutable when it has lazy default values that could break quoting';
55 }
56
57 my $bar = Bar->new;
58 is( $bar->foo, q{'},
59     'default value for foo attr' );
60 is( $bar->bar, q{\\},
61     'default value for bar attr' );
62 is( $bar->baz, q{"},
63     'default value for baz attr' );
64 is( $bar->buz, q{"'\\},
65     'default value for buz attr' );
66 is( $bar->faz, qq{\0},
67     'default value for faz attr' );
68
69 done_testing;