summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/asserts/CallBackValueProvider.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/asserts/CallBackValueProvider.gd')
-rw-r--r--addons/gdUnit4/src/asserts/CallBackValueProvider.gd25
1 files changed, 25 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/asserts/CallBackValueProvider.gd b/addons/gdUnit4/src/asserts/CallBackValueProvider.gd
new file mode 100644
index 0000000..6be4b3e
--- /dev/null
+++ b/addons/gdUnit4/src/asserts/CallBackValueProvider.gd
@@ -0,0 +1,25 @@
+# a value provider unsing a callback to get `next` value from a certain function
+class_name CallBackValueProvider
+extends ValueProvider
+
+var _cb :Callable
+var _args :Array
+
+
+func _init(instance :Object, func_name :String, args :Array = Array(), force_error := true) -> void:
+ _cb = Callable(instance, func_name);
+ _args = args
+ if force_error and not _cb.is_valid():
+ push_error("Can't find function '%s' checked instance %s" % [func_name, instance])
+
+
+func get_value() -> Variant:
+ if not _cb.is_valid():
+ return null
+ if _args.is_empty():
+ return await _cb.call()
+ return await _cb.callv(_args)
+
+
+func dispose() -> void:
+ _cb = Callable()