diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-06 17:50:16 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-06 17:50:16 +0000 |
commit | 5ac2026f7eed78958d69d051e7a8e993dcf51205 (patch) | |
tree | 298c3d2f08bdfe5689998b11892d72a897985be1 /t/roles/overloading_to_class.t | |
download | Moose-tarball-5ac2026f7eed78958d69d051e7a8e993dcf51205.tar.gz |
Moose-2.1405HEADMoose-2.1405master
Diffstat (limited to 't/roles/overloading_to_class.t')
-rw-r--r-- | t/roles/overloading_to_class.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/t/roles/overloading_to_class.t b/t/roles/overloading_to_class.t new file mode 100644 index 0000000..16972a7 --- /dev/null +++ b/t/roles/overloading_to_class.t @@ -0,0 +1,66 @@ +use strict; +use warnings; + +use Test::More 0.88; +use Test::Warnings; +use overload (); + +use lib 't/lib'; + +use OverloadingTests; +use Overloading::ClassWithOneRole; + +ok( + Overloading::ClassWithOneRole->DOES('Overloading::RoleWithOverloads'), + 'Overloading::ClassWithOneRole consumed Overloading::RoleWithOverloads', +); + +OverloadingTests::test_overloading_for_package($_) for qw( + Overloading::RoleWithOverloads + Overloading::ClassWithOneRole +); + +OverloadingTests::test_overloading_for_object( + 'Overloading::ClassWithOneRole'); + +{ + package Role1; + use Moose::Role; + use overload + q{""} => '_role1_stringify', + q{+} => '_role1_plus', + fallback => 0; + sub _role1_stringify {__PACKAGE__} + sub _role1_plus {42} +} + +{ + package Class1; + use Moose; + use overload + q{""} => '_class1_stringify', + fallback => 1; + with 'Role1'; + sub _class1_stringify {__PACKAGE__} +} + +is( + Class1->meta->get_overload_fallback_value, + 1, + 'fallback setting for class overrides setting in composed role' +); + +is( + Class1->new . q{}, + 'Class1', + 'overload method for class overrides method in composed role' +); + +my $overload = Class1->meta->get_overloaded_operator(q{+}); +is( + $overload->original_overload->associated_metaclass->name, + 'Role1', + '+ overloading for Class1 originally came from Role1' +); + +done_testing(); |