mirror of
https://github.com/centau/vide.git
synced 2026-08-20 14:41:37 +00:00
This commit is contained in:
parent
5b270f0f36
commit
f7ce5f024d
4 changed files with 32 additions and 43 deletions
|
|
@ -949,58 +949,32 @@ TEST("spring()", function()
|
|||
end
|
||||
end)
|
||||
|
||||
TEST("Event", function()
|
||||
TEST("Events", function()
|
||||
local create = vide.create
|
||||
local source = vide.source
|
||||
|
||||
local function Thing(props)
|
||||
local instance = Instance.new("Thing") :: any
|
||||
instance.Signal = (Signal.new() :: any) :: RBXScriptSignal & { Fire: any }
|
||||
testkit.print2(getmetatable(instance))
|
||||
return create(instance)(props)
|
||||
end
|
||||
|
||||
do CASE "Connect event"
|
||||
local connected = false
|
||||
|
||||
local event = (Signal.new() :: any) :: RBXScriptSignal & { Fire: any }
|
||||
|
||||
local val = create "IntValue" {
|
||||
Changed = event,
|
||||
[Event.Changed] = function(newval)
|
||||
local val = Thing {
|
||||
Signal = function(newval)
|
||||
connected = true
|
||||
CHECK(newval == 1)
|
||||
end
|
||||
} :: IntValue
|
||||
}
|
||||
|
||||
testkit.print2(getmetatable(val))
|
||||
|
||||
CHECK(not connected)
|
||||
val.Value = 1; event:Fire(val.Value)
|
||||
vide.step(1/60)
|
||||
val.Value = 1; val.Signal:Fire(val.Value)
|
||||
CHECK(connected)
|
||||
end
|
||||
|
||||
do CASE "Bind connection to state"
|
||||
local countA = 0
|
||||
local countB = 0
|
||||
local listener, set = source(function() countA += 1 end :: () -> ()?)
|
||||
|
||||
local event = (Signal.new() :: any) :: RBXScriptSignal & { Fire: any }
|
||||
|
||||
local int = create "IntValue" {
|
||||
Changed = event,
|
||||
[Event.Changed] = listener
|
||||
} :: IntValue
|
||||
|
||||
int.Value = 1; event:Fire(int.Value)
|
||||
int.Value = 2; event:Fire(int.Value)
|
||||
CHECK(countA == 2)
|
||||
set(function() return function() countB += 1 end end)
|
||||
int.Value = 3; event:Fire(int.Value)
|
||||
int.Value = 4; event:Fire(int.Value)
|
||||
CHECK(countA == 2)
|
||||
CHECK(countB == 2)
|
||||
set(nil)
|
||||
int.Value = 5; event:Fire(int.Value)
|
||||
CHECK(countA == 2)
|
||||
CHECK(countB == 2)
|
||||
end
|
||||
|
||||
do CASE "Always return same object for a given index"
|
||||
CHECK(Event.Test == Event.Test)
|
||||
end
|
||||
end)
|
||||
|
||||
TEST("Changed", function()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue