MCPcopy Create free account
hub / github.com/ByteStorage/FlyDB / TestBitMapStructure_Integration

Function TestBitMapStructure_Integration

structure/bitmap_1_test.go:120–194  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

118}
119
120func TestBitMapStructure_Integration(t *testing.T) {
121 opts := config.DefaultOptions
122 dir, _ := os.MkdirTemp("", "TestBitMapStructure")
123 opts.DirPath = dir
124 bitmap, _ := NewBitMapStructure(opts)
125 defer bitmap.db.Clean()
126
127 key := []byte("testKey")
128
129 // Test with large amount of data
130 for i := uint(0); i < 10000; i++ {
131 err := bitmap.SetBit(string(key), i, i%2 == 0)
132 assert.Nil(t, err)
133 }
134
135 for i := uint(0); i < 10000; i++ {
136 value, err := bitmap.GetBit(string(key), i)
137 assert.Nil(t, err)
138 assert.Equal(t, i%2 == 0, value)
139 }
140
141 // Test boundary conditions
142 err := bitmap.SetBit(string(key), 0, true)
143 assert.Nil(t, err)
144 value, err := bitmap.GetBit(string(key), 0)
145 assert.Nil(t, err)
146 assert.True(t, value)
147
148 err = bitmap.SetBit(string(key), 1000000, true)
149 assert.Nil(t, err)
150 value, err = bitmap.GetBit(string(key), 1000000)
151 assert.Nil(t, err)
152 assert.True(t, value)
153
154 // Test error handling
155 err = bitmap.SetBit(string(key), 1000001, true)
156 assert.Nil(t, err)
157 value, err = bitmap.GetBit(string(key), 1000002)
158 assert.Nil(t, err)
159 assert.False(t, value)
160
161 // Test BitOp
162 key1 := []byte("testKey1")
163 key2 := []byte("testKey2")
164 destKey := []byte("destKey")
165
166 err = bitmap.SetBits(string(key1), 0, true, 1, false, 2, true)
167 assert.Nil(t, err)
168 err = bitmap.SetBits(string(key2), 0, false, 1, true, 2, false)
169 assert.Nil(t, err)
170
171 err = bitmap.BitOp([]byte("AND"), string(destKey), string(key1), string(key2))
172 assert.Nil(t, err)
173 values, err := bitmap.GetBits(string(destKey), 0, 1, 2)
174 assert.Nil(t, err)
175 assert.Equal(t, []bool{false, false, false}, values)
176
177 err = bitmap.BitOp([]byte("OR"), string(destKey), string(key1), string(key2))

Callers

nothing calls this directly

Calls 7

SetBitMethod · 0.95
GetBitMethod · 0.95
SetBitsMethod · 0.95
BitOpMethod · 0.95
GetBitsMethod · 0.95
NewBitMapStructureFunction · 0.85
CleanMethod · 0.45

Tested by

no test coverage detected