summaryrefslogtreecommitdiffstats
path: root/t/moose.t
diff options
context:
space:
mode:
Diffstat (limited to 't/moose.t')
-rw-r--r--t/moose.t53
1 files changed, 53 insertions, 0 deletions
diff --git a/t/moose.t b/t/moose.t
new file mode 100644
index 0000000..e4f8d39
--- /dev/null
+++ b/t/moose.t
@@ -0,0 +1,53 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+package Foo;
+use Moose;
+
+has foo => (
+ is => 'ro',
+ default => 'FOO',
+);
+
+package Foo::Sub;
+use Moose;
+use MooseX::NonMoose;
+extends 'Foo';
+
+package main;
+my $foo_sub = Foo::Sub->new;
+isa_ok($foo_sub, 'Foo');
+is($foo_sub->foo, 'FOO', 'inheritance works');
+ok(!Foo::Sub->meta->has_method('new'),
+ 'Foo::Sub doesn\'t have its own new method');
+
+$_->meta->make_immutable for qw(Foo Foo::Sub);
+
+$foo_sub = Foo::Sub->new;
+isa_ok($foo_sub, 'Foo');
+is($foo_sub->foo, 'FOO', 'inheritance works (immutable)');
+ok(Foo::Sub->meta->has_method('new'),
+ 'Foo::Sub has its own new method (immutable)');
+
+package Foo::OtherSub;
+use Moose;
+use MooseX::NonMoose;
+extends 'Foo';
+
+package main;
+my $foo_othersub = Foo::OtherSub->new;
+isa_ok($foo_othersub, 'Foo');
+is($foo_othersub->foo, 'FOO', 'inheritance works (immutable when extending)');
+ok(!Foo::OtherSub->meta->has_method('new'),
+ 'Foo::OtherSub doesn\'t have its own new method (immutable when extending)');
+
+Foo::OtherSub->meta->make_immutable;
+$foo_othersub = Foo::OtherSub->new;
+isa_ok($foo_othersub, 'Foo');
+is($foo_othersub->foo, 'FOO', 'inheritance works (all immutable)');
+ok(Foo::OtherSub->meta->has_method('new'),
+ 'Foo::OtherSub has its own new method (all immutable)');
+
+done_testing;