mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-10 13:11:32 +00:00
92 lines
1.9 KiB
Perl
92 lines
1.9 KiB
Perl
#!/usr/bin/perl
|
|
|
|
BEGIN {
|
|
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
};
|
|
|
|
use strict;
|
|
use warnings FATAL => 'all';
|
|
use English qw(-no_match_vars);
|
|
use Test::More;
|
|
|
|
|
|
|
|
{
|
|
package Foo;
|
|
use Lmo qw( is init_arg );
|
|
|
|
eval {
|
|
has 'foo' => (
|
|
is => "rw",
|
|
init_arg => undef,
|
|
);
|
|
};
|
|
::ok(!$@, '... created the attr okay');
|
|
}
|
|
|
|
{
|
|
my $foo = Foo->new( foo => "bar" );
|
|
isa_ok($foo, 'Foo');
|
|
|
|
is( $foo->foo, undef, "field is not set via init arg" );
|
|
|
|
$foo->foo("blah");
|
|
|
|
is( $foo->foo, "blah", "field is set via setter" );
|
|
}
|
|
|
|
{
|
|
package Foo;
|
|
|
|
eval {
|
|
has 'foo2' => (
|
|
is => "rw",
|
|
init_arg => undef,
|
|
);
|
|
};
|
|
::ok(!$@, '... adding a second attribute with init_arg works');
|
|
}
|
|
|
|
{
|
|
my $foo = Foo->new( foo => "bar", foo2 => "baz" );
|
|
|
|
is( $foo->foo, undef, "foo is not set via init arg" );
|
|
is( $foo->foo2, undef, "foo2 is not set via init arg" );
|
|
|
|
$foo->foo("blah");
|
|
$foo->foo2("bluh");
|
|
|
|
is( $foo->foo, "blah", "foo is set via setter" );
|
|
is( $foo->foo2, "bluh", "foo2 is set via setter" );
|
|
}
|
|
|
|
{
|
|
package Foo2;
|
|
use Lmo qw( is init_arg clearer default );
|
|
|
|
my $counter;
|
|
eval {
|
|
has 'auto_foo' => (
|
|
is => "ro",
|
|
init_arg => undef,
|
|
default => sub { $counter++ ? "Foo" : "Bar" },
|
|
clearer => 'clear_auto_foo',
|
|
);
|
|
};
|
|
::ok(!$@, '... attribute with init_arg+default+clearer+is works');
|
|
}
|
|
|
|
{
|
|
my $foo = Foo2->new( auto_foo => 1234 );
|
|
|
|
is( $foo->auto_foo, "Bar", "auto_foo is not set via init arg, but by the default" );
|
|
|
|
$foo->clear_auto_foo();
|
|
|
|
is( $foo->auto_foo, "Foo", "auto_foo calls default again if cleared" );
|
|
}
|
|
|
|
done_testing;
|