github.com/whatap/golib@v0.0.22/util/hll/HyperLogLog_test.go (about) 1 package hll 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestHllCardinality(t *testing.T) { 10 assert := assert.New(t) 11 12 hll := NewHyperLogLogDefault() 13 hll.Offer(1) 14 hll.Offer(2) 15 hll.Offer(3) 16 hll.Offer(4) 17 hll.Offer(5) 18 hll.Offer(6) 19 hll.Offer(7) 20 assert.Equal(int(hll.Cardinality()), 7) 21 22 hll.Offer(2) 23 hll.Offer(3) 24 hll.Offer(4) 25 hll.Offer(5) 26 hll.Offer(6) 27 hll.Offer(7) 28 assert.Equal(int(hll.Cardinality()), 7) 29 30 hll.Offer(8) 31 hll.Offer(9) 32 hll.Offer(10) 33 assert.Equal(int(hll.Cardinality()), 10) 34 } 35 36 func TestHllMerge(t *testing.T) { 37 assert := assert.New(t) 38 39 hll := NewHyperLogLogDefault() 40 hll2 := NewHyperLogLogDefault() 41 42 hll.Offer(1) 43 hll.Offer(2) 44 hll.Offer(3) 45 hll.Offer(4) 46 hll.Offer(5) 47 48 hll2.Offer(3) 49 hll2.Offer(4) 50 hll2.Offer(5) 51 hll2.Offer(6) 52 hll2.Offer(7) 53 54 mergedHll := hll.Merge(hll2) 55 assert.Equal(int(mergedHll.Cardinality()), 7) 56 57 hll = NewHyperLogLogDefault() 58 hll.Offer(8) 59 hll.Offer(9) 60 hll.Offer(10) 61 62 mergedHll = mergedHll.Merge(hll) 63 assert.Equal(int(mergedHll.Cardinality()), 10) 64 65 } 66 67 func TestHllByte(t *testing.T) { 68 assert := assert.New(t) 69 70 hll := NewHyperLogLogDefault() 71 hll.Offer(1) 72 hll.Offer(2) 73 hll.Offer(3) 74 hll.Offer(4) 75 hll.Offer(5) 76 hll.Offer(6) 77 hll.Offer(7) 78 79 buildHll := BuildHyperLogLog(hll.GetBytes()) 80 assert.Equal(int(buildHll.Cardinality()), 7) 81 82 } 83 84 func TestMain(m *testing.M) { 85 m.Run() 86 }