foo
[gitmo/Moose.git] / t / 300_Moose_Compiler_basic.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 25;
7 use Test::Exception;
8 use Test::LongString;
9
10 BEGIN {
11     use_ok('Moose');           
12     use_ok('Moose::Compiler');     
13     use_ok('Moose::Compiler::Moose');
14     use_ok('Moose::Compiler::Perl6');    
15     use_ok('Moose::Compiler::Perl5');        
16 }
17
18 my $c = Moose::Compiler->new(engine => Moose::Compiler::Moose->new);
19 isa_ok($c, 'Moose::Compiler');
20
21 can_ok($c, 'engine');
22 isa_ok($c->engine, 'Moose::Compiler::Moose');
23 ok($c->engine->does('Moose::Compiler::Engine'), '... $c->engine does Moose::Compilter::Engine');
24
25 {
26     package Foo;
27     use Moose;
28     our $VERSION = '1.0';
29     
30     has 'bar' => (is => 'rw', isa => 'Bar');
31     has 'baz' => (is => 'ro', does => 'Baz');
32 }
33
34 can_ok($c, 'compile_class');
35
36 {
37     my $compiled;
38     lives_ok {
39         $compiled = $c->compile_class(Foo->meta);
40     } '... we compiled the class successfully';
41     ok(defined $compiled, '... we go something');
42     is_string($compiled,
43 q[package Foo;
44 use Moose;
45
46 our $VERSION = '1.0';
47
48 has 'bar' => (is => 'rw', isa => 'Bar');
49 has 'baz' => (is => 'ro', does => 'Baz');
50
51 1;
52
53 __END__
54 ],
55     '... got the right compiled source');
56 }
57
58 lives_ok {
59     $c->engine(Moose::Compiler::Perl6->new);
60 } '... swapped engines successfully';
61 isa_ok($c->engine, 'Moose::Compiler::Perl6');
62 ok($c->engine->does('Moose::Compiler::Engine'), '... $c->engine does Moose::Compilter::Engine');
63
64 {
65     my $compiled;
66     lives_ok {
67         $compiled = $c->compile_class(Foo->meta);
68     } '... we compiled the class successfully';
69     ok(defined $compiled, '... we go something');
70     is_string($compiled,
71 q[class Foo-1.0 {
72
73     has Bar $bar is rw;
74     has $baz is ro does Baz;
75
76 }
77 ],
78     '... got the right compiled source');
79 }
80
81 lives_ok {
82     $c->engine(Moose::Compiler::Perl5->new);
83 } '... swapped engines successfully';
84 isa_ok($c->engine, 'Moose::Compiler::Perl5');
85 ok($c->engine->does('Moose::Compiler::Engine'), '... $c->engine does Moose::Compilter::Engine');
86
87 {
88     my $compiled;
89     lives_ok {
90         $compiled = $c->compile_class(Foo->meta);
91     } '... we compiled the class successfully';
92     ok(defined $compiled, '... we go something');
93     is_string($compiled,
94 q[package Foo;
95
96 use strict;
97 use warnings;
98
99 our $VERSION = '1.0';
100
101 sub new {
102     my ($class, %params) = @_;
103     my %proto = (
104         'bar' => undef,
105         'baz' => undef,
106     );
107     return bless { %proto, %params } => $class;
108 }
109
110 sub bar {}
111
112 sub baz {}
113
114 1;
115
116 __END__
117 ],
118     '... got the right compiled source') or diag $compiled;
119 }
120
121