App-Test-Generator
view release on metacpan or search on metacpan
lib/App/Test/Generator/Emitter/Perl.pm view on Meta::CPAN
}
END_TEST
}
# Default string round-trip
return <<"END_TEST";
{
\$obj->$method('value');
is(\$obj->$method(), 'value', '$method get/set works');
}
END_TEST
}
# --------------------------------------------------
# _emit_chaining_test
#
# Purpose: Emit a test that verifies the method
# returns $self for method chaining.
#
# Entry: $method - method name string.
# Exit: Returns a string of Perl test code.
# Side effects: None.
# --------------------------------------------------
sub _emit_chaining_test {
my ($self, $method) = @_;
return <<"END_TEST";
{
my \$ret = \$obj->$method();
isa_ok(\$ret, ref(\$obj), '$method returns self for chaining');
}
END_TEST
}
# --------------------------------------------------
# _emit_error_test
#
# Purpose: Emit a test that calls the method with
# undef input and verifies it handles the
# error gracefully.
#
# Entry: $method - method name string.
# Exit: Returns a string of Perl test code.
# Side effects: None.
# --------------------------------------------------
sub _emit_error_test {
my ($self, $method) = @_;
return <<"END_TEST";
{
my \$result = eval { \$obj->$method(undef) };
ok(!\$result || \$@, '$method handles invalid input');
}
END_TEST
}
# --------------------------------------------------
# _emit_context_test
#
# Purpose: Emit tests that call the method in
# both scalar and list context to verify
# context-aware return behaviour.
#
# Entry: $method - method name string.
# Exit: Returns a string of Perl test code.
# Side effects: None.
# Notes: Uses eval to verify the calls survive
# rather than checking return values,
# since context-aware return values vary.
# --------------------------------------------------
sub _emit_context_test {
my ($self, $method) = @_;
return <<"END_TEST";
{
my \$scalar = eval { \$obj->$method() };
ok(!\$@, '$method survives in scalar context');
my \@list = eval { \$obj->$method() };
ok(!\$@, '$method survives in list context');
}
END_TEST
}
# --------------------------------------------------
# _emit_object_injection_test
#
# Purpose: Emit a test that injects a mock object
# and verifies the same object is returned
# by the getter.
#
# Entry: $method - method name string.
# Exit: Returns a string of Perl test code.
# Side effects: None.
# --------------------------------------------------
sub _emit_object_injection_test {
my ($self, $method) = @_;
return <<"END_TEST";
{
my \$mock = bless {}, 'Mock::Object';
\$obj->$method(\$mock);
isa_ok(\$obj->$method(), 'Mock::Object',
'$method stores injected object instance');
}
END_TEST
}
# --------------------------------------------------
# _emit_boolean_test
#
# Purpose: Emit a test that verifies the method
# returns a defined scalar boolean value.
#
# Entry: $method - method name string.
# Exit: Returns a string of Perl test code.
# Side effects: None.
# Notes: Checks that the return value is defined,
# is not a reference, and is boolean-like
# without using numeric comparison which
# would warn on string returns.
# --------------------------------------------------
sub _emit_boolean_test {
my ($self, $method) = @_;
return <<"END_TEST";
{
( run in 1.115 second using v1.01-cache-2.11-cpan-e1769b4cff6 )