chore: move from tools/dsa (#1)
Some checks failed
CI / lint (push) Successful in 51s
CI / unit-test (push) Failing after 25s
CI / fuzz-test (push) Successful in 1m1s
CI / mutation-test (push) Successful in 42s

Moved the implementation of this hash table from `tools/dsa` #1.

Reviewed-on: #1
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
This commit was merged in pull request #1.
This commit is contained in:
2026-03-17 01:22:42 +00:00
committed by Maxim Hutz
parent 553117cb30
commit 717408239b
18 changed files with 1022 additions and 0 deletions

30
cuckoo_internal_test.go Normal file
View File

@@ -0,0 +1,30 @@
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.Capacity()), table.load())
}
}