Skip to content

Commit 56a2862

Browse files
committed
use beliefEqual in tests
1 parent fe2d15d commit 56a2862

File tree

4 files changed

+93
-57
lines changed

4 files changed

+93
-57
lines changed

TODO.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use beliefEqual in test -- remove assertBeliefReasons
1+
remove assertBeliefReasons
22
extract beliefSystemEqual
33

44
# propagator 支持 dependencies for alternate worldviews

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"build": "tsc",
1313
"build:watch": "tsc --watch",
1414
"test": "node --test",
15+
"test:watch": "node --test --watch",
1516
"format": "prettier src --write"
1617
},
1718
"devDependencies": {

src/belief/Belief.test.ts

+14-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { test } from "node:test"
33
import { Cell, put } from "../cell/index.js"
44
import { Interval, intervalAlmostEqual } from "../interval/index.js"
55
import { run } from "../scheduler/index.js"
6-
import { Belief, assertBeliefReasons } from "./index.js"
6+
import { Belief, beliefEqual, isBelief } from "./index.js"
77

88
test("dependency / a justified-intervals anomaly", async () => {
99
// A: [ ]
@@ -22,8 +22,13 @@ test("dependency / a justified-intervals anomaly", async () => {
2222
await run()
2323

2424
// Actually no dependency on A, but A is recorded anyway.
25-
assertBeliefReasons(interval.content, ["A", "B", "C"])
26-
assert(intervalAlmostEqual(interval.content.value, Interval(50, 75), 0))
25+
26+
assert(
27+
isBelief(interval.content) &&
28+
beliefEqual(interval.content, Belief(Interval(50, 75), ["A", "B", "C"]), {
29+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0),
30+
}),
31+
)
2732

2833
{
2934
// The order matters.
@@ -35,7 +40,11 @@ test("dependency / a justified-intervals anomaly", async () => {
3540

3641
await run()
3742

38-
assertBeliefReasons(interval.content, ["B", "C"])
39-
assert(intervalAlmostEqual(interval.content.value, Interval(50, 75), 0))
43+
assert(
44+
isBelief(interval.content) &&
45+
beliefEqual(interval.content, Belief(Interval(50, 75), ["B", "C"]), {
46+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0),
47+
}),
48+
)
4049
}
4150
})

src/examples/barometer-belief.test.ts

+77-51
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import assert from "node:assert"
22
import { test } from "node:test"
3-
import { Belief, assertBeliefReasons } from "../belief/index.js"
3+
import { Belief, beliefEqual, isBelief } from "../belief/index.js"
44
import { Cell, put } from "../cell/index.js"
55
import { Interval, intervalAlmostEqual } from "../interval/index.js"
66
import { run } from "../scheduler/index.js"
@@ -15,13 +15,15 @@ test("examples / barometer-belief", async () => {
1515

1616
await run()
1717

18-
assertBeliefReasons(buildingHeight.content, ["shadows"])
1918
assert(
20-
intervalAlmostEqual(
21-
buildingHeight.content.value,
22-
Interval(44.51, 48.97),
23-
0.01,
24-
),
19+
isBelief(buildingHeight.content) &&
20+
beliefEqual(
21+
buildingHeight.content,
22+
Belief(Interval(44.51, 48.97), ["shadows"]),
23+
{
24+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
25+
},
26+
),
2527
)
2628

2729
const fallTime = Cell()
@@ -30,76 +32,100 @@ test("examples / barometer-belief", async () => {
3032

3133
await run()
3234

33-
assertBeliefReasons(fallTime.content, ["shadows"])
34-
assert(intervalAlmostEqual(fallTime.content.value, Interval(3, 3.16), 0.01))
35+
assert(
36+
isBelief(fallTime.content) &&
37+
beliefEqual(fallTime.content, Belief(Interval(3, 3.16), ["shadows"]), {
38+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
39+
}),
40+
)
3541

36-
assertBeliefReasons(buildingHeight.content, ["shadows"])
3742
assert(
38-
intervalAlmostEqual(
39-
buildingHeight.content.value,
40-
Interval(44.51, 48.97),
41-
0.01,
42-
),
43+
isBelief(buildingHeight.content) &&
44+
beliefEqual(
45+
buildingHeight.content,
46+
Belief(Interval(44.51, 48.97), ["shadows"]),
47+
{
48+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
49+
},
50+
),
4351
)
4452

4553
put(fallTime, Belief(Interval(2.9, 3.1), ["better-fall-time"]))
4654

4755
await run()
4856

49-
assertBeliefReasons(buildingHeight.content, ["shadows", "better-fall-time"])
5057
assert(
51-
intervalAlmostEqual(
52-
buildingHeight.content.value,
53-
Interval(44.51, 47.24),
54-
0.01,
55-
),
58+
isBelief(buildingHeight.content) &&
59+
beliefEqual(
60+
buildingHeight.content,
61+
Belief(Interval(44.51, 47.24), ["shadows", "better-fall-time"]),
62+
{
63+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
64+
},
65+
),
5666
)
5767

5868
put(buildingHeight, Belief(45, ["superintendent"]))
5969

6070
await run()
6171

62-
assertBeliefReasons(buildingHeight.content, ["superintendent"])
63-
assert.deepStrictEqual(buildingHeight.content.value, 45)
72+
assert(
73+
isBelief(buildingHeight.content) &&
74+
beliefEqual(buildingHeight.content, Belief(45, ["superintendent"]), {
75+
valueEqual: (x, y) => x === y,
76+
}),
77+
)
6478

65-
assertBeliefReasons(barometerHeight.content, [
66-
"superintendent",
67-
"better-fall-time",
68-
"shadows",
69-
])
7079
assert(
71-
intervalAlmostEqual(
72-
barometerHeight.content.value,
73-
Interval(0.3, 0.3),
74-
0.01,
75-
),
80+
isBelief(barometerHeight.content) &&
81+
beliefEqual(
82+
barometerHeight.content,
83+
Belief(Interval(0.3, 0.3), [
84+
"superintendent",
85+
"better-fall-time",
86+
"shadows",
87+
]),
88+
{
89+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
90+
},
91+
),
7692
)
7793

78-
assertBeliefReasons(barometerShadow.content, [
79-
"superintendent",
80-
"better-fall-time",
81-
"shadows",
82-
])
8394
assert(
84-
intervalAlmostEqual(
85-
barometerShadow.content.value,
86-
Interval(0.36, 0.37),
87-
0.01,
88-
),
95+
isBelief(barometerShadow.content) &&
96+
beliefEqual(
97+
barometerShadow.content,
98+
Belief(Interval(0.36, 0.37), [
99+
"superintendent",
100+
"better-fall-time",
101+
"shadows",
102+
]),
103+
{
104+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
105+
},
106+
),
89107
)
90108

91-
assertBeliefReasons(buildingShadow.content, ["shadows"])
92109
assert(
93-
intervalAlmostEqual(
94-
buildingShadow.content.value,
95-
Interval(54.9, 55.1),
96-
0.01,
97-
),
110+
isBelief(buildingShadow.content) &&
111+
beliefEqual(
112+
buildingShadow.content,
113+
Belief(Interval(54.9, 55.1), ["shadows"]),
114+
{
115+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
116+
},
117+
),
98118
)
99119

100-
assertBeliefReasons(fallTime.content, ["superintendent"])
101120
assert(
102-
intervalAlmostEqual(fallTime.content.value, Interval(3.02, 3.03), 0.01),
121+
isBelief(fallTime.content) &&
122+
beliefEqual(
123+
fallTime.content,
124+
Belief(Interval(3.02, 3.03), ["superintendent"]),
125+
{
126+
valueEqual: (x, y) => intervalAlmostEqual(x, y, 0.01),
127+
},
128+
),
103129
)
104130

105131
{

0 commit comments

Comments
 (0)