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;
);
my $compiled = $compiler->compile_class();
+
like(
$compiled,
qr/sub new {.+\n}\n/s,
}
}
+{
+ 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();