Commit this failed experiment
[gitmo/MooseX-Compiler.git] / t / constructor.t
1 use strict;
2 use warnings;
3
4 use lib 't/lib';
5
6 use Test::MooseX::Compiler qw( save_fragment );
7 use Test::More 0.88;
8
9 use MooseX::Compiler;
10
11 {
12     my $code = <<'EOF';
13 use Moose;
14
15 sub foo { 42 }
16 EOF
17
18     my $class = 'Test::Class1';
19     save_fragment( $class, $code );
20
21     my $compiler = MooseX::Compiler->new(
22         class => $class,
23     );
24
25     my $compiled = $compiler->compile_class();
26
27     like(
28         $compiled,
29         qr/sub new {.+\n}\n/s,
30         'compiled code has a constructor'
31     );
32
33     for my $module (qw( Scalar::Util Moose::Error::Util Carp )) {
34         like(
35             $compiled,
36             qr/^use \Q$module\E \(\);/m,
37             "compiled code loads $module"
38         );
39     }
40 }
41
42 {
43     my $code = <<'EOF';
44 use Moose;
45
46 has a1 => (
47     is      => 'ro',
48     isa     => 'Int',
49     default => 42,
50 );
51
52 sub foo { 42 }
53 EOF
54
55     my $class = 'Test::Class2';
56     save_fragment( $class, $code );
57
58     my $compiler = MooseX::Compiler->new(
59         class => $class,
60     );
61
62     my $compiled = $compiler->compile_class();
63 warn $compiled;
64
65     like(
66         $compiled,
67         qr/sub new {.+\n}\n/s,
68         'compiled code has a constructor'
69     );
70 }
71
72 done_testing();