Test that UNIVERSAL methods are found through all method introspection methods
Dave Rolsky [Sat, 17 Sep 2011 02:13:10 +0000 (21:13 -0500)]
t/cmop/universal_methods.t

index 6d00160..0d3d646 100644 (file)
@@ -6,13 +6,33 @@ use Class::MOP;
 
 my $meta_class = Class::MOP::Class->create_anon_class;
 
+my %methods      = map { $_->name => 1 } $meta_class->get_all_methods();
+my %method_names = map { $_       => 1 } $meta_class->get_all_method_names();
+
 my @universal_methods = qw/isa can VERSION/;
 push @universal_methods, 'DOES' if $] >= 5.010;
 
-TODO: {
-    for my $method ( @universal_methods ) {
-        ok $meta_class->find_method_by_name($method), "has UNIVERSAL method $method";
-    }
-};
+for my $method (@universal_methods) {
+    ok(
+        $meta_class->find_method_by_name($method),
+        "find_method_by_name finds UNIVERSAL method $method"
+    );
+    ok(
+        $meta_class->find_next_method_by_name($method),
+        "find_next_method_by_name finds UNIVERSAL method $method"
+    );
+    ok(
+        scalar $meta_class->find_all_methods_by_name($method),
+        "find_all_methods_by_name finds UNIVERSAL method $method"
+    );
+    ok(
+        $methods{$method},
+        "get_all_methods includes $method from UNIVERSAL"
+    );
+    ok(
+        $method_names{$method},
+        "get_all_method_names includes $method from UNIVERSAL"
+    );
+}
 
 done_testing;