37 lines
854 B
Go
37 lines
854 B
Go
package coord
|
||
|
||
import "testing"
|
||
|
||
// TestFloorDiv 验证负坐标安全的向下取整除法(设计.md §4.1 踩坑)。
|
||
func TestFloorDiv(t *testing.T) {
|
||
cases := []struct {
|
||
a, b, want int32
|
||
}{
|
||
{15, 16, 0},
|
||
{16, 16, 1},
|
||
{-1, 16, -1},
|
||
{-16, 16, -1},
|
||
{-17, 16, -2},
|
||
{0, 16, 0},
|
||
}
|
||
for _, c := range cases {
|
||
if got := FloorDiv(c.a, c.b); got != c.want {
|
||
t.Fatalf("FloorDiv(%d, %d) = %d,期望 %d", c.a, c.b, got, c.want)
|
||
}
|
||
}
|
||
}
|
||
|
||
// TestChunkLocal 验证区块坐标与局部坐标互转(含负数)。
|
||
func TestChunkLocal(t *testing.T) {
|
||
for _, wx := range []int32{-33, -17, -16, -1, 0, 15, 16, 31} {
|
||
cx := ChunkCoord(wx)
|
||
lx := LocalCoord(wx)
|
||
if lx < 0 || lx >= 16 {
|
||
t.Fatalf("LocalCoord(%d) = %d 越界", wx, lx)
|
||
}
|
||
if cx*16+lx != wx {
|
||
t.Fatalf("坐标还原失败: %d → cx=%d lx=%d", wx, cx, lx)
|
||
}
|
||
}
|
||
}
|