Support DOES()
Fuji, Goro [Mon, 21 Feb 2011 01:45:12 +0000 (10:45 +0900)]
lib/Mouse/Object.pm
t/000_recipes/moose_cookbook_roles_recipe1.t

index 73184d1..9975c65 100644 (file)
@@ -1,6 +1,12 @@
 package Mouse::Object;
 use Mouse::Util qw(does dump meta); # enables strict and warnings
 # all the stuff are defined in XS or PP
+
+sub DOES {
+    my($self, $class_or_role_name) = @_;
+    return $self->isa($class_or_role_name) || $self->does($class_or_role_name);
+}
+
 1;
 __END__
 
index 16f6775..c11d186 100644 (file)
@@ -85,11 +85,8 @@ ok( US::Currency->does('Printable'),  '... US::Currency does Printable' );
 
 my $hundred = US::Currency->new( amount => 100.00 );
 isa_ok( $hundred, 'US::Currency' );
-{
-local $TODO = 'UNIVERSAL::DOES is not supported';
-ok( eval{ $hundred->DOES("US::Currency") }, "UNIVERSAL::DOES for class" );
-ok( eval{ $hundred->DOES("Comparable") },   "UNIVERSAL::DOES for role" );
-}
+ok( $hundred->DOES("US::Currency"), "UNIVERSAL::DOES for class" );
+ok( $hundred->DOES("Comparable"),   "UNIVERSAL::DOES for role" );
 can_ok( $hundred, 'amount' );
 is( $hundred->amount, 100, '... got the right amount' );