Files
aego/asset/source_meta_test.go
sanspie 5eb1832907
ci-platforms / darwin amd64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 15m28s
ci / release (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
ci-platforms / darwin arm64 smoke (push) Skipped
ci / checks (push) Successful in 7m47s
Complete Stage 12 for v0.12.0
2026-11-05 11:46:53 +03:00

47 lines
2.0 KiB
Go

package asset
import (
"aego/core/ids"
"aego/format/aetext"
"bytes"
"testing"
)
func TestSourceMetadataPreservesUnknownDataFrameOrderAndPivot(t *testing.T) {
source, first, second := ids.NewAssetID(), ids.NewAssetID(), ids.NewAssetID()
raw := []byte(`meta version=1 future="keep" { id="` + source.String() + `" importer="texture" importerVersion=5 futureField={enabled=true} settings { role=color unknown=[1, 2, 3] futureblock { token="stay" } } sub "z" id="` + first.String() + `" rect=[0, 0, 2, 2] pivot=[0.25, 0.75] futureAttr=7 { futureFrame="stay" } sub "a" id="` + second.String() + `" rect=[2, 0, 2, 2] {} unknown "block" { a=1 } }`)
m, err := ParseSourceMeta(raw, "sheet.png.meta")
if err != nil {
t.Fatal(err)
}
m.Subs[0].Name = "renamed"
m.Settings["filter"] = aetext.Ident("linear")
encoded := MarshalSourceMeta(m)
for _, text := range []string{"future=", "futureField", "futureblock", "futureAttr", "futureFrame", `unknown "block"`} {
if !bytes.Contains(encoded, []byte(text)) {
t.Fatalf("lost %s in %s", text, encoded)
}
}
round, err := ParseSourceMeta(encoded, "sheet.png.meta")
if err != nil {
t.Fatal(err)
}
if round.Subs[0].ID != first || round.Subs[1].ID != second || round.Subs[0].EffectivePivot() != ([2]float32{.25, .75}) || round.Subs[1].EffectivePivot() != ([2]float32{.5, .5}) {
t.Fatal("frame order, identity or pivot changed")
}
}
func TestTextureSourceRolesResolveMetadataNamesAndLinearData(t *testing.T) {
for _, name := range []string{"hero_n.png", "hero_n.png.meta"} {
role, err := TextureRoleOf(name, ImportSettings{})
if err != nil || role != RoleNormal {
t.Fatalf("%s role=%s err=%v", name, role, err)
}
}
if _, err := TextureSRGB(RoleNormal, ImportSettings{"colorspace": aetext.Ident("srgb")}); err == nil {
t.Fatal("normal accepted sRGB")
}
if linear, err := TextureSRGB(RoleEmissionRGB, ImportSettings{"colorspace": aetext.Ident("linear")}); err != nil || linear {
t.Fatal("linear emission RGB not represented")
}
}