summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd
diff options
context:
space:
mode:
authorradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
committerradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
commita89e744ed0e8c759caf041a580112365bbfe4303 (patch)
treedd61e320904176995727e86a857d00c90d4933ba /addons/gdUnit4/src/doubler/GdUnitObjectInteractions.gd
parent6d53d8cac78250dc888aa49d5f9d4175c6652feb (diff)
escoria updateHEADmain
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()