3
# $Id: class.t 682 2004-09-28 05:59:10Z theory $
6
use Test::More tests => 13;
7
BEGIN { use_ok( 'Class::Meta') }
9
# Make sure we can't instantiate a class object from here.
11
eval { $class = Class::Meta::Class->new };
12
ok( my $err = $@, 'Error creating class' );
13
like($err, qr/^Package 'main' cannot create.*objects/,
14
'Check error message' );
16
# Now try inheritance.
17
package Class::Meta::FooSub;
19
use base 'Class::Meta';
22
# Set up simple settings.
23
my $spec = { desc => 'Foo Class description',
24
package => 'FooClass',
25
class => Class::Meta->new->class,
26
error_handler => Class::Meta->default_error_handler,
29
# This should be okay.
30
ok( $class = Class::Meta::Class->new($spec),
31
'Subclass can create class objects' );
33
# Test the simple accessors.
34
is( $class->name, $spec->{key}, 'name' );
35
is( $class->desc, $spec->{desc}, 'desc' );
36
is( $class->key, $spec->{key}, 'key' );
38
# Now try inheritance for Class.
39
package Class::Meta::Class::Sub;
40
use base 'Class::Meta::Class';
42
# Make sure we can override new and build.
43
sub new { shift->SUPER::new(@_) }
44
sub build { shift->SUPER::build(@_) }
46
sub foo { shift->{foo} }
49
ok( my $cm = Class::Meta->new(
50
class_class => 'Class::Meta::Class::Sub',
53
ok( $class = $cm->class, "Retrieve class" );
54
isa_ok($class, 'Class::Meta::Class::Sub');
55
isa_ok($class, 'Class::Meta::Class');
56
is( $class->package, __PACKAGE__, "Check an attibute");
57
is( $class->foo, 'bar', "Check added attribute" );