70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
|
|
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)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|