OverviewFilesCommitsIssuesDocsReleasesPeers

nvidia-rtx-godot / modules / gdscript / tests / scripts / runtime / features / argument_count.gd

103 lines · gd ref:
extends Node

func my_func_1(_foo, _bar):
	pass

func my_func_2(_foo, _bar, _baz):
	pass

static func my_static_func_1(_foo, _bar):
	pass

static func my_static_func_2(_foo, _bar, _baz):
	pass

@rpc
func my_rpc_func_1(_foo, _bar):
	pass

@rpc
func my_rpc_func_2(_foo, _bar, _baz):
	pass

func test():
	# Test built-in methods.
	var builtin_callable_1 : Callable = add_to_group
	print(builtin_callable_1.get_argument_count()) # Should print 2.
	var builtin_callable_2 : Callable = find_child
	print(builtin_callable_2.get_argument_count()) # Should print 3.

	# Test built-in vararg methods.
	var builtin_vararg_callable_1 : Callable = call_thread_safe
	print(builtin_vararg_callable_1.get_argument_count()) # Should print 1.
	var builtin_vararg_callable_2 : Callable = rpc_id
	print(builtin_vararg_callable_2.get_argument_count()) # Should print 2.

	# Test plain methods.
	var callable_1 : Callable = my_func_1
	print(callable_1.get_argument_count()) # Should print 2.
	var callable_2 : Callable = my_func_2
	print(callable_2.get_argument_count()) # Should print 3.

	# Test static methods.
	var static_callable_1 : Callable = my_static_func_1
	print(static_callable_1.get_argument_count()) # Should print 2.
	var static_callable_2 : Callable = my_static_func_2
	print(static_callable_2.get_argument_count()) # Should print 3.

	# Test rpc methods.
	var rpc_callable_1 : Callable = my_rpc_func_1
	print(rpc_callable_1.get_argument_count()) # Should print 2.
	var rpc_callable_2 : Callable = my_rpc_func_2
	print(rpc_callable_2.get_argument_count()) # Should print 3.

	# Test lambdas.
	var lambda_callable_1 : Callable = func(_foo, _bar): pass
	print(lambda_callable_1.get_argument_count()) # Should print 2.
	var lambda_callable_2 : Callable = func(_foo, _bar, _baz): pass
	print(lambda_callable_2.get_argument_count()) # Should print 3.

	# Test lambdas with self.
	var lambda_self_callable_1 : Callable = func(_foo, _bar): return self
	print(lambda_self_callable_1.get_argument_count()) # Should print 2.
	var lambda_self_callable_2 : Callable = func(_foo, _bar, _baz): return self
	print(lambda_self_callable_2.get_argument_count()) # Should print 3.

	# Test bind.
	var bind_callable_1 : Callable = my_func_2.bind(1)
	print(bind_callable_1.get_argument_count()) # Should print 2.
	var bind_callable_2 : Callable = my_func_2.bind(1, 2)
	print(bind_callable_2.get_argument_count()) # Should print 1.

	# Test unbind.
	var unbind_callable_1 : Callable = my_func_2.unbind(1)
	print(unbind_callable_1.get_argument_count()) # Should print 4.
	var unbind_callable_2 : Callable = my_func_2.unbind(2)
	print(unbind_callable_2.get_argument_count()) # Should print 5.

	# Test variant callables.
	var string_tmp := String()
	var variant_callable_1 : Callable = string_tmp.replace
	print(variant_callable_1.get_argument_count()) # Should print 2.
	var variant_callable_2 : Callable = string_tmp.rsplit
	print(variant_callable_2.get_argument_count()) # Should print 3.

	# Test variant vararg callables.
	var callable_tmp := Callable()
	var variant_vararg_callable_1 : Callable = callable_tmp.call
	print(variant_vararg_callable_1.get_argument_count()) # Should print 0.
	var variant_vararg_callable_2 : Callable = callable_tmp.rpc_id
	print(variant_vararg_callable_2.get_argument_count()) # Should print 1.

	# Test global methods.
	var global_callable_1 = is_equal_approx
	print(global_callable_1.get_argument_count()) # Should print 2.
	var global_callable_2 = inverse_lerp
	print(global_callable_2.get_argument_count()) # Should print 3.

	# Test GDScript methods.
	var gdscript_callable_1 = char
	print(gdscript_callable_1.get_argument_count()) # Should print 1.
	var gdscript_callable_2 = is_instance_of
	print(gdscript_callable_2.get_argument_count()) # Should print 2.