332 lines
12 KiB
GDScript
332 lines
12 KiB
GDScript
# GdUnit generated TestSuite
|
|
class_name GdUnitSpyBuilderTest
|
|
extends GdUnitTestSuite
|
|
|
|
# TestSuite generated from
|
|
const __source = 'res://addons/gdUnit4/src/spy/GdUnitSpyBuilder.gd'
|
|
|
|
|
|
# helper to get function descriptor
|
|
func get_function_description(clazz_name :String, method_name :String) -> GdFunctionDescriptor:
|
|
var method_list :Array = ClassDB.class_get_method_list(clazz_name)
|
|
for method_descriptor in method_list:
|
|
if method_descriptor["name"] == method_name:
|
|
return GdFunctionDescriptor.extract_from(method_descriptor)
|
|
return null
|
|
|
|
|
|
func test_double__init() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void _init() virtual
|
|
var fd := get_function_description("Object", "_init")
|
|
var expected := [
|
|
'func _init() -> void:',
|
|
' super()',
|
|
' pass',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_typed_function_without_arg() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# String get_class() const
|
|
var fd := get_function_description("Object", "get_class")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func get_class() -> String:',
|
|
' var args :Array = ["get_class", ]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return ""',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("get_class"):',
|
|
' return super()',
|
|
' return ""',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_typed_function_with_args() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# bool is_connected(signal: String,Callable(target: Object,method: String)) const
|
|
var fd := get_function_description("Object", "is_connected")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func is_connected(signal_, callable_) -> bool:',
|
|
' var args :Array = ["is_connected", signal_, callable_]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return false',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("is_connected"):',
|
|
' return super(signal_, callable_)',
|
|
' return false',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_void_function_with_args() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void disconnect(signal: StringName, callable: Callable)
|
|
var fd := get_function_description("Object", "disconnect")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func disconnect(signal_, callable_) -> void:',
|
|
' var args :Array = ["disconnect", signal_, callable_]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("disconnect"):',
|
|
' super(signal_, callable_)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_void_function_without_args() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void free()
|
|
var fd := get_function_description("Object", "free")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func free() -> void:',
|
|
' var args :Array = ["free", ]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("free"):',
|
|
' super()',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_typed_function_with_args_and_varargs() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# Error emit_signal(signal: StringName, ...) vararg
|
|
var fd := get_function_description("Object", "emit_signal")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("int_as_enum_without_match")',
|
|
'@warning_ignore("int_as_enum_without_cast")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func emit_signal(signal_, vararg0_="__null__", vararg1_="__null__", vararg2_="__null__", vararg3_="__null__", vararg4_="__null__", vararg5_="__null__", vararg6_="__null__", vararg7_="__null__", vararg8_="__null__", vararg9_="__null__") -> Error:',
|
|
' var varargs :Array = __filter_vargs([vararg0_, vararg1_, vararg2_, vararg3_, vararg4_, vararg5_, vararg6_, vararg7_, vararg8_, vararg9_])',
|
|
' var args :Array = ["emit_signal", signal_] + varargs',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return OK',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' return __call_func("emit_signal", [signal_] + varargs)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_void_function_only_varargs() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void bar(s...) vararg
|
|
var fd := GdFunctionDescriptor.new( "bar", 23, false, false, false, TYPE_NIL, "void", [], GdFunctionDescriptor._build_varargs(true))
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func bar(vararg0_="__null__", vararg1_="__null__", vararg2_="__null__", vararg3_="__null__", vararg4_="__null__", vararg5_="__null__", vararg6_="__null__", vararg7_="__null__", vararg8_="__null__", vararg9_="__null__") -> void:',
|
|
' var varargs :Array = __filter_vargs([vararg0_, vararg1_, vararg2_, vararg3_, vararg4_, vararg5_, vararg6_, vararg7_, vararg8_, vararg9_])',
|
|
' var args :Array = ["bar", ] + varargs',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' __call_func("bar", [] + varargs)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_return_typed_function_only_varargs() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# String bar(s...) vararg
|
|
var fd := GdFunctionDescriptor.new( "bar", 23, false, false, false, TYPE_STRING, "String", [], GdFunctionDescriptor._build_varargs(true))
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func bar(vararg0_="__null__", vararg1_="__null__", vararg2_="__null__", vararg3_="__null__", vararg4_="__null__", vararg5_="__null__", vararg6_="__null__", vararg7_="__null__", vararg8_="__null__", vararg9_="__null__") -> String:',
|
|
' var varargs :Array = __filter_vargs([vararg0_, vararg1_, vararg2_, vararg3_, vararg4_, vararg5_, vararg6_, vararg7_, vararg8_, vararg9_])',
|
|
' var args :Array = ["bar", ] + varargs',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return ""',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' return __call_func("bar", [] + varargs)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_static_return_void_function_without_args() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void foo()
|
|
var fd := GdFunctionDescriptor.new( "foo", 23, false, true, false, TYPE_NIL, "", [])
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'static func foo() -> void:',
|
|
' var args :Array = ["foo", ]',
|
|
'',
|
|
' if __instance().__is_verify_interactions():',
|
|
' __instance().__verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __instance().__save_function_interaction(args)',
|
|
'',
|
|
' if __instance().__do_call_real_func("foo"):',
|
|
' super()',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_static_return_void_function_with_args() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
var fd := GdFunctionDescriptor.new( "foo", 23, false, true, false, TYPE_NIL, "", [
|
|
GdFunctionArgument.new("arg1", TYPE_BOOL),
|
|
GdFunctionArgument.new("arg2", TYPE_STRING, '"default"')
|
|
])
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'static func foo(arg1, arg2="default") -> void:',
|
|
' var args :Array = ["foo", arg1, arg2]',
|
|
'',
|
|
' if __instance().__is_verify_interactions():',
|
|
' __instance().__verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __instance().__save_function_interaction(args)',
|
|
'',
|
|
' if __instance().__do_call_real_func("foo"):',
|
|
' super(arg1, arg2)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_static_script_function_with_args_return_bool() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
|
|
var fd := GdFunctionDescriptor.new( "foo", 23, false, true, false, TYPE_BOOL, "", [
|
|
GdFunctionArgument.new("arg1", TYPE_BOOL),
|
|
GdFunctionArgument.new("arg2", TYPE_STRING, '"default"')
|
|
])
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'static func foo(arg1, arg2="default") -> bool:',
|
|
' var args :Array = ["foo", arg1, arg2]',
|
|
'',
|
|
' if __instance().__is_verify_interactions():',
|
|
' __instance().__verify_interactions(args)',
|
|
' return false',
|
|
' else:',
|
|
' __instance().__save_function_interaction(args)',
|
|
'',
|
|
' if __instance().__do_call_real_func("foo"):',
|
|
' return super(arg1, arg2)',
|
|
' return false',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_virtual_return_void_function_with_arg() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void _input(event: InputEvent) virtual
|
|
var fd := get_function_description("Node", "_input")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func _input(event_) -> void:',
|
|
' var args :Array = ["_input", event_]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("_input"):',
|
|
' super(event_)',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
func test_double_virtual_return_void_function_without_arg() -> void:
|
|
var doubler := GdUnitSpyFunctionDoubler.new(false)
|
|
# void _ready() virtual
|
|
var fd := get_function_description("Node", "_ready")
|
|
var expected := [
|
|
'@warning_ignore("untyped_declaration")' if Engine.get_version_info().hex >= 0x40200 else '',
|
|
'@warning_ignore("native_method_override")',
|
|
'@warning_ignore("shadowed_variable")',
|
|
'func _ready() -> void:',
|
|
' var args :Array = ["_ready", ]',
|
|
'',
|
|
' if __is_verify_interactions():',
|
|
' __verify_interactions(args)',
|
|
' return',
|
|
' else:',
|
|
' __save_function_interaction(args)',
|
|
'',
|
|
' if __do_call_real_func("_ready"):',
|
|
' super()',
|
|
'',
|
|
'']
|
|
assert_array(doubler.double(fd)).contains_exactly(expected)
|
|
|
|
|
|
class NodeWithOutVirtualFunc extends Node:
|
|
func _ready():
|
|
pass
|
|
|
|
#func _input(event :InputEvent) -> void:
|
|
|
|
func test_spy_on_script_respect_virtual_functions():
|
|
var do_spy = auto_free(GdUnitSpyBuilder.spy_on_script(auto_free(NodeWithOutVirtualFunc.new()), [], true).new())
|
|
assert_that(do_spy.has_method("_ready")).is_true()
|
|
assert_that(do_spy.has_method("_input")).is_false()
|