diff options
Diffstat (limited to 'Examples/test-suite/perl5/default_args_runme.pl')
| -rw-r--r-- | Examples/test-suite/perl5/default_args_runme.pl | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Examples/test-suite/perl5/default_args_runme.pl b/Examples/test-suite/perl5/default_args_runme.pl new file mode 100644 index 0000000..8d0d268 --- /dev/null +++ b/Examples/test-suite/perl5/default_args_runme.pl @@ -0,0 +1,85 @@ +use strict; +use warnings; +use Test::More tests => 40; +BEGIN { use_ok('default_args') } +require_ok('default_args'); + +my $true = 1; +my $false = ''; + +is(default_args::anonymous(), 7771, "anonymous (1)"); +is(default_args::anonymous(1234), 1234, "anonymous (2)"); + +is(default_args::booltest(), $true, "booltest (1)"); +is(default_args::booltest($true), $true, "booltest (2)"); +is(default_args::booltest($false), $false, "booltest (3)"); + +my $ec = new default_args::EnumClass(); +is($ec->blah(), $true, "EnumClass"); + +is(default_args::casts1(), undef, "casts1"); +is(default_args::casts2(), "Hello", "casts2"); +is(default_args::casts1("Ciao"), "Ciao", "casts1 not default"); +is(default_args::chartest1(), 'x', "chartest1"); +is(default_args::chartest2(), "\0", "chartest2"); +is(default_args::chartest1('y'), 'y', "chartest1 not default"); +is(default_args::reftest1(), 42, "reftest1"); +is(default_args::reftest1(400), 400, "reftest1 not default"); +is(default_args::reftest2(), "hello", "reftest2"); + +# rename +my $foo = new default_args::Foo(); +can_ok($foo, qw(newname renamed3arg renamed2arg renamed1arg)); +eval { + $foo->newname(); + $foo->newname(10); + $foo->renamed3arg(10, 10.0); + $foo->renamed2arg(10); + $foo->renamed1arg(); +}; +ok(not($@), '%rename handling'); + +# exception specifications +eval { default_args::exceptionspec() }; +is($@, "ciao", "exceptionspec 1"); +eval { default_args::exceptionspec(-1) }; +is($@, "ciao", "exceptionspec 2"); +eval { default_args::exceptionspec(100) }; +is($@, '100', "exceptionspec 3"); + +my $ex = new default_args::Except($false); + +my $hit = 0; +eval { $ex->exspec(); $hit = 1; }; +# a zero was thrown, an exception occured, but $@ is false +is($hit, 0, "exspec 1"); +eval { $ex->exspec(-1) }; +is($@, "ciao", "exspec 2"); +eval { $ex->exspec(100) }; +is($@, 100, "exspec 3"); +eval { $ex = default_args::Except->new($true) }; +is($@, -1, "Except constructor 1"); +eval { $ex = default_args::Except->new($true, -2) }; +is($@, -2, "Except constructor 2"); + +#Default parameters in static class methods +is(default_args::Statics::staticmethod(), 60, "staticmethod 1"); +is(default_args::Statics::staticmethod(100), 150, "staticmethod 2"); +is(default_args::Statics::staticmethod(100,200,300), 600, "staticmethod 3"); + +my $tricky = new default_args::Tricky(); +is($tricky->privatedefault(), 200, "privatedefault"); +is($tricky->protectedint(), 2000, "protectedint"); +is($tricky->protecteddouble(), 987.654, "protecteddouble"); +is($tricky->functiondefault(), 500, "functiondefault"); +is($tricky->contrived(), 'X', "contrived"); +is(default_args::constructorcall()->{val}, -1, "constructorcall test 1"); +is(default_args::constructorcall(new default_args::Klass(2222))->{val}, + 2222, "constructorcall test 2"); +is(default_args::constructorcall(new default_args::Klass())->{val}, + -1, "constructorcall test 3"); + +# const methods +my $cm = new default_args::ConstMethods(); +is($cm->coo(), 20, "coo test 1"); +is($cm->coo(1.0), 20, "coo test 2"); |
