implement remove_overloaded_operator
[gitmo/Moose.git] / t / metaclasses / overloading.t
index 3621dd9..ba5f1d5 100644 (file)
@@ -12,16 +12,18 @@ use Test::Fatal;
 {
     my $meta = Foo->meta;
 
+    ok(!$meta->is_overloaded);
+
     is_deeply([sort $meta->overload_operators],
               [sort map { split /\s+/ } values %overload::ops]);
 
     ok(!$meta->has_overloaded_operator('+'));
     ok(!$meta->has_overloaded_operator('-'));
 
-    is_deeply([$meta->get_overloaded_operators], []);
-
     is_deeply([$meta->get_overload_list], []);
 
+    is_deeply([$meta->get_all_overloaded_operators], []);
+
     is($meta->get_overloaded_operator('+'), undef);
     is($meta->get_overloaded_operator('-'), undef);
 }
@@ -38,12 +40,14 @@ BEGIN { $plus_impl = sub { $plus = 1; "plus" } }
 {
     my $meta = Foo::Overloaded->meta;
 
+    ok($meta->is_overloaded);
+
     ok($meta->has_overloaded_operator('+'));
     ok(!$meta->has_overloaded_operator('-'));
 
-    is_deeply([$meta->get_overloaded_operators], ['+']);
+    is_deeply([$meta->get_overload_list], ['+']);
 
-    my @overloads = $meta->get_overload_list;
+    my @overloads = $meta->get_all_overloaded_operators;
     is(scalar(@overloads), 1);
     my $plus_meth = $overloads[0];
     isa_ok($plus_meth, 'Class::MOP::Method::Overload');
@@ -75,9 +79,9 @@ BEGIN { $plus_impl = sub { $plus = 1; "plus" } }
 
     ok($meta->has_overloaded_operator('-'));
 
-    is_deeply([sort $meta->get_overloaded_operators], ['+', '-']);
+    is_deeply([sort $meta->get_overload_list], ['+', '-']);
 
-    is(scalar($meta->get_overload_list), 2);
+    is(scalar($meta->get_all_overloaded_operators), 2);
 
     my $minus_meth = $meta->get_overloaded_operator('-');
     isa_ok($minus_meth, 'Class::MOP::Method::Overload');
@@ -90,6 +94,11 @@ BEGIN { $plus_impl = sub { $plus = 1; "plus" } }
     is($minus, 0);
     is(Foo::Overloaded->new - Foo::Overloaded->new, "minus");
     is($minus, 1);
+
+    $meta->remove_overloaded_operator('-');
+
+    like(exception { Foo::Overloaded->new - Foo::Overloaded->new },
+         qr/Operation "-": no method found/);
 }
 
 done_testing;