75 lines
2.8 KiB
GDScript
75 lines
2.8 KiB
GDScript
extends GutInternalTester
|
|
|
|
|
|
class TestBoth:
|
|
extends GutInternalTester
|
|
|
|
const INIT_PARAMETERS = 'res://test/resources/stub_test_objects/init_parameters.gd'
|
|
var InitParameters = load(INIT_PARAMETERS)
|
|
|
|
var _spy = null
|
|
var _doubler = null
|
|
|
|
func before_each():
|
|
_spy = GutUtils.Spy.new()
|
|
_doubler = GutUtils.Doubler.new()
|
|
_doubler.set_spy(_spy)
|
|
# var stubber = GutUtils.Stubber.new()
|
|
# _doubler.set_stubber(stubber)
|
|
|
|
func after_each():
|
|
_spy.clear()
|
|
|
|
func test_spy_is_set_in_metadata():
|
|
var inst = autofree(_doubler.double(DoubleMe).new())
|
|
assert_eq(inst.__gutdbl.spy_ref.get_ref(), _spy)
|
|
|
|
func test_when_doubled_method_called_spy_sees_it():
|
|
var inst = autofree(_doubler.double(DoubleMe).new())
|
|
inst.set_value(5)
|
|
assert_true(_spy.was_called(inst, 'set_value'))
|
|
|
|
func test_when_doubled_method_called_it_sends_parameters():
|
|
var inst = autofree(_doubler.double(DoubleMe).new())
|
|
inst.set_value(5)
|
|
assert_true(_spy.was_called(inst, 'set_value', [5]))
|
|
|
|
func test_it_works_with_two_parameters_too():
|
|
var inst = autofree(_doubler.double(DoubleMe).new())
|
|
inst.has_two_params_one_default('a', 'b')
|
|
assert_false(_spy.was_called(inst, 'has_two_params_one_default', ['c', 'd']), 'should not match')
|
|
assert_true(_spy.was_called(inst, 'has_two_params_one_default', ['a', 'b']), 'should match')
|
|
|
|
func test_can_spy_on_built_ins_when_doing_a_full_double():
|
|
_doubler.set_strategy(DOUBLE_STRATEGY.INCLUDE_NATIVE)
|
|
var inst = autofree(_doubler.double(DoubleMe).new())
|
|
# add_user_signal is a function on Object that isn't in our subclass.
|
|
inst.add_user_signal('new_signal', [])
|
|
inst.add_user_signal('signal_with_params', ['a', 'b'])
|
|
assert_true(_spy.was_called(inst, 'add_user_signal'), 'added first signal')
|
|
assert_true(_spy.was_called(inst, 'add_user_signal', ['signal_with_params', ['a', 'b']]), 'second signal added')
|
|
|
|
func test_can_spy_on_native_doubles():
|
|
var inst = autofree(_doubler.partial_double_gdnative(Node2D).new())
|
|
inst.set_position(Vector2(20, 20))
|
|
assert_true(_spy.was_called(inst, 'set_position'))
|
|
assert_true(_spy.was_called(inst, 'set_position', [Vector2(20, 20)]))
|
|
|
|
func test_can_spy_on_singleton_doubles():
|
|
var inst = _doubler.double_singleton(Input).new()
|
|
inst.is_action_just_pressed("foobar")
|
|
assert_true(_spy.was_called(inst, "is_action_just_pressed"))
|
|
|
|
func test_can_spy_on_singleton_parameters():
|
|
var inst = _doubler.double_singleton(OS).new()
|
|
inst.is_process_running(5)
|
|
assert_true(_spy.was_called(inst, 'is_process_running', [5]))
|
|
|
|
func test_can_spy_on_init():
|
|
var inst = _doubler.double(InitParameters).new('test_value')
|
|
assert_true(_spy.was_called(inst, '_init'))
|
|
|
|
func test_can_spy_on_init_parameters():
|
|
var inst = _doubler.double(InitParameters).new('test_value')
|
|
assert_true(_spy.was_called(inst, '_init', ['test_value']))
|