MCPcopy
hub / github.com/RoaringBitmap/roaring / testContainerIteratorAdvance

Function testContainerIteratorAdvance

container_test.go:72–140  ·  view source on GitHub ↗
(t *testing.T, con container)

Source from the content-addressed store, hash-verified

70}
71
72func testContainerIteratorAdvance(t *testing.T, con container) {
73 values := []uint16{1, 2, 15, 16, 31, 32, 33, 9999}
74 for _, v := range values {
75 con.iadd(v)
76 }
77
78 cases := []struct {
79 minval uint16
80 expected uint16
81 }{
82 {0, 1},
83 {1, 1},
84 {2, 2},
85 {3, 15},
86 {15, 15},
87 {30, 31},
88 {31, 31},
89 {33, 33},
90 {34, 9999},
91 {9998, 9999},
92 {9999, 9999},
93 }
94
95 t.Run("advance by using a new short iterator", func(t *testing.T) {
96 for _, c := range cases {
97 i := con.getShortIterator()
98 i.advanceIfNeeded(c.minval)
99
100 assert.True(t, i.hasNext())
101 assert.Equal(t, c.expected, i.peekNext())
102 }
103 })
104
105 t.Run("advance by using the same short iterator", func(t *testing.T) {
106 i := con.getShortIterator()
107
108 for _, c := range cases {
109 i.advanceIfNeeded(c.minval)
110
111 assert.True(t, i.hasNext())
112 assert.Equal(t, c.expected, i.peekNext())
113 }
114 })
115
116 t.Run("advance out of a container value", func(t *testing.T) {
117 i := con.getShortIterator()
118
119 i.advanceIfNeeded(33)
120 assert.True(t, i.hasNext())
121 assert.EqualValues(t, 33, i.peekNext())
122
123 i.advanceIfNeeded(MaxUint16 - 1)
124 assert.False(t, i.hasNext())
125
126 i.advanceIfNeeded(MaxUint16)
127 assert.False(t, i.hasNext())
128 })
129

Callers 3

TestArrayIteratorAdvanceFunction · 0.85

Calls 5

iaddMethod · 0.65
getShortIteratorMethod · 0.65
advanceIfNeededMethod · 0.65
hasNextMethod · 0.65
peekNextMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…