Move is_valid_class_name into XS
[gitmo/Mouse.git] / t / 001_mouse / 020-load-class.t
index 705c0db..b8f7c99 100644 (file)
@@ -1,20 +1,28 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 11;
+use Test::More;
 use Test::Exception;
 
 require Mouse;
 use lib 't/lib';
 
-ok(!Mouse::is_class_loaded(), "is_class_loaded with no argument returns false");
-ok(!Mouse::is_class_loaded(''), "can't load the empty class");
-ok(!Mouse::is_class_loaded(\"foo"), "can't load a class name reference??");
+lives_and {
+    ok(!Mouse::is_class_loaded(undef),  "is_class_loaded with undef returns false");
+    ok(!Mouse::is_class_loaded(''),     "can't load the empty class");
+    ok(!Mouse::is_class_loaded(\"foo"), "can't load a class name reference");
 
-throws_ok { Mouse::load_class()       } qr/Invalid class name \(undef\)/;
+    ok(Mouse::is_class_loaded("Mouse"),      "Mouse is loaded");
+    ok(Mouse::is_class_loaded("Test::More"), "Test::More is loaded");
+};
+
+throws_ok { Mouse::load_class(undef)  } qr/Invalid class name \(undef\)/;
 throws_ok { Mouse::load_class('')     } qr/Invalid class name \(\)/;
 throws_ok { Mouse::load_class(\"foo") } qr/Invalid class name \(SCALAR\(\w+\)\)/;
 
+throws_ok { Mouse::load_class("Foo!") }        qr/Invalid class name/;
+throws_ok { Mouse::load_class("Foo::Bar42!") } qr/Invalid class name/;
+
 ok(Mouse::load_class('Unsweetened'));
 can_ok('Unsweetened' => 'unsweetened');
 
@@ -33,3 +41,4 @@ throws_ok {
     Mouse::load_class('SyntaxError');
 } qr/Missing right curly/;
 
+done_testing;