package AppThing::Predef; 1; package AppThing; use lib './lib'; use LEOCHARRE::Class2; use strict; __PACKAGE__->make_constructor; __PACKAGE__->make_accessor_setget_ondisk_file( 'abs_conf', ); __PACKAGE__->make_accessor_setget_ondisk_dir({ abs_misc => './t/misc', abs_tmp => undef, }); __PACKAGE__->make_method_counter( 'loans' ); 1; use Test::Simple 'no_plan'; use strict; use lib './lib'; use Cwd; sub space { printf STDERR "\n%s\n\n",'-'x60 } space(); space(); warn("ON DISK DIR\n"); my $o1 = new AppThing; ok $o1,'new() can instance, but as soon as we ask for the nonexistant dir.. dies:'; ok( ! eval { $o1->abs_misc },'abs_misc() fails'); space(); mkdir './t/misc'; -d './t/misc' or die; my $o = new AppThing; ok($o,'new() can instance regardless'); space(); # DIR ok( !$o->abs_tmp,'abs tmp undef, was not ondisk..'); ok( !$o->abs_tmp('./t/blablabla'), 'setting bogus val returns undef..'); space(); mkdir './t/tmp'; ok( $o->abs_tmp('./t/tmp'),'setting val of existing dir is ok') or exit; my $r = $o->abs_tmp; my $c = cwd().'/t/tmp'; ok( $r eq $c,"package resolves to $r eq $c"); space(); space(); warn("ON DISK FILE\n"); # FILE ok( ! $o->abs_conf,'abs_conf() returns nothing yet' ); my $not_on_disk = './t/tmp.conf'; !-f $not_on_disk or die; my $r; ok( ! ($r = $o->abs_conf($not_on_disk)), 'abs_conf() cant be set with not on disk arg'); ok( ! defined $r,"abs_conf() with bad arg returns undef"); open(F, '>', $not_on_disk) or die; print F 'content'; close F; my $on_disk = $not_on_disk; ok( $o->abs_conf($on_disk), 'setting val of existing file is ok'); $r = $o->abs_conf; $c = cwd().'/t/tmp.conf'; ok( $r eq $c,"package resolves to $r eq $c") or exit; space(); space(); warn("# METHOD COUNTER\n"); ok( ! $o->loans, 'loans()' ); ok( $o->loans(1) == 1, 'loans(1)'); ok( $o->loans(10) == 11, 'loans(10)'); ok( $o->loans == 11, 'loans() == 11'); ok( ! $o->loans(0), 'loans(0) returns false'); unlink $c; rmdir './t/misc'; rmdir './t/tmp';