Don't do the use_ok test
[gitmo/Mouse.git] / t / 800_shikabased / 008-create_class.t
CommitLineData
368e3d4a 1use strict;
2use warnings;
3use Mouse;
4use Test::More tests => 14;
5use Test::Exception;
6
7# error handling
8throws_ok {
9 Mouse::Meta::Class->create(
10 superclasses => "foo"
11 );
12} qr/You must pass an ARRAY ref of superclasses/;
13
14
15throws_ok {
16 Mouse::Meta::Class->create(
17 attributes => "foo"
18 );
19} qr/You must pass an ARRAY ref of attributes/;
20
21throws_ok {
22 Mouse::Meta::Class->create(
23 methods => "foo"
24 );
25} qr/You must pass a HASH ref of methods/;
26
27
28throws_ok {
29 Mouse::Meta::Class->create()
30} qr/You must pass a package name/;
31
32# normal cases
33isa_ok(Mouse::Meta::Class->create("FooBar"), "Mouse::Meta::Class");
34is FooBar->meta->name, "FooBar";
35
36isa_ok(
37 Mouse::Meta::Class->create(
38 package => "Baz",
39 superclasses => [ "FooBar", "Mouse::Object" ],
40 attributes => [
41 Mouse::Meta::Attribute->new(
42 name => "foo", is => "rw", default => "yay"
43 )
44 ],
45 methods => {
46 dooo => sub { "iiiit" },
47 }
48 ),
49 "Mouse::Meta::Class"
50);
51isa_ok Baz->new(), "FooBar";
52is Baz->new()->foo, "yay";
53is Baz->new()->dooo, "iiiit";
54
55{
56 my $meta = Mouse::Meta::Class->create_anon_class(
57 superclasses => [ "Mouse::Object" ],
58 methods => {
59 dooo => sub { "iiiit" },
60 }
61 );
62 isa_ok($meta, "Mouse::Meta::Class");
63 is $meta->name, "Mouse::Meta::Class::__ANON__::SERIAL::1";
64 is $meta->name->new->dooo(), "iiiit";
65
66 my $anon2 = Mouse::Meta::Class->create_anon_class();
67 is $anon2->name, "Mouse::Meta::Class::__ANON__::SERIAL::2";
68}