view _test/Test/Class/Meta.pm @ 284:f2a6bc5f3184

+IMPL::Object::InlineFactory: implement object factory as subroutine
author sergey
date Thu, 14 Feb 2013 19:14:02 +0400
parents a8db61d0ed33
children
line wrap: on
line source

use strict;

package Test::Class::Meta;
use parent qw(IMPL::Test::Unit);

__PACKAGE__->PassThroughArgs;

use IMPL::Test qw(test failed assert);

test defineFooClassData => sub {
    Foo->static_accessor(info => {},'clone');    
};

test updateFooClassData => sub {
    Foo->info->{data} = 'Foo' ;
};

test getFooClassData => sub {
    assert( Foo->info->{data} eq 'Foo' );
};

test getBazClassData => sub {
    assert( Baz->info->{data} eq 'Foo' );
    assert( Bar->info->{data} eq 'Foo' );
};

test updateBarClassData => sub {
    Bar->info->{data} = 'Bar';
};

test getBarClassData => sub {
    assert( Bar->info->{data} eq 'Bar');
};

test validatetFooClassData => sub {
    assert( Foo->info->{data} eq 'Foo');
};

test validateBazClassData => sub {
    assert( Baz->info->{data} eq 'Foo');
};

test getwrongBazClassData => sub {
    assert( not eval { Foo->info2; 1; } );
};



package Foo;
use parent qw(IMPL::Class::Meta);

package Bar;
use parent qw(-norequire Foo);

package Baz;
use parent qw(-norequire Foo);

1;