Skip to content

Commit fb2d2f0

Browse files
committed
propagators/boolean -- conjoiner & disjoiner
1 parent e1b4849 commit fb2d2f0

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

package-lock.json

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"format": "prettier src --write"
1717
},
1818
"devDependencies": {
19-
"@types/node": "^22.7.1",
19+
"@types/node": "^22.7.4",
2020
"prettier": "^3.3.3",
2121
"prettier-plugin-organize-imports": "^4.1.0",
2222
"typescript": "^5.6.2"

src/propagators/boolean.test.ts

+21-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,29 @@ import assert from "node:assert"
22
import test from "node:test"
33
import { patch } from "../cell/index.js"
44
import { run } from "../scheduler/index.js"
5-
import { inverter } from "./boolean.js"
5+
import { conjoiner, disjoiner, inverter } from "./boolean.js"
66

77
test("propagators / boolean", async () => {
8-
const [x, y] = inverter()
9-
patch(x, true)
8+
{
9+
const [x, y] = inverter()
10+
patch(x, true)
11+
await run()
12+
assert(y.content === false)
13+
}
1014

11-
await run()
15+
{
16+
const [x, y, z] = conjoiner()
17+
patch(x, true)
18+
patch(y, false)
19+
await run()
20+
assert(z.content === false)
21+
}
1222

13-
assert(y.content === false)
23+
{
24+
const [x, y, z] = disjoiner()
25+
patch(x, true)
26+
patch(y, false)
27+
await run()
28+
assert(z.content === true)
29+
}
1430
})

src/propagators/boolean.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import { not } from "../generics/index.js"
1+
import { and, not, or } from "../generics/index.js"
22
import { definePrimitive } from "../propagator/index.js"
33

44
export const inverter = definePrimitive(2, not)
5+
export const conjoiner = definePrimitive(3, and)
6+
export const disjoiner = definePrimitive(3, or)

0 commit comments

Comments
 (0)