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