Work in progress on compiler. It's blowing up right now.
[gitmo/MooseX-Compiler.git] / t / constructor.t
index 11a25cf..10f1212 100644 (file)
@@ -3,7 +3,7 @@ use warnings;
 
 use lib 't/lib';
 
-use Test::MooseX::Compiler qw( save_fragment );
+use Test::MooseX::Compiler qw( save_fragment code_compiles_ok );
 use Test::More 0.88;
 
 use MooseX::Compiler;
@@ -23,6 +23,7 @@ EOF
     );
 
     my $compiled = $compiler->compile_class();
+
     like(
         $compiled,
         qr/sub new {.+\n}\n/s,
@@ -38,4 +39,40 @@ EOF
     }
 }
 
+{
+    my $code = <<'EOF';
+use Moose;
+
+has a1 => (
+    is      => 'ro',
+    default => 42,
+);
+
+sub foo { 84 }
+EOF
+
+    my $class = 'Test::Class2';
+    save_fragment( $class, $code );
+
+    my $compiler = MooseX::Compiler->new(
+        class     => $class,
+        rename_to => 'Test::Class2::Compiled',
+    );
+
+    my $compiled = $compiler->compile_class();
+
+    like(
+        $compiled,
+        qr/sub new {.+\n}\n/s,
+        'compiled code has a constructor'
+    );
+
+    code_compiles_ok($compiled);
+
+    my $obj = Test::Class2::Compiled->new();
+    isa_ok( $obj, 'Test::Class2::Compiled', 'compiled object constructor' );
+    is( $obj->a1(), 'a1 attr defaults to 42' );
+    is( $obj->foo(), 84, 'foo method works' );
+}
+
 done_testing();