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()