61 lines
1.4 KiB
Go
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)
|
|
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")
|
|
}
|