Currently, the `Table.Drop()` function is deprecated because it is not implemented yet. Let's add that functionality. - Adds true drop functionality to the table, through `Table.Drop()`. - Adds tests for functionality. - Rewrites fuzz test using `go_fuzz_utils`, to test arbitrary usage patterns. - Rewrite `bucket` to allow a capacity of zero. - Rename `Table.Capacity()` to `Table.TotalCapacity()`, to reflect to different between the capacity of the buckets vs. the whole table. - Enforce 100% mutation test coverage. Reviewed-on: #6 Co-authored-by: M.V. Hutz <git@maximhutz.me> Co-committed-by: M.V. Hutz <git@maximhutz.me>
31 lines
614 B
Go
31 lines
614 B
Go
package cuckoo
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMaxEvictions(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
for i := 16; i < 116; i++ {
|
|
table := NewTable[int, bool](Capacity(i / 2))
|
|
expectedEvictions := 3 * math.Floor(math.Log2(float64(i)))
|
|
|
|
assert.Equal(table.maxEvictions(), int(expectedEvictions))
|
|
}
|
|
}
|
|
|
|
func TestLoad(t *testing.T) {
|
|
assert := assert.New(t)
|
|
table := NewTable[int, bool](Capacity(8))
|
|
|
|
for i := range 16 {
|
|
err := table.Put(i, true)
|
|
assert.NoError(err)
|
|
assert.Equal(float64(table.Size())/float64(table.TotalCapacity()), table.load())
|
|
}
|
|
}
|