ui: basic map scroller
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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")
|
||||
}
|
||||
Reference in New Issue
Block a user