From 5ac2026f7eed78958d69d051e7a8e993dcf51205 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Sat, 6 Jun 2015 17:50:16 +0000 Subject: Moose-2.1405 --- t/exceptions/class-mop-class-immutable-trait.t | 57 ++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 t/exceptions/class-mop-class-immutable-trait.t (limited to 't/exceptions/class-mop-class-immutable-trait.t') diff --git a/t/exceptions/class-mop-class-immutable-trait.t b/t/exceptions/class-mop-class-immutable-trait.t new file mode 100644 index 0000000..abefba7 --- /dev/null +++ b/t/exceptions/class-mop-class-immutable-trait.t @@ -0,0 +1,57 @@ +use strict; +use warnings; + +use Test::More; +use Test::Fatal; + +use Moose(); + +{ + my $exception = exception { + package Foo; + use Moose; + __PACKAGE__->meta->make_immutable; + __PACKAGE__->meta->superclasses("Bar"); + }; + + like( + $exception, + qr/The 'superclasses' method is read-only when called on an immutable instance/, + "calling 'foo' on an immutable instance"); + + isa_ok( + $exception, + "Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance", + "calling 'foo' on an immutable instance"); + + is( + $exception->method_name, + "superclasses", + "calling 'foo' on an immutable instance"); +} + +{ + my $exception = exception { + package Foo; + use Moose; + __PACKAGE__->meta->make_immutable; + __PACKAGE__->meta->add_method( foo => sub { "foo" } ); + }; + + like( + $exception, + qr/The 'add_method' method cannot be called on an immutable instance/, + "calling 'add_method' on an immutable instance"); + + isa_ok( + $exception, + "Moose::Exception::CallingMethodOnAnImmutableInstance", + "calling 'add_method' on an immutable instance"); + + is( + $exception->method_name, + "add_method", + "calling 'add_method' on an immutable instance"); +} + +done_testing; -- cgit v1.2.1