96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package world
|
|
|
|
import (
|
|
"image/color"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStyleOverrideApply_OverridesOnlyProvidedFields(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
base := Style{
|
|
FillColor: color.RGBA{R: 1, A: 255},
|
|
StrokeColor: color.RGBA{G: 2, A: 255},
|
|
StrokeWidthPx: 1.0,
|
|
StrokeDashes: []float64{3, 1},
|
|
StrokeDashOffset: 0.5,
|
|
PointRadiusPx: 2.0,
|
|
}
|
|
|
|
newWidth := 5.0
|
|
newRadius := 7.0
|
|
|
|
override := StyleOverride{
|
|
StrokeWidthPx: &newWidth,
|
|
PointRadiusPx: &newRadius,
|
|
// Everything else is unset (nil) => must remain from base.
|
|
}
|
|
|
|
out := override.Apply(base)
|
|
|
|
require.Equal(t, base.FillColor, out.FillColor)
|
|
require.Equal(t, base.StrokeColor, out.StrokeColor)
|
|
require.Equal(t, 5.0, out.StrokeWidthPx)
|
|
require.Equal(t, base.StrokeDashes, out.StrokeDashes)
|
|
require.Equal(t, base.StrokeDashOffset, out.StrokeDashOffset)
|
|
require.Equal(t, 7.0, out.PointRadiusPx)
|
|
}
|
|
|
|
func TestStyleTable_DefaultsExistAndAreStable(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tbl := NewStyleTable()
|
|
|
|
_, ok := tbl.Get(StyleIDDefaultLine)
|
|
require.True(t, ok)
|
|
|
|
_, ok = tbl.Get(StyleIDDefaultCircle)
|
|
require.True(t, ok)
|
|
|
|
_, ok = tbl.Get(StyleIDDefaultPoint)
|
|
require.True(t, ok)
|
|
}
|
|
|
|
func TestStyleTable_AddDerived_StoresResolvedStyleAndCopiesSlices(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tbl := NewStyleTable()
|
|
|
|
dashes := []float64{10, 5}
|
|
override := StyleOverride{
|
|
StrokeDashes: &dashes,
|
|
}
|
|
id := tbl.AddDerived(StyleIDDefaultLine, override)
|
|
|
|
got, ok := tbl.Get(id)
|
|
require.True(t, ok)
|
|
require.Equal(t, []float64{10, 5}, got.StrokeDashes)
|
|
|
|
// Mutate caller slice; table must not change.
|
|
dashes[0] = 999
|
|
|
|
got2, ok := tbl.Get(id)
|
|
require.True(t, ok)
|
|
require.Equal(t, []float64{10, 5}, got2.StrokeDashes)
|
|
|
|
// Mutate returned slice; table must not change.
|
|
got2.StrokeDashes[0] = 123
|
|
|
|
got3, ok := tbl.Get(id)
|
|
require.True(t, ok)
|
|
require.Equal(t, []float64{10, 5}, got3.StrokeDashes)
|
|
}
|
|
|
|
func TestDefaultPriorities_AreOrderedAndStepped(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
require.Equal(t, 100, DefaultPriorityLine)
|
|
require.Equal(t, 200, DefaultPriorityCircle)
|
|
require.Equal(t, 300, DefaultPriorityPoint)
|
|
|
|
require.Less(t, DefaultPriorityLine, DefaultPriorityCircle)
|
|
require.Less(t, DefaultPriorityCircle, DefaultPriorityPoint)
|
|
}
|