| 182 | } |
| 183 | |
| 184 | func TestIteratorInitialize(t *testing.T) { |
| 185 | values := []uint64{0, 2, 15, 16, 31, 32, 33, 9999, roaring.MaxUint16, roaring.MaxUint32, roaring.MaxUint32 * 2, math.MaxUint64} |
| 186 | bm := New() |
| 187 | for _, v := range values { |
| 188 | bm.Add(v) |
| 189 | } |
| 190 | |
| 191 | t.Run("IntIterator64 stack-allocated", func(t *testing.T) { |
| 192 | var it IntIterator64 |
| 193 | it.Initialize(bm) |
| 194 | n := 0 |
| 195 | for it.HasNext() { |
| 196 | assert.Equal(t, values[n], it.Next()) |
| 197 | n++ |
| 198 | } |
| 199 | assert.Equal(t, len(values), n) |
| 200 | }) |
| 201 | |
| 202 | t.Run("IntReverseIterator64 stack-allocated", func(t *testing.T) { |
| 203 | var it IntReverseIterator64 |
| 204 | it.Initialize(bm) |
| 205 | n := len(values) - 1 |
| 206 | for it.HasNext() { |
| 207 | assert.Equal(t, values[n], it.Next()) |
| 208 | n-- |
| 209 | } |
| 210 | assert.Equal(t, -1, n) |
| 211 | }) |
| 212 | |
| 213 | t.Run("ManyIntIterator64 stack-allocated", func(t *testing.T) { |
| 214 | var it ManyIntIterator64 |
| 215 | it.Initialize(bm) |
| 216 | buf := make([]uint64, 4) |
| 217 | var got []uint64 |
| 218 | for { |
| 219 | n := it.NextMany(buf) |
| 220 | if n == 0 { |
| 221 | break |
| 222 | } |
| 223 | got = append(got, buf[:n]...) |
| 224 | } |
| 225 | assert.Equal(t, values, got) |
| 226 | }) |
| 227 | } |