summaryrefslogtreecommitdiffstats
path: root/t/moose.t
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-09-04 19:38:21 -0400
committerJesse Luehrs <doy@tozt.net>2013-09-04 19:47:11 -0400
commit8bf5e6931a1bd96df0cdb1ceb94bbb3e578a8126 (patch)
tree2e659a8f07ea1cca3091a9c0578bbd8e53c20c11 /t/moose.t
parent8e0b4f219f2d8d94cb6937ef47168ac5fac03cd9 (diff)
downloadmoosex-nonmoose-8bf5e6931a1bd96df0cdb1ceb94bbb3e578a8126.tar.gz
moosex-nonmoose-8bf5e6931a1bd96df0cdb1ceb94bbb3e578a8126.zip
packaging
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;