Skip to content

Commit cc93c82

Browse files
committed
test: cover runtime visibility config snapshot
1 parent 557bf8c commit cc93c82

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

internal/minimal/factory_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,60 @@ func newStartedGameFlowWithItemStore(t *testing.T, store loginticket.Store, acco
6666
return flow
6767
}
6868

69+
func TestBootstrapTopologyFromConfigDefaultsToWholeMapVisibility(t *testing.T) {
70+
topology, err := bootstrapTopologyFromConfig(config.Service{})
71+
if err != nil {
72+
t.Fatalf("unexpected topology error: %v", err)
73+
}
74+
if _, ok := topology.VisibilityPolicy().(worldruntime.WholeMapVisibilityPolicy); !ok {
75+
t.Fatalf("expected whole-map visibility policy by default, got %T", topology.VisibilityPolicy())
76+
}
77+
}
78+
79+
func TestBootstrapTopologyFromConfigNormalizesRadiusModeAndRejectsInvalidValues(t *testing.T) {
80+
topology, err := bootstrapTopologyFromConfig(config.Service{VisibilityMode: " Radius ", VisibilityRadius: 400, VisibilitySectorSize: 200})
81+
if err != nil {
82+
t.Fatalf("unexpected topology error: %v", err)
83+
}
84+
policy, ok := topology.VisibilityPolicy().(worldruntime.RadiusVisibilityPolicy)
85+
if !ok {
86+
t.Fatalf("expected radius visibility policy, got %T", topology.VisibilityPolicy())
87+
}
88+
if policy.Radius != 400 || policy.SectorSize != 200 {
89+
t.Fatalf("unexpected radius policy: %+v", policy)
90+
}
91+
92+
if _, err := bootstrapTopologyFromConfig(config.Service{VisibilityMode: "radius", VisibilityRadius: 0, VisibilitySectorSize: 200}); !errors.Is(err, ErrInvalidVisibilityRadius) {
93+
t.Fatalf("expected ErrInvalidVisibilityRadius, got %v", err)
94+
}
95+
if _, err := bootstrapTopologyFromConfig(config.Service{VisibilityMode: "radius", VisibilityRadius: 400, VisibilitySectorSize: 0}); !errors.Is(err, ErrInvalidVisibilitySectorSize) {
96+
t.Fatalf("expected ErrInvalidVisibilitySectorSize, got %v", err)
97+
}
98+
if _, err := bootstrapTopologyFromConfig(config.Service{VisibilityMode: "sector"}); !errors.Is(err, ErrInvalidVisibilityMode) {
99+
t.Fatalf("expected ErrInvalidVisibilityMode, got %v", err)
100+
}
101+
}
102+
103+
func TestGameRuntimeConfigSnapshotReportsRadiusPolicy(t *testing.T) {
104+
runtime, err := newGameRuntimeWithStoresAndTransferTriggersAndItemStore(
105+
config.Service{LegacyAddr: ":13000", PublicAddr: "127.0.0.1", VisibilityMode: "radius", VisibilityRadius: 400, VisibilitySectorSize: 200},
106+
loginticket.NewFileStore(t.TempDir()),
107+
nil,
108+
nil,
109+
nil,
110+
staticItemTemplateStore{},
111+
nil,
112+
)
113+
if err != nil {
114+
t.Fatalf("unexpected game runtime error: %v", err)
115+
}
116+
117+
snapshot := runtime.RuntimeConfigSnapshot()
118+
if snapshot.LocalChannelID != 1 || snapshot.VisibilityMode != "radius" || snapshot.VisibilityRadius != 400 || snapshot.VisibilitySectorSize != 200 {
119+
t.Fatalf("unexpected runtime config snapshot: %+v", snapshot)
120+
}
121+
}
122+
69123
func TestSlashGameCommandRejectsArgumentsForOwnedRestartAndLeaveCommands(t *testing.T) {
70124
for _, message := range []string{
71125
"/quit now",

0 commit comments

Comments
 (0)