mirror of
https://github.com/littensy/charm.git
synced 2026-10-20 17:51:37 +00:00
* docs: rewrite documentation * refactor: rename `Molecule` to `Selector` * refactor: replace all references to molecules * docs: rephrase intro * docs: remove italics * docs: fix typo * docs: update atom module names * docs: link example, add file names
36 lines
856 B
Text
36 lines
856 B
Text
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
|
|
|
local Charm = require(ReplicatedStorage.DevPackages.Charm)
|
|
local atom = Charm.atom
|
|
local Vide = require(ReplicatedStorage.DevPackages.Vide)
|
|
local root = Vide.root
|
|
local VideCharm = require(ReplicatedStorage.DevPackages.VideCharm)
|
|
local useAtom = VideCharm.useAtom
|
|
|
|
return function()
|
|
it("tracks atom state", function()
|
|
local state = atom(0)
|
|
local source
|
|
local cleanup = root(function()
|
|
source = useAtom(state)
|
|
end)
|
|
expect(source()).to.equal(0)
|
|
state(1)
|
|
expect(source()).to.equal(1)
|
|
cleanup()
|
|
end)
|
|
|
|
it("accepts a selector", function()
|
|
local state = atom(0)
|
|
local source
|
|
local cleanup = root(function()
|
|
source = useAtom(function()
|
|
return 2 * state()
|
|
end)
|
|
end)
|
|
expect(source()).to.equal(0)
|
|
state(1)
|
|
expect(source()).to.equal(2)
|
|
cleanup()
|
|
end)
|
|
end
|