mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
added convience function to calculate size of bitmap in bytes
completed test converage
This commit is contained in:
parent
b86f0c677d
commit
374fc9deff
2 changed files with 35 additions and 0 deletions
|
|
@ -232,6 +232,18 @@ func (b *Bitmap) Count() (n uint64) {
|
|||
return b.Containers.Count()
|
||||
}
|
||||
|
||||
// Size returns the number of bytes required for the bitmap.
|
||||
func (b *Bitmap) Size() (numbytes int) {
|
||||
|
||||
citer, _ := b.Containers.Iterator(0)
|
||||
for citer.Next() {
|
||||
_, c := citer.Value()
|
||||
numbytes += c.size()
|
||||
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// CountRange returns the number of bits set between [start, end).
|
||||
func (b *Bitmap) CountRange(start, end uint64) (n uint64) {
|
||||
if b.Containers.Size() == 0 {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,29 @@ func TestContainerCount(t *testing.T) {
|
|||
t.Fatalf("Count != CountRange\n")
|
||||
}
|
||||
}
|
||||
func TestSize(t *testing.T) {
|
||||
//array
|
||||
a := roaring.NewFileBitmap(0, 65535, 131072)
|
||||
if a.Size() != 6 {
|
||||
t.Fatalf("Size in bytes incorrect \n")
|
||||
}
|
||||
|
||||
//bitmap
|
||||
b := roaring.NewFileBitmap()
|
||||
for i:=uint64(0);i<2048;i++{
|
||||
b.DirectAdd(i)
|
||||
}
|
||||
|
||||
if b.Size() != 4096 {
|
||||
t.Fatalf("Size in bytes incorrect \n")
|
||||
}
|
||||
//convert to rle
|
||||
b.Optimize()
|
||||
//rle
|
||||
if b.Size() != 6 {
|
||||
t.Fatalf("Size in bytes incorrect \n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCountRange(t *testing.T) {
|
||||
tests := []struct {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue