Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 001_mouse / 020-load-class.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5 use Test::Exception;
6
7 require Mouse;
8 use lib 't/lib';
9
10 lives_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 };
18
19 throws_ok { Mouse::load_class(undef)  } qr/Invalid class name \(undef\)/;
20 throws_ok { Mouse::load_class('')     } qr/Invalid class name \(\)/;
21 throws_ok { Mouse::load_class(\"foo") } qr/Invalid class name \(SCALAR\(\w+\)\)/;
22
23 throws_ok { Mouse::load_class("Foo!") }        qr/Invalid class name/;
24 throws_ok { Mouse::load_class("Foo::Bar42!") } qr/Invalid class name/;
25
26 ok(Mouse::load_class('Unsweetened'));
27 can_ok('Unsweetened' => 'unsweetened');
28
29 do {
30     package Class;
31     sub yay {}
32 };
33
34 ok(Mouse::load_class('Class'), "this should not die!");
35
36 throws_ok {
37     Mouse::load_class('FakeClassOhNo');
38 } qr/Can't locate /;
39
40 throws_ok {
41     Mouse::load_class('SyntaxError');
42 } qr/Missing right curly/;
43
44 done_testing;