1N/A#!./perl -w
1N/A
1N/ABEGIN {
1N/A chdir 't' if -d 't';
1N/A @INC = '../lib';
1N/A}
1N/A
1N/A#
1N/A# A couple of simple classes to use as struct elements.
1N/A#
1N/Apackage aClass;
1N/Asub new { bless {}, shift }
1N/Asub meth { 42 }
1N/A
1N/Apackage RecClass;
1N/Asub new { bless {}, shift }
1N/A
1N/A#
1N/A# The first of our Class::Struct based objects.
1N/A#
1N/Apackage MyObj;
1N/Ause Class::Struct;
1N/Ause Class::Struct 'struct'; # test out both forms
1N/Ause Class::Struct SomeClass => { SomeElem => '$' };
1N/A
1N/Astruct( s => '$', a => '@', h => '%', c => 'aClass' );
1N/A
1N/A#
1N/A# The second Class::Struct objects:
1N/A# test the 'compile-time without package name' feature.
1N/A#
1N/Apackage MyOther;
1N/Ause Class::Struct s => '$', a => '@', h => '%', c => 'aClass';
1N/A
1N/A#
1N/A# back to main...
1N/A#
1N/Apackage main;
1N/A
1N/Ause Test::More tests => 24;
1N/A
1N/Amy $obj = MyObj->new;
1N/Aisa_ok $obj, 'MyObj';
1N/A
1N/A$obj->s('foo');
1N/Ais $obj->s(), 'foo';
1N/A
1N/Aisa_ok $obj->a, 'ARRAY';
1N/A$obj->a(2, 'secundus');
1N/Ais $obj->a(2), 'secundus';
1N/A
1N/A$obj->a([4,5,6]);
1N/Ais $obj->a(1), 5;
1N/A
1N/Aisa_ok $obj->h, 'HASH';
1N/A$obj->h('x', 10);
1N/Ais $obj->h('x'), 10;
1N/A
1N/A$obj->h({h=>7,r=>8,f=>9});
1N/Ais $obj->h('r'), 8;
1N/A
1N/Ais $obj->c, undef;
1N/A
1N/A$obj = MyObj->new( c => aClass->new );
1N/Aisa_ok $obj->c, 'aClass';
1N/Ais $obj->c->meth(), 42;
1N/A
1N/A
1N/A$obj = MyOther->new;
1N/Aisa_ok $obj, 'MyOther';
1N/A
1N/A$obj->s('foo');
1N/Ais $obj->s(), 'foo';
1N/A
1N/Aisa_ok $obj->a, 'ARRAY';
1N/A$obj->a(2, 'secundus');
1N/Ais $obj->a(2), 'secundus';
1N/A
1N/A$obj->a([4,5,6]);
1N/Ais $obj->a(1), 5;
1N/A
1N/Aisa_ok $obj->h, 'HASH';
1N/A$obj->h('x', 10);
1N/Ais $obj->h('x'), 10;
1N/A
1N/A$obj->h({h=>7,r=>8,f=>9});
1N/Ais $obj->h('r'), 8;
1N/A
1N/Ais $obj->c, undef;
1N/A
1N/A$obj = MyOther->new( c => aClass->new );
1N/Aisa_ok $obj->c, 'aClass';
1N/Ais $obj->c->meth(), 42;
1N/A
1N/A
1N/A
1N/Amy $obk = SomeClass->new();
1N/A$obk->SomeElem(123);
1N/Ais $obk->SomeElem(), 123;
1N/A
1N/Amy $recobj = RecClass->new();
1N/Aisa_ok $recobj, 'RecClass';
1N/A