mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-14 14:30:24 +01:00
118 lines
2.6 KiB
GDScript
118 lines
2.6 KiB
GDScript
|
var return_val = null
|
||
|
var stub_target = null
|
||
|
var target_subpath = null
|
||
|
# the parameter values to match method call on.
|
||
|
var parameters = null
|
||
|
var stub_method = null
|
||
|
var call_super = false
|
||
|
|
||
|
# -- Paramter Override --
|
||
|
# Parmater overrides are stored in here along with all the other stub info
|
||
|
# so that you can chain stubbing parameter overrides along with all the
|
||
|
# other stubbing. This adds some complexity to the logic that tries to
|
||
|
# find the correct stub for a call by a double. Since an instance of this
|
||
|
# class could be just a parameter override, or it could have been chained
|
||
|
# we have to have _paramter_override_only so that we know when to tell the
|
||
|
# difference.
|
||
|
var parameter_count = -1
|
||
|
var parameter_defaults = null
|
||
|
# Anything that would make this stub not just an override of paramters
|
||
|
# must set this flag to false. This must be private bc the actual logic
|
||
|
# to determine if this stub is only an override is more complicated.
|
||
|
var _parameter_override_only = true
|
||
|
# --
|
||
|
|
||
|
const NOT_SET = "|_1_this_is_not_set_1_|"
|
||
|
|
||
|
|
||
|
func _init(target = null, method = null, subpath = null):
|
||
|
stub_target = target
|
||
|
stub_method = method
|
||
|
target_subpath = subpath
|
||
|
|
||
|
|
||
|
func to_return(val):
|
||
|
return_val = val
|
||
|
call_super = false
|
||
|
_parameter_override_only = false
|
||
|
return self
|
||
|
|
||
|
|
||
|
func to_do_nothing():
|
||
|
return to_return(null)
|
||
|
|
||
|
|
||
|
func to_call_super():
|
||
|
call_super = true
|
||
|
_parameter_override_only = false
|
||
|
return self
|
||
|
|
||
|
|
||
|
func when_passed(
|
||
|
p1 = NOT_SET,
|
||
|
p2 = NOT_SET,
|
||
|
p3 = NOT_SET,
|
||
|
p4 = NOT_SET,
|
||
|
p5 = NOT_SET,
|
||
|
p6 = NOT_SET,
|
||
|
p7 = NOT_SET,
|
||
|
p8 = NOT_SET,
|
||
|
p9 = NOT_SET,
|
||
|
p10 = NOT_SET
|
||
|
):
|
||
|
parameters = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]
|
||
|
var idx = 0
|
||
|
while idx < parameters.size():
|
||
|
if str(parameters[idx]) == NOT_SET:
|
||
|
parameters.remove(idx)
|
||
|
else:
|
||
|
idx += 1
|
||
|
return self
|
||
|
|
||
|
|
||
|
func param_count(x):
|
||
|
parameter_count = x
|
||
|
return self
|
||
|
|
||
|
|
||
|
func param_defaults(values):
|
||
|
parameter_count = values.size()
|
||
|
parameter_defaults = values
|
||
|
return self
|
||
|
|
||
|
|
||
|
func has_param_override():
|
||
|
return parameter_count != -1
|
||
|
|
||
|
|
||
|
func is_param_override_only():
|
||
|
var to_return = false
|
||
|
if has_param_override():
|
||
|
to_return = _parameter_override_only
|
||
|
return to_return
|
||
|
|
||
|
|
||
|
func to_s():
|
||
|
var base_string = str(stub_target)
|
||
|
if target_subpath != null:
|
||
|
base_string += str("[", target_subpath, "].")
|
||
|
else:
|
||
|
base_string += "."
|
||
|
base_string += stub_method
|
||
|
|
||
|
if has_param_override():
|
||
|
base_string += str(
|
||
|
" (param count override=", parameter_count, " defaults=", parameter_defaults
|
||
|
)
|
||
|
if is_param_override_only():
|
||
|
base_string += " ONLY"
|
||
|
base_string += ") "
|
||
|
|
||
|
if call_super:
|
||
|
base_string += " to call SUPER"
|
||
|
|
||
|
if parameters != null:
|
||
|
base_string += str(" with params (", parameters, ") returns ", return_val)
|
||
|
|
||
|
return base_string
|