MCPcopy
hub / github.com/expr-lang/expr / TestRing

Function TestRing

internal/ring/ring_test.go:8–70  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

6)
7
8func TestRing(t *testing.T) {
9 type op = ringOp[int]
10 testRing(t, New[int](3),
11 // noops on empty ring
12 op{cap: 0, opType: opRst, value: 0, items: []int{}},
13 op{cap: 0, opType: opDeq, value: 0, items: []int{}},
14
15 // basic
16 op{cap: 3, opType: opEnq, value: 1, items: []int{1}},
17 op{cap: 3, opType: opDeq, value: 1, items: []int{}},
18
19 // wrapping
20 op{cap: 3, opType: opEnq, value: 2, items: []int{2}},
21 op{cap: 3, opType: opEnq, value: 3, items: []int{2, 3}},
22 op{cap: 3, opType: opEnq, value: 4, items: []int{2, 3, 4}},
23 op{cap: 3, opType: opDeq, value: 2, items: []int{3, 4}},
24 op{cap: 3, opType: opDeq, value: 3, items: []int{4}},
25 op{cap: 3, opType: opDeq, value: 4, items: []int{}},
26
27 // resetting
28 op{cap: 3, opType: opEnq, value: 2, items: []int{2}},
29 op{cap: 3, opType: opRst, value: 0, items: []int{}},
30 op{cap: 3, opType: opDeq, value: 0, items: []int{}},
31
32 // growing without wrapping
33 op{cap: 3, opType: opEnq, value: 5, items: []int{5}},
34 op{cap: 3, opType: opEnq, value: 6, items: []int{5, 6}},
35 op{cap: 3, opType: opEnq, value: 7, items: []int{5, 6, 7}},
36 op{cap: 6, opType: opEnq, value: 8, items: []int{5, 6, 7, 8}},
37 op{cap: 6, opType: opRst, value: 0, items: []int{}},
38 op{cap: 6, opType: opDeq, value: 0, items: []int{}},
39
40 // growing and wrapping
41 op{cap: 6, opType: opEnq, value: 9, items: []int{9}},
42 op{cap: 6, opType: opEnq, value: 10, items: []int{9, 10}},
43 op{cap: 6, opType: opEnq, value: 11, items: []int{9, 10, 11}},
44 op{cap: 6, opType: opEnq, value: 12, items: []int{9, 10, 11, 12}},
45 op{cap: 6, opType: opEnq, value: 13, items: []int{9, 10, 11, 12, 13}},
46 op{cap: 6, opType: opEnq, value: 14, items: []int{9, 10, 11, 12, 13, 14}},
47 op{cap: 6, opType: opDeq, value: 9, items: []int{10, 11, 12, 13, 14}},
48 op{cap: 6, opType: opDeq, value: 10, items: []int{11, 12, 13, 14}},
49 op{cap: 6, opType: opEnq, value: 15, items: []int{11, 12, 13, 14, 15}},
50 op{cap: 6, opType: opEnq, value: 16, items: []int{11, 12, 13, 14, 15, 16}},
51 op{cap: 9, opType: opEnq, value: 17, items: []int{11, 12, 13, 14, 15, 16, 17}}, // grows wrapped
52 op{cap: 9, opType: opDeq, value: 11, items: []int{12, 13, 14, 15, 16, 17}},
53 op{cap: 9, opType: opDeq, value: 12, items: []int{13, 14, 15, 16, 17}},
54 op{cap: 9, opType: opDeq, value: 13, items: []int{14, 15, 16, 17}},
55 op{cap: 9, opType: opDeq, value: 14, items: []int{15, 16, 17}},
56 op{cap: 9, opType: opDeq, value: 15, items: []int{16, 17}},
57 op{cap: 9, opType: opDeq, value: 16, items: []int{17}},
58 op{cap: 9, opType: opDeq, value: 17, items: []int{}},
59 op{cap: 9, opType: opDeq, value: 0, items: []int{}},
60 )
61
62 t.Run("should panic on invalid chunkSize", func(t *testing.T) {
63 defer func() {
64 if r := recover(); r == nil {
65 t.Fatalf("should have panicked")

Callers

nothing calls this directly

Calls 2

testRingFunction · 0.85
RunMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…