Files
game-cards/addons/gut/test/unit/test_double_tools.gd
2026-05-29 09:16:10 +08:00

83 lines
1.6 KiB
GDScript

extends GutInternalTester
class FakeBase:
var foo = 'foo'
func set_foo(val):
foo = val
func get_foo():
return foo
class FakeDouble:
extends FakeBase
class TestTheBasics:
extends GutInternalTester
var DoubleTools = load("res://addons/gut/double_tools.gd")
var Stubber = load("res://addons/gut/stubber.gd")
var StubParams = load("res://addons/gut/stub_params.gd")
var call_this_was_called = false
func call_this(value):
call_this_was_called = value
func before_each():
call_this_was_called = false
func test_can_make_one():
assert_not_null(DoubleTools.new())
func test_get_method_to_call_returns_null_when_not_stubbed():
var fd = FakeDouble.new()
var stbr = Stubber.new()
var dt = DoubleTools.new()
dt.stubber_ref = weakref(stbr)
dt.double_ref = weakref(fd)
assert_null(dt.handle_other_stubs('set_foo', [1]))
func test_handle_other_stubs_calls_method():
var fd = FakeDouble.new()
var sp = StubParams.new(fd.set_foo)
sp.to_call(call_this)
var stbr = Stubber.new()
stbr.add_stub(sp)
var dt = DoubleTools.new()
dt.stubber_ref = weakref(stbr)
dt.double_ref = weakref(fd)
dt.handle_other_stubs('set_foo', [1])
assert_eq(call_this_was_called, 1)
stbr.clear()
func test_handle_other_stubs_returns_value():
var fd = FakeDouble.new()
var sp = StubParams.new(fd.get_foo)
sp.to_call(func(): return 'asdf')
var stbr = Stubber.new()
stbr.add_stub(sp)
var dt = DoubleTools.new()
dt.stubber_ref = weakref(stbr)
dt.double_ref = weakref(fd)
var result = dt.handle_other_stubs('get_foo', [])
assert_eq(result, 'asdf')
stbr.clear()