alice-lg/pkg/pools/string_test.go
2022-11-16 11:12:09 +01:00

53 lines
873 B
Go

package pools
import (
"fmt"
"testing"
)
func TestAcquireString(t *testing.T) {
p := NewStringPool()
s1 := p.Acquire("hello")
s2 := p.Acquire("hello")
s3 := p.Acquire("world")
s1 = p.Acquire("hello")
if s1 != s2 {
t.Error("expected s1 == s2")
}
t.Log(fmt.Sprintf("s1, s2: %x %x", s1, s2))
if s2 == s3 {
t.Error("expected s2 !== s3")
}
t.Log(fmt.Sprintf("s1, s2: %x %x", s1, s2))
}
func TestGarbageCollectString(t *testing.T) {
p := NewStringPool()
// Gen 1
p.Acquire("hello")
p.Acquire("world")
r := p.GarbageCollect()
if r > 0 {
t.Error("first run should not collect anything.")
}
p.Acquire("hello")
p.Acquire("foo")
r = p.GarbageCollect()
if r != 1 {
t.Error("expected 1 released value")
}
for k := range p.values {
if k == "world" {
t.Error("did not expect to find world here")
}
}
t.Log(p.values)
t.Log(p.counter)
}