RegionIO/internal/world/spawn_surface_test.go
2026-07-21 11:11:19 +03:00

41 lines
1.1 KiB
Go

package world
import "testing"
func TestSafeSpawnYUsesGeneratedSurface(t *testing.T) {
cache := NewCache(-1, GenerateFlat)
y, ok := cache.SafeSpawnY(8, 8)
if !ok || y != FlatSurfaceY+1 {
t.Fatalf("SafeSpawnY = %d, %v; want %d, true", y, ok, FlatSurfaceY+1)
}
}
func TestSafeSpawnYRejectsUnderwaterColumn(t *testing.T) {
cache := NewCache(-1, func(cx, cz int32) *Chunk {
chunk := NewChunk(cx, cz, BiomePlains)
chunk.setBlockRaw(8, 60, 8, StateStone)
for y := 61; y <= SeaLevel; y++ {
chunk.setBlockRaw(8, y, 8, StateWater)
}
return chunk
})
if y, ok := cache.SafeSpawnY(8, 8); ok {
t.Fatalf("SafeSpawnY = %d, true; want underwater column rejected", y)
}
}
func TestSafeSpawnYAcceptsNonOpaqueSolidFloor(t *testing.T) {
stairs := nameToStateID("minecraft:oak_stairs", nil)
if stairs == StateAir {
t.Fatal("oak stairs state is unavailable")
}
cache := NewCache(-1, func(cx, cz int32) *Chunk {
chunk := NewChunk(cx, cz, BiomePlains)
chunk.setBlockRaw(8, 70, 8, stairs)
return chunk
})
y, ok := cache.SafeSpawnY(8, 8)
if !ok || y != 71 {
t.Fatalf("SafeSpawnY = %d, %v; want 71, true for stairs", y, ok)
}
}