mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-22 20:19:00 +00:00
Merged Lmo and updated everything that used it
This commit is contained in:
91
t/lib/Lmo/init_arg.t
Normal file
91
t/lib/Lmo/init_arg.t
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/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;
|
Reference in New Issue
Block a user