neon-sprawl/client/addons/gdUnit4/src/matchers/GdUnitArgumentMatchers.gd

43 lines
1.4 KiB
GDScript

class_name GdUnitArgumentMatchers
extends RefCounted
const TYPE_ANY = TYPE_MAX + 100
static func to_matcher(arguments: Array[Variant], auto_deep_check_mode := false) -> ChainedArgumentMatcher:
var matchers: Array[Variant] = []
for arg: Variant in arguments:
# argument is already a matcher
if arg is GdUnitArgumentMatcher:
matchers.append(arg)
else:
# pass argument into equals matcher
matchers.append(EqualsArgumentMatcher.new(arg, auto_deep_check_mode))
return ChainedArgumentMatcher.new(matchers)
static func any() -> GdUnitArgumentMatcher:
return AnyArgumentMatcher.new()
static func by_type(type: int) -> GdUnitArgumentMatcher:
return AnyBuildInTypeArgumentMatcher.new([type])
static func by_types(types: PackedInt32Array) -> GdUnitArgumentMatcher:
return AnyBuildInTypeArgumentMatcher.new(types)
static func any_class(clazz: Object) -> GdUnitArgumentMatcher:
return AnyClazzArgumentMatcher.new(clazz)
static func is_variant_string_matching(value: Variant) -> GdUnitResult:
if value is String or value is StringName:
return GdUnitResult.success()
if value is GdUnitArgumentMatcher:
if str(value) == "any()" or str(value) == "any_string()":
return GdUnitResult.success()
return GdUnitResult.error("Only 'any()' and 'any_string()' argument matchers are allowed!")
return GdUnitResult.error("Only String or StringName types are allowed!")