| 1214 | } |
| 1215 | |
| 1216 | func TestBitmapRank(t *testing.T) { |
| 1217 | for N := uint32(1); N <= 1048576; N *= 2 { |
| 1218 | t.Run("rank tests"+strconv.Itoa(int(N)), func(t *testing.T) { |
| 1219 | for gap := uint32(1); gap <= 65536; gap *= 2 { |
| 1220 | rb1 := NewBitmap() |
| 1221 | for x := uint32(0); x <= N; x += gap { |
| 1222 | rb1.Add(x) |
| 1223 | } |
| 1224 | for y := uint32(0); y <= N; y++ { |
| 1225 | if rb1.Rank(y) != uint64((y+1+gap-1)/gap) { |
| 1226 | assert.Equal(t, (y+1+gap-1)/gap, rb1.Rank(y)) |
| 1227 | } |
| 1228 | } |
| 1229 | } |
| 1230 | }) |
| 1231 | } |
| 1232 | } |
| 1233 | |
| 1234 | func TestBitmapSelect(t *testing.T) { |
| 1235 | for N := uint32(1); N <= 1048576; N *= 2 { |