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 )