Files
galaxy-game/client/world/renderer_smoke_all_primitives_test.go
T
2026-03-08 15:31:17 +02:00

61 lines
1.4 KiB
Go

package world
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestSmoke_DrawPointsCirclesLinesFromSamePlan(t *testing.T) {
t.Parallel()
w := NewWorld(10, 10)
w.resetGrid(2 * SCALE)
// Mix primitives. Use values that are safely inside the world.
_, err := w.AddPoint(1, 1)
require.NoError(t, err)
_, err = w.AddCircle(2, 2, 1)
require.NoError(t, err)
// A line that wraps across X to ensure line splitting logic is exercised.
_, err = w.AddLine(9, 5, 1, 5)
require.NoError(t, err)
// Build index (in UI: IndexOnViewportChange does this).
for _, obj := range w.objects {
w.indexObject(obj)
}
params := RenderParams{
ViewportWidthPx: 10,
ViewportHeightPx: 10,
MarginXPx: 2,
MarginYPx: 2,
CameraXWorldFp: 5 * SCALE,
CameraYWorldFp: 5 * SCALE,
CameraZoom: 1.0,
}
plan, err := w.buildRenderPlanStageA(params)
require.NoError(t, err)
d := &fakePrimitiveDrawer{}
// Execute all three passes over the same plan.
drawPointsFromPlan(d, plan, true)
drawCirclesFromPlan(d, plan, w.W, w.H, true, w.circleRadiusScaleFp)
drawLinesFromPlan(d, plan, w.W, w.H, true)
names := d.CommandNames()
require.Contains(t, names, "AddPoint")
require.Contains(t, names, "AddCircle")
require.Contains(t, names, "AddLine")
// Ensure finalizers were used (points+circles use Fill, lines use Stroke).
require.Contains(t, names, "Fill")
require.Contains(t, names, "Stroke")
}