Files
aego/asset/artifact_test.go
2026-09-26 16:32:40 +03:00

49 lines
1.3 KiB
Go

package asset
import (
"testing"
"aego/core/ids"
"aego/gpu"
)
func TestTextureArtifactRoundTrip(t *testing.T) {
pixels := make([]byte, 4*4*4)
for i := range pixels {
pixels[i] = byte(i)
}
src := &TextureArtifact{Width: 4, Height: 4, Format: gpu.TexSRGBA8, Filter: gpu.FilterLinear, Mips: true, Pixels: pixels}
back, err := DecodeTexture(EncodeTexture(src))
if err != nil {
t.Fatal(err)
}
if back.Width != 4 || back.Height != 4 || back.Format != gpu.TexSRGBA8 || back.Filter != gpu.FilterLinear || !back.Mips {
t.Fatalf("header lost: %+v", back)
}
if string(back.Pixels) != string(pixels) {
t.Fatal("pixels lost")
}
}
func TestTextureArtifactRejectsTruncated(t *testing.T) {
src := &TextureArtifact{Width: 8, Height: 8, Pixels: make([]byte, 16)}
if _, err := DecodeTexture(EncodeTexture(src)); err == nil {
t.Fatal("truncated pixel data must be rejected")
}
if _, err := DecodeTexture([]byte("short")); err == nil {
t.Fatal("garbage must be rejected")
}
}
func TestRegionArtifactRoundTrip(t *testing.T) {
page := ids.NewAssetID()
src := &RegionArtifact{Page: page, X: 3, Y: 5, W: 16, H: 32, PageW: 256, PageH: 256, Filter: gpu.FilterNearest}
back, err := DecodeRegion(EncodeRegion(src))
if err != nil {
t.Fatal(err)
}
if *back != *src {
t.Fatalf("round trip lost data: %+v vs %+v", back, src)
}
}