mirror of
https://github.com/littensy/charm.git
synced 2026-10-20 17:51:37 +00:00
35 lines
718 B
Text
35 lines
718 B
Text
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
|
|
|
local Charm = require(ReplicatedStorage.DevPackages.Charm)
|
|
local atom = Charm.atom
|
|
local observe = Charm.observe
|
|
|
|
return function()
|
|
it("observes lifetime", function()
|
|
local itemsAtom = atom({ "a", "b", "c" })
|
|
local state = {}
|
|
|
|
local cleanup = observe(itemsAtom, function(item, key)
|
|
state[key] = item
|
|
return function()
|
|
state[key] = nil
|
|
end
|
|
end)
|
|
|
|
for key = 1, 3 do
|
|
expect(state[key]).to.equal(itemsAtom()[key])
|
|
end
|
|
|
|
itemsAtom({ [4] = "d", [5] = "e", [6] = "f" })
|
|
|
|
for key = 1, 6 do
|
|
expect(state[key]).to.equal(itemsAtom()[key])
|
|
end
|
|
|
|
cleanup()
|
|
|
|
for key = 1, 6 do
|
|
expect(state[key]).to.equal(nil)
|
|
end
|
|
end)
|
|
end
|