MCPcopy Create free account
hub / github.com/TanStack/db / testCount

Function testCount

packages/db-ivm/tests/operators/count.test.ts:18–214  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

16})
17
18function testCount() {
19 test(`basic count operation`, () => {
20 const graph = new D2()
21 const input = graph.newInput<[number, string]>()
22 const tracker = new KeyedMessageTracker<number, number>()
23
24 input.pipe(
25 count(),
26 output((message) => {
27 tracker.addMessage(message)
28 }),
29 )
30
31 graph.finalize()
32
33 input.sendData(
34 new MultiSet([
35 [[1, `a`], 2],
36 [[2, `b`], 1],
37 [[2, `c`], 1],
38 [[2, `d`], 1],
39 [[3, `x`], 1],
40 [[3, `y`], -1],
41 ]),
42 )
43 input.sendData(new MultiSet([[[3, `z`], 1]]))
44 graph.run()
45
46 const result = tracker.getResult()
47
48 // Assert only keys that have values are affected
49 assertOnlyKeysAffected(`basic count operation`, result.messages, [1, 2, 3])
50
51 // Assert the final materialized results are correct
52 assertKeyedResults(
53 `basic count operation`,
54 result,
55 [
56 [1, 2], // 2 values for key 1
57 [2, 3], // 3 values for key 2
58 [3, 1], // 1 value for key 3 (1 + (-1) + 1 = 1)
59 ],
60 6, // Expected message count
61 )
62 })
63
64 test(`count with all negative multiplicities`, () => {
65 const graph = new D2()
66 const input = graph.newInput<[number, string]>()
67 const tracker = new KeyedMessageTracker<number, number>()
68
69 input.pipe(
70 count(),
71 output((message) => {
72 tracker.addMessage(message)
73 }),
74 )
75

Callers 1

count.test.tsFile · 0.85

Calls 12

newInputMethod · 0.95
addMessageMethod · 0.95
finalizeMethod · 0.95
runMethod · 0.95
getResultMethod · 0.95
resetMethod · 0.95
outputFunction · 0.85
assertOnlyKeysAffectedFunction · 0.85
assertKeyedResultsFunction · 0.85
pipeMethod · 0.80
countFunction · 0.50
sendDataMethod · 0.45

Tested by

no test coverage detected