Files
aego/app/docsview/postprocess_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

89 lines
2.1 KiB
Go

//go:build aego_editor
package docsview
import (
"encoding/json"
"testing"
"aego/app/playground"
"aego/core/mathx"
"aego/modules/render2d"
"aego/platform"
"aego/platform/headless"
"aego/platform/input"
"aego/scene"
)
func TestCameraOutputTryCyclesSevenPreparedEffects(t *testing.T) {
p, err := playground.New()
if err != nil {
t.Fatal(err)
}
a := newHeadless(t)
loaded := false
for _, entry := range p.TryScenes() {
if entry.ID != render2d.NamePostProcess {
continue
}
if len(entry.TryArtifacts) == 0 || entry.TryScript == "" {
t.Fatal("incomplete PostFX Try resources")
}
code, err := p.TryCode(entry.TryScript)
if err != nil {
t.Fatal(err)
}
req, err := json.Marshal(map[string]any{"scene": entry.Try, "select": entry.TrySelect, "code": code, "artifacts": entry.TryArtifacts})
if err != nil {
t.Fatal(err)
}
if r := a.Call("load", req); r.Error != "" {
t.Fatal(r.Error)
}
loaded = true
break
}
if !loaded {
t.Fatal("PostFX Try not registered")
}
if err := a.Step(2); err != nil {
t.Fatal(err)
}
ctrl := a.session.Controller()
s := ctrl.Scene()
stack, ok := scene.Get[render2d.PostProcess](s, s.Find(s.Root(), "Effects Camera"))
if !ok || len(stack.Effects) != 7 {
t.Fatal("authored stack missing")
}
if _, ok := a.loader.Material(stack.Effects[6].Material.ID); !ok {
t.Fatal("custom material not in bundle")
}
if _, ok := a.loader.Texture(stack.Effects[1].LUT.ID); !ok {
t.Fatal("LUT not in bundle")
}
key := input.KeyEvent{Scan: input.KeySpace}
for step := range 9 {
mode := step % 8
for i, e := range stack.Effects {
if e.Enabled != (i == mode) {
t.Fatalf("step %d effect %s enabled=%v", step, e.TypeID, e.Enabled)
}
}
if step == 8 {
break
}
ctrl.SetCapture(true, mathx.Vec2{}, mathx.Vec2{X: 960, Y: 540})
a.e.Platform().(*headless.Platform).Push(platform.Event{Kind: platform.EvKeyDown, Key: key})
if err := a.Step(1); err != nil {
t.Fatal(err)
}
a.e.Platform().(*headless.Platform).Push(platform.Event{Kind: platform.EvKeyUp, Key: key})
if err := a.Step(1); err != nil {
t.Fatal(err)
}
}
if errors := errorsOf(a); len(errors) > 0 {
t.Fatal(errors)
}
}