RegionIO/internal/world/trees_test.go

57 lines
1.1 KiB
Go

package world
import (
"testing"
"regionio/internal/worldgen"
)
func TestStraightBlobTreeFromDatapack(t *testing.T) {
set, err := worldgen.LoadFeatureSet()
if err != nil {
t.Fatal(err)
}
config, err := set.Tree("minecraft:oak")
if err != nil {
t.Fatal(err)
}
chunk := NewChunk(0, 0, BiomePlains)
chunk.setBlockRaw(8, 63, 8, StateGrass)
if !placeStraightBlobTree(chunk, worldgen.NewLegacy(42), 8, 64, 8, config) {
t.Fatal("datapack oak placement failed")
}
logs, leaves := 0, 0
for y := 64; y < 80; y++ {
for x := 0; x < 16; x++ {
for z := 0; z < 16; z++ {
switch chunk.GetBlock(x, y, z) {
case StateOakLog:
logs++
case StateOakLeaf:
leaves++
}
}
}
}
if logs < 4 || leaves < 10 {
t.Fatalf("tree has %d logs and %d leaves", logs, leaves)
}
}
func TestBiomeTreeStageProducesTrees(t *testing.T) {
gen := NewVanillaGenerator(12345)
chunk := gen(3, -9)
trees := 0
for y := SeaLevel; y < 160; y++ {
for x := 0; x < 16; x++ {
for z := 0; z < 16; z++ {
if chunk.GetBlock(x, y, z) == StateOakLog {
trees++
}
}
}
}
if trees == 0 {
t.Fatal("biome vegetation stages produced no oak logs")
}
}