38 lines
990 B
Go
38 lines
990 B
Go
package font
|
||
|
||
import (
|
||
"path/filepath"
|
||
"testing"
|
||
|
||
"mc/internal/assets"
|
||
)
|
||
|
||
// TestBuild 验证从真实素材包构建字体图集(UI还原.md §4)。
|
||
func TestBuild(t *testing.T) {
|
||
m := assets.New()
|
||
packDir := filepath.Join("..", "..", "resourcepacks")
|
||
if err := m.Load(filepath.Join("..", "..", "assets"), packDir); err != nil {
|
||
t.Fatalf("加载内容包失败: %v", err)
|
||
}
|
||
at, err := Build(m, "default")
|
||
if err != nil {
|
||
t.Fatalf("构建字体失败: %v", err)
|
||
}
|
||
for _, ch := range []rune{'A', 'a', '0', '!'} {
|
||
g, ok := at.Glyphs[ch]
|
||
if !ok {
|
||
t.Fatalf("缺少字形 %q", ch)
|
||
}
|
||
if g.W != 8 {
|
||
t.Fatalf("字形 %q 宽度期望 8,实际 %d", ch, g.W)
|
||
}
|
||
}
|
||
// 主位图:宽 128(16 列 × 8px),高为 8 的整数倍(原版 ascii.png 为 128×536)
|
||
if at.Image == nil {
|
||
t.Fatal("主位图为空")
|
||
}
|
||
if b := at.Image.Bounds(); b.Dx() != 128 || b.Dy()%8 != 0 || b.Dy() < 128 {
|
||
t.Fatalf("ascii 位图尺寸异常: %dx%d", b.Dx(), b.Dy())
|
||
}
|
||
}
|