summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd')
-rw-r--r--addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd53
1 files changed, 53 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd b/addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd
new file mode 100644
index 0000000..789eb32
--- /dev/null
+++ b/addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd
@@ -0,0 +1,53 @@
+class_name GdUnitObjectInteractions
+extends RefCounted
+
+
+static func verify(interaction_object: Object, interactions_times: int) -> Variant:
+ if not _is_mock_or_spy(interaction_object):
+ return interaction_object
+
+ _get_verifier(interaction_object).do_verify_interactions(interactions_times)
+ return interaction_object
+
+
+static func verify_no_interactions(interaction_object: Object) -> GdUnitAssert:
+ var assert_tool := GdUnitAssertImpl.new("")
+ if not _is_mock_or_spy(interaction_object):
+ return assert_tool.report_success()
+
+ var summary := _get_verifier(interaction_object).verify_no_interactions()
+ if summary.is_empty():
+ return assert_tool.report_success()
+ return assert_tool.report_error(GdAssertMessages.error_no_more_interactions(summary))
+
+
+static func verify_no_more_interactions(interaction_object: Object) -> GdUnitAssert:
+ var assert_tool := GdUnitAssertImpl.new("")
+ if not _is_mock_or_spy(interaction_object):
+ return assert_tool
+
+ var summary := _get_verifier(interaction_object).verify_no_more_interactions()
+ if summary.is_empty():
+ return assert_tool
+ return assert_tool.report_error(GdAssertMessages.error_no_more_interactions(summary))
+
+
+static func reset(interaction_object: Object) -> Object:
+ if not _is_mock_or_spy(interaction_object):
+ return interaction_object
+
+ _get_verifier(interaction_object).reset_interactions()
+ return interaction_object
+
+
+static func _is_mock_or_spy(instance: Object) -> bool:
+ if instance != null and instance.has_method("__get_verifier"):
+ return true
+
+ push_error("Error: The given object '%s' is not a mock or spy instance!" % instance)
+ return false
+
+
+static func _get_verifier(interaction_object: Object) -> GdUnitObjectInteractionsVerifier:
+ @warning_ignore("unsafe_method_access")
+ return interaction_object.__get_verifier()