35 lines
736 B
Go
35 lines
736 B
Go
package world
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
)
|
|
|
|
func TestAdjacentFramesReuseGeneratedLightNeighbors(t *testing.T) {
|
|
var mu sync.Mutex
|
|
generated := make(map[[2]int32]int)
|
|
cache := NewCache(-1, func(cx, cz int32) *Chunk {
|
|
mu.Lock()
|
|
generated[[2]int32{cx, cz}]++
|
|
mu.Unlock()
|
|
return NewChunk(cx, cz, BiomePlains)
|
|
})
|
|
|
|
if _, err := cache.FrameErr(0, 0); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := cache.FrameErr(1, 0); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
if len(generated) != 12 {
|
|
t.Fatalf("generated chunks = %d, want 12 shared neighborhood chunks", len(generated))
|
|
}
|
|
for pos, count := range generated {
|
|
if count != 1 {
|
|
t.Fatalf("chunk %v generated %d times, want once", pos, count)
|
|
}
|
|
}
|
|
}
|