mirror of
https://github.com/littensy/charm.git
synced 2026-10-22 12:41:37 +00:00
* refactor!: create monorepo * chore: prepare release, set up workflows * refactor: rename `modules` to `src` * docs: add docs for all packages * refactor: rename root project file * chore: bump deps * build: rename `lint`, add `pack` script * revert: delete pack script This will not be useful for development.
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
|