local ReplicatedStorage = game:GetService("ReplicatedStorage") local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local ReactCharm = require(ReplicatedStorage.DevPackages.ReactCharm) local useAtom = ReactCharm.useAtom local renderHook = require(script.Parent.Parent.utils.renderHook) return function() it("tracks atom state", function() local source = atom(0) local hook = renderHook(function() return useAtom(source) end) expect(hook.result).to.equal(0) source(1) expect(hook.result).to.equal(1) end) it("accepts a molecule", function() local source = atom(0) local hook = renderHook(function() return useAtom(function() return 2 * source() end) end) expect(hook.result).to.equal(0) source(1) expect(hook.result).to.equal(2) end) it("tracks dependencies", function() local source = atom(0) local hook = renderHook(function() return useAtom(source, { source }) end) expect(hook.result).to.equal(0) source(1) expect(hook.result).to.equal(1) source = atom(0) hook.rerender() expect(hook.result).to.equal(0) source(1) expect(hook.result).to.equal(1) end) end