summaryrefslogtreecommitdiffstats
path: root/t/immutable.t
diff options
context:
space:
mode:
Diffstat (limited to 't/immutable.t')
-rw-r--r--t/immutable.t45
1 files changed, 45 insertions, 0 deletions
diff --git a/t/immutable.t b/t/immutable.t
new file mode 100644
index 0000000..275b387
--- /dev/null
+++ b/t/immutable.t
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+package Foo;
+
+sub new {
+ my $class = shift;
+ bless { @_ }, $class;
+}
+
+sub foo {
+ my $self = shift;
+ return $self->{foo} unless @_;
+ $self->{foo} = shift;
+}
+
+sub baz { 'Foo' }
+sub quux { ref(shift) }
+
+package Foo::Moose;
+use Moose;
+use MooseX::NonMoose;
+extends 'Foo';
+
+has bar => (
+ is => 'rw',
+);
+
+__PACKAGE__->meta->make_immutable;
+
+package main;
+
+my $foo_moose = Foo::Moose->new(foo => 'FOO', bar => 'BAR');
+is($foo_moose->foo, 'FOO', 'foo set in constructor');
+is($foo_moose->bar, 'BAR', 'bar set in constructor');
+$foo_moose->foo('BAZ');
+$foo_moose->bar('QUUX');
+is($foo_moose->foo, 'BAZ', 'foo set by accessor');
+is($foo_moose->bar, 'QUUX', 'bar set by accessor');
+is($foo_moose->baz, 'Foo', 'baz method');
+is($foo_moose->quux, 'Foo::Moose', 'quux method');
+
+done_testing;