Move is_valid_class_name into XS
[gitmo/Mouse.git] / t / 001_mouse / 020-load-class.t
CommitLineData
c3398f5b 1#!/usr/bin/env perl
2use strict;
3use warnings;
0ffc4183 4use Test::More;
eab81545 5use Test::Exception;
c3398f5b 6
7require Mouse;
8use lib 't/lib';
9
0ffc4183 10lives_and {
11 ok(!Mouse::is_class_loaded(undef), "is_class_loaded with undef returns false");
12 ok(!Mouse::is_class_loaded(''), "can't load the empty class");
13 ok(!Mouse::is_class_loaded(\"foo"), "can't load a class name reference");
14
15 ok(Mouse::is_class_loaded("Mouse"), "Mouse is loaded");
16 ok(Mouse::is_class_loaded("Test::More"), "Test::More is loaded");
17};
9694b71b 18
2a9a2118 19throws_ok { Mouse::load_class(undef) } qr/Invalid class name \(undef\)/;
9694b71b 20throws_ok { Mouse::load_class('') } qr/Invalid class name \(\)/;
21throws_ok { Mouse::load_class(\"foo") } qr/Invalid class name \(SCALAR\(\w+\)\)/;
262801ef 22
0ffc4183 23throws_ok { Mouse::load_class("Foo!") } qr/Invalid class name/;
24throws_ok { Mouse::load_class("Foo::Bar42!") } qr/Invalid class name/;
25
abe28e11 26ok(Mouse::load_class('Unsweetened'));
27can_ok('Unsweetened' => 'unsweetened');
c3398f5b 28
29do {
30 package Class;
2a674d23 31 sub yay {}
c3398f5b 32};
33
34ok(Mouse::load_class('Class'), "this should not die!");
35
2a674d23 36throws_ok {
37 Mouse::load_class('FakeClassOhNo');
38} qr/Can't locate /;
c3398f5b 39
40throws_ok {
abe28e11 41 Mouse::load_class('SyntaxError');
c3398f5b 42} qr/Missing right curly/;
43
0ffc4183 44done_testing;