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) drawCirclesFromPlan(d, plan, w.W, w.H) drawLinesFromPlan(d, plan, w.W, w.H) 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") }