| 
									
										
										
										
											2024-01-28 15:16:09 +01:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-07 10:05:42 +02:00
										 |  |  |     # Test lambdas with self. | 
					
						
							| 
									
										
										
										
											2024-01-28 15:16:09 +01:00
										 |  |  |     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. |