argument_count.gd 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. extends Node
  2. func my_func_1(_foo, _bar):
  3. pass
  4. func my_func_2(_foo, _bar, _baz):
  5. pass
  6. static func my_static_func_1(_foo, _bar):
  7. pass
  8. static func my_static_func_2(_foo, _bar, _baz):
  9. pass
  10. @rpc
  11. func my_rpc_func_1(_foo, _bar):
  12. pass
  13. @rpc
  14. func my_rpc_func_2(_foo, _bar, _baz):
  15. pass
  16. func test():
  17. # Test built-in methods.
  18. var builtin_callable_1 : Callable = add_to_group
  19. print(builtin_callable_1.get_argument_count()) # Should print 2.
  20. var builtin_callable_2 : Callable = find_child
  21. print(builtin_callable_2.get_argument_count()) # Should print 3.
  22. # Test built-in vararg methods.
  23. var builtin_vararg_callable_1 : Callable = call_thread_safe
  24. print(builtin_vararg_callable_1.get_argument_count()) # Should print 1.
  25. var builtin_vararg_callable_2 : Callable = rpc_id
  26. print(builtin_vararg_callable_2.get_argument_count()) # Should print 2.
  27. # Test plain methods.
  28. var callable_1 : Callable = my_func_1
  29. print(callable_1.get_argument_count()) # Should print 2.
  30. var callable_2 : Callable = my_func_2
  31. print(callable_2.get_argument_count()) # Should print 3.
  32. # Test static methods.
  33. var static_callable_1 : Callable = my_static_func_1
  34. print(static_callable_1.get_argument_count()) # Should print 2.
  35. var static_callable_2 : Callable = my_static_func_2
  36. print(static_callable_2.get_argument_count()) # Should print 3.
  37. # Test rpc methods.
  38. var rpc_callable_1 : Callable = my_rpc_func_1
  39. print(rpc_callable_1.get_argument_count()) # Should print 2.
  40. var rpc_callable_2 : Callable = my_rpc_func_2
  41. print(rpc_callable_2.get_argument_count()) # Should print 3.
  42. # Test lambdas.
  43. var lambda_callable_1 : Callable = func(_foo, _bar): pass
  44. print(lambda_callable_1.get_argument_count()) # Should print 2.
  45. var lambda_callable_2 : Callable = func(_foo, _bar, _baz): pass
  46. print(lambda_callable_2.get_argument_count()) # Should print 3.
  47. # Test lambdas with self.
  48. var lambda_self_callable_1 : Callable = func(_foo, _bar): return self
  49. print(lambda_self_callable_1.get_argument_count()) # Should print 2.
  50. var lambda_self_callable_2 : Callable = func(_foo, _bar, _baz): return self
  51. print(lambda_self_callable_2.get_argument_count()) # Should print 3.
  52. # Test bind.
  53. var bind_callable_1 : Callable = my_func_2.bind(1)
  54. print(bind_callable_1.get_argument_count()) # Should print 2.
  55. var bind_callable_2 : Callable = my_func_2.bind(1, 2)
  56. print(bind_callable_2.get_argument_count()) # Should print 1.
  57. # Test unbind.
  58. var unbind_callable_1 : Callable = my_func_2.unbind(1)
  59. print(unbind_callable_1.get_argument_count()) # Should print 4.
  60. var unbind_callable_2 : Callable = my_func_2.unbind(2)
  61. print(unbind_callable_2.get_argument_count()) # Should print 5.
  62. # Test variant callables.
  63. var string_tmp := String()
  64. var variant_callable_1 : Callable = string_tmp.replace
  65. print(variant_callable_1.get_argument_count()) # Should print 2.
  66. var variant_callable_2 : Callable = string_tmp.rsplit
  67. print(variant_callable_2.get_argument_count()) # Should print 3.
  68. # Test variant vararg callables.
  69. var callable_tmp := Callable()
  70. var variant_vararg_callable_1 : Callable = callable_tmp.call
  71. print(variant_vararg_callable_1.get_argument_count()) # Should print 0.
  72. var variant_vararg_callable_2 : Callable = callable_tmp.rpc_id
  73. print(variant_vararg_callable_2.get_argument_count()) # Should print 1.
  74. # Test global methods.
  75. var global_callable_1 = is_equal_approx
  76. print(global_callable_1.get_argument_count()) # Should print 2.
  77. var global_callable_2 = inverse_lerp
  78. print(global_callable_2.get_argument_count()) # Should print 3.
  79. # Test GDScript methods.
  80. var gdscript_callable_1 = char
  81. print(gdscript_callable_1.get_argument_count()) # Should print 1.
  82. var gdscript_callable_2 = is_instance_of
  83. print(gdscript_callable_2.get_argument_count()) # Should print 2.