state-tests.ts
27 lines
| 558 B
| video/mp2t
|
TypeScriptLexer
cin
|
r124 | import { observe, stateful } from "./observable"; | ||
import * as t from "tap"; | ||||
interface CounterState { | ||||
count: number; | ||||
label: "low" | "mid" | "high" | ||||
} | ||||
let set: (v: CounterState) => void = () => void (0); | ||||
const initial: CounterState = { count: 0, label: "low" }; | ||||
let value = initial; | ||||
const obs = observe(stateful<CounterState>(({ next }) => { | ||||
next(initial); | ||||
set = next; | ||||
})); | ||||
set({ count: 10, label: "mid" }); | ||||
obs.subscribe({ | ||||
next: v => value = v | ||||
}); | ||||
t.equal(value.count, 10, "State should update"); | ||||
set({ count: 20, label: "high" }); | ||||