104 lines
2.9 KiB
GDScript3
104 lines
2.9 KiB
GDScript3
|
|
extends __GDRx_Test__
|
||
|
|
|
||
|
|
const TEST_UNIT_NAME = "REACTIVE_PROPERTY"
|
||
|
|
|
||
|
|
func test_gd_reactive_property() -> bool:
|
||
|
|
var prop = ReactiveProperty.new(0)
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
prop.Value = 1
|
||
|
|
prop.Value = 2
|
||
|
|
prop.Value = 3
|
||
|
|
var correct_value : bool = prop.Value == 3
|
||
|
|
prop.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 2, 3, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value
|
||
|
|
|
||
|
|
var _member : int = -1
|
||
|
|
func test_gd_from_member() -> bool:
|
||
|
|
self._member = 0
|
||
|
|
var prop = ReactiveProperty.FromMember(self, "_member")
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
prop.Value = 1
|
||
|
|
prop.Value = 2
|
||
|
|
prop.Value = 3
|
||
|
|
var correct_value : bool = prop.Value == 3
|
||
|
|
prop.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 2, 3, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value or self._member != 3
|
||
|
|
|
||
|
|
var _setget_member : int = -1
|
||
|
|
func _set_member(value : int):
|
||
|
|
self._setget_member = value
|
||
|
|
func _get_member() -> int:
|
||
|
|
return self._setget_member
|
||
|
|
func test_gd_setget_reactive_property() -> bool:
|
||
|
|
self._set_member(0)
|
||
|
|
var prop = ReactiveProperty.FromGetSet(self._get_member, self._set_member)
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
prop.Value = 1
|
||
|
|
prop.Value = 2
|
||
|
|
prop.Value = 3
|
||
|
|
var correct_value : bool = prop.Value == 3
|
||
|
|
prop.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 2, 3, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value or self._get_member() != 3
|
||
|
|
|
||
|
|
func test_gd_readonly_reactive_property() -> bool:
|
||
|
|
var prop = ReactiveProperty.new(0)
|
||
|
|
var ro_prop = prop.to_readonly()
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = ro_prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
prop.Value = 1
|
||
|
|
prop.Value = 2
|
||
|
|
prop.Value = 3
|
||
|
|
var correct_value : bool = prop.Value == 3
|
||
|
|
prop.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 2, 3, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value
|
||
|
|
|
||
|
|
func test_gd_sourced_reactive_property() -> bool:
|
||
|
|
var subject = Subject.new()
|
||
|
|
var prop = ReactiveProperty.new(0, true, true, subject.as_observable())
|
||
|
|
var ro_prop = prop.to_readonly()
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = ro_prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
subject.on_next(1)
|
||
|
|
subject.on_next(2)
|
||
|
|
subject.on_next(3)
|
||
|
|
var correct_value : bool = prop.Value == 3
|
||
|
|
subject.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 2, 3, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value
|
||
|
|
|
||
|
|
func test_gd_computed_reactive_property() -> bool:
|
||
|
|
var prop1 = ReactiveProperty.new(0)
|
||
|
|
var prop2 = ReactiveProperty.new(0)
|
||
|
|
var ro_prop1 = prop1.to_readonly()
|
||
|
|
var ro_prop2 = prop2.to_readonly()
|
||
|
|
var prop = ReactiveProperty.Computed2(ro_prop1, ro_prop2, func(x, y): return x + y)
|
||
|
|
var xs : Array = []
|
||
|
|
var __ = prop.subscribe(func(x): xs.append(x))
|
||
|
|
|
||
|
|
prop1.Value = 1
|
||
|
|
prop2.Value = 2
|
||
|
|
prop1.Value = 3
|
||
|
|
prop2.Value = 4
|
||
|
|
var correct_value : bool = prop1.Value == 3 and prop2.Value == 4
|
||
|
|
prop1.dispose()
|
||
|
|
|
||
|
|
var result = [0, 1, 3, 5, 7, Comp()]
|
||
|
|
return await compare(GDRx.from_array(xs), result) or !correct_value
|