Commit | Line | Data |
2683d371 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More; |
5 | |
6 | { |
7 | package Foo; |
8 | use Moose; |
9 | } |
10 | |
11 | { |
12 | is_deeply([Foo->meta->get_overload_list], []); |
13 | is_deeply([Foo->meta->get_overloaded_ops], []); |
14 | } |
15 | |
16 | my $plus; |
17 | my $plus_impl; |
18 | BEGIN { $plus_impl = sub { $plus = 1; $_[0] + $_[1] } } |
19 | { |
20 | package Foo::Overloaded; |
21 | use Moose; |
22 | use overload '+' => $plus_impl; |
23 | } |
24 | |
25 | { |
26 | is_deeply([Foo::Overloaded->meta->get_overloaded_ops], ['+']); |
27 | my @overloads = Foo::Overloaded->meta->get_overload_list; |
28 | is(scalar(@overloads), 1); |
29 | my $plus_meth = $overloads[0]; |
30 | isa_ok($plus_meth, 'Class::MOP::Method::Overload'); |
31 | is($plus_meth->op, '+'); |
32 | is($plus_meth->name, '(+'); |
33 | is($plus_meth->body, $plus_impl); |
34 | is($plus_meth->package_name, 'Foo::Overloaded'); |
35 | is($plus_meth->associated_metaclass, Foo::Overloaded->meta); |
36 | } |
37 | |
38 | done_testing; |