Add tests for delegation overriding local methods (real and stub)
Dave Rolsky [Fri, 16 Sep 2011 15:48:40 +0000 (10:48 -0500)]
t/attributes/attribute_delegation.t

index 18b9048..733542c 100644 (file)
@@ -454,4 +454,32 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
     is( exception { $k->foo_baz }, undef, "but not for class name" );
 }
 
+{
+    package Delegator;
+    use Moose;
+
+    sub full { 1 }
+    sub stub;
+
+    ::like(
+        ::exception{ has d1 => (
+                isa     => 'X',
+                handles => ['full'],
+            );
+            },
+        qr/\QYou cannot overwrite a locally defined method (full) with a delegation/,
+        'got an error when trying to declare a delegation method that overwrites a local method'
+    );
+
+    ::is(
+        ::exception{ has d2 => (
+                isa     => 'X',
+                handles => ['stub'],
+            );
+            },
+        undef,
+        'no error when trying to declare a delegation method that overwrites a stub method'
+    );
+}
+
 done_testing;