start sketching out an overload api for the mop
[gitmo/Moose.git] / t / metaclasses / overloading.t
CommitLineData
2683d371 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use 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
16my $plus;
17my $plus_impl;
18BEGIN { $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
38done_testing;