3 use Test::More tests => 25;
10 Mouse::Meta::Class->create(
14 } qr/You must pass an ARRAY ref of superclasses/;
18 Mouse::Meta::Class->create(
22 } qr/You must pass an ARRAY ref of attributes/;
25 Mouse::Meta::Class->create(
29 } qr/You must pass a HASH ref of methods/;
32 isa_ok(Mouse::Meta::Class->create("FooBar"), "Mouse::Meta::Class");
33 is FooBar->meta->name, "FooBar";
36 Mouse::Meta::Class->create(
38 superclasses => [ "FooBar", "Mouse::Object" ],
40 Mouse::Meta::Attribute->new(
48 dooo => sub { "iiiit" },
53 isa_ok Baz->new(), "FooBar";
54 is Baz->new()->foo, "yay";
55 is Baz->new()->dooo, "iiiit";
57 my($anon_pkg1, $anon_pkg2);
59 my $meta = Mouse::Meta::Class->create_anon_class(
60 superclasses => [ "Mouse::Object" ],
62 dooo => sub { "iiiit" },
65 $anon_pkg1 = $meta->name;
67 isa_ok($meta, "Mouse::Meta::Class", 'create_anon_class');
68 ok($meta->is_anon_class, 'is_anon_class');
69 is $meta->name->new->dooo(), "iiiit";
71 my $anon2 = Mouse::Meta::Class->create_anon_class(cache => 1);
72 $anon_pkg2 = $anon2->name;
74 ok($anon2->is_anon_class);
77 isnt $meta->name, $anon2->name;
80 # all the stuff are removed?
81 ok !$anon_pkg1->isa('Mouse::Object');
82 ok !$anon_pkg1->can('dooo');
83 ok !$anon_pkg1->can('meta');
85 ok $anon_pkg2->can('meta'), 'cache => 1 makes it immortal';
87 my $anon = Mouse::Meta::Class->create_anon_class(
88 constructor_class => 'ConstructorX',
89 destructor_class => 'DestructorX',
92 is $anon->constructor_class, 'ConstructorX';
93 is $anon->destructor_class, 'DestructorX';
97 my $anon = Mouse::Meta::Class->create_anon_class(superclasses => ['Mouse::Object']);
98 lives_ok{ $anon->make_immutable() } 'make anon class immutable';
99 $obj = $anon->name->new();
103 skip 'Moose has a bug', 3 if 'Mouse' eq 'Moose';
105 isa_ok $obj, 'Mouse::Object';
108 isa_ok $obj->meta, 'Mouse::Meta::Class';