#!perl
{
}
my
$e
= Sample->new(
first
=>
'val'
);
ok(
$e
->can(
'BUILDARGS'
),
'class can(BUILDARGS)'
);
exit
1
unless
$e
->can(
'BUILDARGS'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'val'
,
'first was set by constructor'
);
$e
->first(
'val2'
);
is(
$e
->first,
'val2'
,
'first was set by accessor'
);
$e
= Sample->new(
-first
=>
'val'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'val'
,
'first was set by constructor'
);
$e
= Sample->new(
second
=>
'val'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->second,
'val'
,
'second was set by constructor'
);
$e
= Sample->new(
-second
=>
'val'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->second,
'val'
,
'second was set by constructor'
);
$e
= Sample->new(
first
=>
'foo'
,
-second
=>
'bar'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'foo'
,
'first was set by constructor'
);
is(
$e
->second,
'bar'
,
'second was set by constructor'
);
$e
= Sample->new(
-first
=>
'foo'
,
second
=>
'bar'
);
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'foo'
,
'first was set by constructor'
);
is(
$e
->second,
'bar'
,
'second was set by constructor'
);
$e
= Sample->new({
first
=>
'foo'
,
-second
=>
'bar'
});
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'foo'
,
'first was set by constructor'
);
is(
$e
->second,
'bar'
,
'second was set by constructor'
);
$e
= Sample->new({
-first
=>
'foo'
,
second
=>
'bar'
});
isa_ok(
$e
,
'Sample'
);
is(
$e
->first,
'foo'
,
'first was set by constructor'
);
is(
$e
->second,
'bar'
,
'second was set by constructor'
);
$e
= Sample->new();
isa_ok(
$e
,
'Sample'
);
$e
= Sample->new({});
isa_ok(
$e
,
'Sample'
);
like exception { Sample->new(42) },
qr/\bodd\b/
i,
'Odd number of args throws'
;
like exception { Sample->new([]) },
qr/\bARRAY\b.*\bHASH\b/
i,
'non-hashref throws'
;
like exception { Sample->can(
'BUILDARGS'
)->() },
qr/^Need a class/
,
'internal builder throws absent a class'
;
done_testing();