Files
game-cards/addons/gut/test/integration/test_stubbing_accessors.gd

72 lines
2.2 KiB
GDScript3
Raw Normal View History

2026-05-29 09:16:10 +08:00
extends GutTest
var Stubber = load('res://addons/gut/stubber.gd')
var Doubler = load('res://addons/gut/doubler.gd')
var StubParams = load('res://addons/gut/stub_params.gd')
class HasAccessors:
var string_normal_accessors = 'default' :
get: return string_normal_accessors
set(val): string_normal_accessors = val
var string_accessor_method = 'default' :
get = _get_string_accessor_method,
set = _set_string_accessor_method
func _get_string_accessor_method():
return string_accessor_method
func _set_string_accessor_method(val):
string_accessor_method = val
func this_is_a_normal_method():
print('you called this normal method')
var doubler = null
var stubber = null
func before_each():
doubler = Doubler.new(GutUtils.DOUBLE_STRATEGY.INCLUDE_NATIVE)
# doubler.print_source = true
doubler.inner_class_registry.register(self.get_script())
stubber = GutUtils.Stubber.new()
doubler.set_stubber(stubber)
func test_can_double_scripts_with_accessors():
var DoubleHasAccessors = doubler.double(HasAccessors)
var inst = DoubleHasAccessors.new()
assert_not_null(inst)
func test_normal_get_accessor_not_stubbed():
var DoubleHasAccessors = doubler.double(HasAccessors)
var dbl_ha = DoubleHasAccessors.new()
assert_eq(dbl_ha.string_normal_accessors, 'default')
func test_normal_set_accessor_not_stubbed():
var DoubleHasAccessors = doubler.double(HasAccessors)
var dbl_ha = DoubleHasAccessors.new()
dbl_ha.string_normal_accessors = 'foo'
assert_eq(dbl_ha.string_normal_accessors, 'foo')
func test_get_accessor_method_is_stubbed_to_do_nothing():
var dbl_ha = doubler.double(HasAccessors).new()
assert_null(dbl_ha.string_accessor_method)
func test_set_accessor_method_is_stubbed_to_do_nothing():
var dbl_ha = doubler.double(HasAccessors).new()
var sp1 = StubParams.new(dbl_ha, '_get_string_accessor_method').to_call_super()
stubber.add_stub(sp1)
dbl_ha.string_accessor_method = 'bar'
assert_eq(dbl_ha.string_accessor_method, 'default')
func test_partial_double_works():
var dbl_ha = doubler.partial_double(HasAccessors).new()
dbl_ha.string_normal_accessors = 'foo'
dbl_ha.string_accessor_method = 'bar'
assert_eq(dbl_ha.string_normal_accessors, 'foo')
assert_eq(dbl_ha.string_accessor_method, 'bar')