got rid of all the use_ok junk except for 000_load.t
[gitmo/Class-MOP.git] / t / 040_metaclass.t
CommitLineData
550d56db 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
efd3d14c 6use Test::More tests => 11;
550d56db 7
efd3d14c 8BEGIN {use metaclass;
550d56db 9}
10
11{
12 package FooMeta;
13 use base 'Class::MOP::Class';
14
15 package Foo;
16 use metaclass 'FooMeta';
17}
18
19can_ok('Foo', 'meta');
20isa_ok(Foo->meta, 'FooMeta');
21isa_ok(Foo->meta, 'Class::MOP::Class');
22
23{
24 package BarMeta;
25 use base 'Class::MOP::Class';
26
27 package BarMeta::Attribute;
28 use base 'Class::MOP::Attribute';
29
30 package BarMeta::Method;
31 use base 'Class::MOP::Method';
32
33 package Bar;
34 use metaclass 'BarMeta' => (
c23184fc 35 'attribute_metaclass' => 'BarMeta::Attribute',
36 'method_metaclass' => 'BarMeta::Method',
550d56db 37 );
38}
39
40can_ok('Bar', 'meta');
41isa_ok(Bar->meta, 'BarMeta');
42isa_ok(Bar->meta, 'Class::MOP::Class');
43
44is(Bar->meta->attribute_metaclass, 'BarMeta::Attribute', '... got the right attribute metaobject');
45is(Bar->meta->method_metaclass, 'BarMeta::Method', '... got the right method metaobject');
46
47{
48 package Baz;
49 use metaclass;
50}
51
52can_ok('Baz', 'meta');
53isa_ok(Baz->meta, 'Class::MOP::Class');
54
55eval {
56 package Boom;
57 metaclass->import('Foo');
58};
59ok($@, '... metaclasses must be subclass of Class::MOP::Class');
60