#! /usr/local/bin/perl
use lib qw(./t);
use warnings;
use strict;
use Test_Framework;
# Test some options associated with classes:
# -- save.
# -- accept_refs.
# -- instance_variable and class variable names.
# -- creating new objects from instances.
use Class::Generate qw(&class);
use vars qw($o);
Test {
class Not_Saved => [ mem => "\$" ], -options => { save => 0 };
! -e "Saved.pm";
};
Test { # Assumes current directory is writeable.
class Saved => [ mem => "\$" ], -options => { save => 1 };
-e "Saved.pm";
};
unlink "Saved.pm" if -e "Saved.pm";
Test {
class No_Refs => {
mem_a => '@',
mem_h => '%'
}, -options => { accept_refs => 0 };
1;
};
$o = new No_Refs;
Test_Failure { $o->mem_a([]) };
Test_Failure { $o->mem_h({}) };
Test {
class Names_Changed => {
mem => "\$",
'&f' => 'return $this->mem;',
'&g' => { class_method => 1, body => 'return $c;' }
}, -options => { instance_var => 'this', class_var => 'c' };
$o = new Names_Changed mem => 1;
$o->f == 1 && Names_Changed->g eq 'Names_Changed';
};
Test {
class From_Instances => { mem => "\$" }, -options => { nfi => 1 };
$o = new From_Instances mem => 1;
($o->new(mem => 2))->mem == 2;
};
Report_Results;