Files

70 lines
2.2 KiB
Go
Raw Permalink Normal View History

package svg
import (
"strings"
"testing"
"time"
)
// EventsTitle 覆盖“全球阶段”数据块的标题;空值使用该块的本地化默认标题。
func TestSolarEclipseEventsTitleLocalizesAndOverrides(t *testing.T) {
for _, test := range []struct {
name string
language string
title string
want string
}{
{name: "zh default", want: "食甚点的地方情况"},
{name: "zh override", title: "全球阶段(自定义)", want: "全球阶段(自定义)"},
{name: "en default", language: "en", want: "Local circumstances at greatest"},
{name: "en override", language: "en", title: "Global phases (custom)", want: "Global phases (custom)"},
} {
t.Run(test.name, func(t *testing.T) {
_, circumstances, _ := solarEclipseContactTitles(SolarEclipseMapSVGOptions{
Language: test.language, EventsTitle: test.title,
})
if circumstances != test.want {
t.Fatalf("global-phase block title = %q, want %q", circumstances, test.want)
}
})
}
// 两种版式都要把标题写进产物,横版与竖版各验证一次。
for _, layout := range []struct {
name string
width, height int
language string
}{
{name: "landscape", width: 960, height: 640},
{name: "portrait", width: 800, height: 820, language: "en"},
} {
t.Run("rendered/"+layout.name, func(t *testing.T) {
title := "全球阶段(自定义)"
unwanted := "食甚点的地方情况"
if layout.language == "en" {
title = "Global phases (custom)"
unwanted = "Local circumstances at greatest"
}
rendered, ok := SolarEclipseMapSVG(
time.Date(2024, time.April, 8, 0, 0, 0, 0, time.UTC),
SolarEclipseMapSVGOptions{
Width: layout.width, Height: layout.height, Location: time.UTC,
PartialStep: 10 * time.Minute, Language: layout.language, EventsTitle: title,
},
)
if !ok {
t.Fatal("missing 2024-04-08 map")
}
if !strings.Contains(rendered, title) {
t.Fatalf("map is missing the events title %q", title)
}
if strings.Contains(rendered, unwanted) {
t.Fatalf("map still carries the replaced events title %q", unwanted)
}
if err := validateEclipseMapXML(rendered); err != nil {
t.Fatalf("map is not valid XML: %v", err)
}
})
}
}