6 use Scalar::Util qw( isweak );
7 use Test::More tests => 9;
11 package HasClassAttribute;
14 use MooseX::ClassAttribute;
17 ( metaclass => 'ClassAttribute',
23 has 'WeakAttribute' =>
24 ( metaclass => 'ClassAttribute',
40 $class->ObjectCount( $class->ObjectCount() + 1 );
46 local $Test::Builder::Level = $Test::Builder::Level + 1;
49 is( HasClassAttribute->ObjectCount(), 0,
50 'ObjectCount() is 0' );
52 my $hca1 = HasClassAttribute->new();
54 'size is 5 - object attribute works as expected' );
55 is( HasClassAttribute->ObjectCount(), 1,
56 'ObjectCount() is 1' );
58 my $hca2 = HasClassAttribute->new( size => 10 );
59 is( $hca2->size(), 10,
60 'size is 10 - object attribute can be set via constructor' );
61 is( HasClassAttribute->ObjectCount(), 2,
62 'ObjectCount() is 2' );
63 is( $hca2->ObjectCount(), 2,
64 'ObjectCount() is 2 - can call class attribute accessor on object' );
68 my $hca3 = HasClassAttribute->new( ObjectCount => 20 );
69 is( $hca3->ObjectCount(), 3,
70 'class attributes are not affected by constructor params' );
71 is( HasClassAttribute->ObjectCount(), 3,
72 'class attributes are not affected by constructor params' );
76 my $object = bless {}, 'Thing';
78 HasClassAttribute->WeakAttribute($object);
80 ok( isweak( $HasClassAttribute::__ClassAttribute{WeakAttribute} ),
81 'weak class attributes are weak' );