#!/usr/local/bin/perl use lib qw ( ./t ); use test_v1; package X; use Class::MethodMaker get_set => [qw/ a b /], get_set => 'c', get_set => [ [ undef, undef, 'get_*', 'set_*' ] => qw/ d e /, -noclear => 'f', -eiffel => 'g', -java => 'H', -compatibility => 'i', ]; sub new { bless {}, shift; } package main; Class::MethodMaker->VERSION eq '2.08' || Class::MethodMaker->VERSION >= 2.00 or die "Wrong C::MM: ", Class::MethodMaker->VERSION, "\n"; my $o = new X; TEST { 1 }; TEST { ! defined $o->a }; TEST { $o->a(123) }; TEST { $o->a == 123 }; TEST { ! defined $o->clear_a }; TEST { ! defined $o->a }; TEST { $o->a(456) }; TEST { $o->a == 456 }; TEST { ! defined $o->a (undef) }; TEST { ! defined $o->a }; TEST { defined *X::clear_a{CODE} }; TEST { ! $o->can ('d') }; TEST { ! $o->can ('clear_e') }; TEST { ! defined $o->get_d }; TEST { ! defined $o->set_d ('foo') }; TEST { $o->get_d eq 'foo' }; TEST { ! defined $o->set_d (undef) }; TEST { ! defined $o->get_d }; TEST { $o->can ('f') and ! $o->can ('clear_f') and ! $o->can ('set_f') and ! $o->can ('get_f') }; TEST { $o->can ('g') and ! $o->can ('clear_g') and $o->can ('set_g') and ! $o->can ('get_g') }; TEST { ! $o->can ('h') and ! $o->can ('clear_h') and $o->can ('setH') and $o->can ('getH') }; TEST { $o->can ('i') and $o->can ('clear_i') and ! $o->can ('set_i') and ! $o->can ('get_i') }; exit 0;