Files
sanspie dae4bc19e1 Stage 1: engine core, platform, gpu, vfs
Foundation for the aego engine.

core/    errs, log, handle arena, mathx, clock, stats
platform SDL3 backend plus a headless one, input state, events
gpu      device abstraction with gl33 and null backends
vfs      scheme-based virtual filesystem with overlay mounts
engine   builder, module registry, phase-ordered system loop, jobs
demos    basic, resize, input, headless; sandbox driver

OpenGL bindings are generated into gpu/gl33/gl by tools/gen-gl.sh,
so the module has no external dependencies.
2026-09-18 20:51:54 +03:00

43 lines
889 B
Go

package integration
import (
"testing"
"aego/core/log"
"aego/demos/basic"
"aego/engine"
)
func newEngine(t *testing.T) (*engine.Engine, *basic.Demo) {
t.Helper()
e, err := engine.NewBuilder(engine.Config{
Title: suite,
Headless: true,
HeadlessFrameTime: 1.0 / 60,
ResRoot: "../../demos/res",
UserRoot: t.TempDir(),
AppID: "aego-integration",
}).WithLogger(log.Nop()).Build()
if err != nil {
t.Fatal(err)
}
return e, basic.New()
}
func TestHeadlessSmoke(t *testing.T) {
e, demo := newEngine(t)
defer e.Close()
for i := 0; i < 600; i++ {
if !e.Step(demo) {
t.Fatalf("engine stopped at frame %d: %v", i, e.Err())
}
}
s := e.Stats()
if s.FrameTime <= 0 {
t.Fatalf("frame time = %f", s.FrameTime)
}
if s.DrawCalls != 1 {
t.Fatalf("null backend reported %d draw calls, want 1", s.DrawCalls)
}
}