Some ClassName simplification and fixes
Shawn M Moore [Tue, 10 Jun 2008 04:34:10 +0000 (04:34 +0000)]
lib/Mouse.pm
t/025-more-isa.t

index 3136d35..bfe4be7 100644 (file)
@@ -98,6 +98,8 @@ sub load_class {
 sub is_class_loaded {
     my $class = shift;
 
+    return 0 if ref($class) || !defined($class) || !length($class);
+
     no strict 'refs';
     return 1 if defined ${"${class}::VERSION"} || defined @{"${class}::ISA"};
     foreach my $symbol (keys %{"${class}::"}) {
index 132d57f..f11dc25 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 29;
+use Test::More tests => 23;
 use Test::Exception;
 
 do {
@@ -61,26 +61,20 @@ lives_ok {
 
 do {
     package A;
-    our @VERSION;
+    our $VERSION = 1;
 
     package B;
-    our $VERSION = 1;
+    our @ISA = 'Mouse::Object';
 
     package C;
-    our %ISA;
+    sub foo {}
 
-    package D;
-    our @ISA = 'Mouse::Object';
+    package D::Child;
+    sub bar {}
 
     package E;
-    sub foo {}
 
     package F;
-
-    package G::H;
-    sub bar {}
-
-    package I;
     our $NOT_CODE = 1;
 };
 
@@ -94,7 +88,7 @@ do {
     );
 };
 
-for ('A'..'E', 'G::H') {
+for ('A'..'C', 'D::Child') {
     lives_ok {
         ClassNameTests->new(class => $_);
     };
@@ -105,7 +99,7 @@ for ('A'..'E', 'G::H') {
     };
 }
 
-for ('F', 'G', 'I', 'Z') {
+for ('E'..'F', 'NonExistentClass') {
     throws_ok {
         ClassNameTests->new(class => $_);
     } qr/Attribute \(class\) does not pass the type constraint because: Validation failed for 'ClassName' failed with value $_/;