summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd')
-rw-r--r--addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd32
1 files changed, 32 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd b/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd
new file mode 100644
index 0000000..b5e3de3
--- /dev/null
+++ b/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd
@@ -0,0 +1,32 @@
+class_name AnyClazzArgumentMatcher
+extends GdUnitArgumentMatcher
+
+var _clazz :Object
+
+
+func _init(clazz :Object) -> void:
+ _clazz = clazz
+
+
+func is_match(value :Variant) -> bool:
+ if typeof(value) != TYPE_OBJECT:
+ return false
+ if is_instance_valid(value) and GdObjects.is_script(_clazz):
+ @warning_ignore("unsafe_cast")
+ return (value as Object).get_script() == _clazz
+ return is_instance_of(value, _clazz)
+
+
+func _to_string() -> String:
+ if (_clazz as Object).is_class("GDScriptNativeClass"):
+ @warning_ignore("unsafe_method_access")
+ var instance :Object = _clazz.new()
+ var clazz_name := instance.get_class()
+ if not instance is RefCounted:
+ instance.free()
+ return "any_class(<"+clazz_name+">)";
+ if _clazz is GDScript:
+ var result := GdObjects.extract_class_name(_clazz)
+ if result.is_success():
+ return "any_class(<"+ result.value() + ">)"
+ return "any_class()"