You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package model
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestAdventureLogLine_JSON_roundTrip(t *testing.T) {
|
|
line := AdventureLogLine{
|
|
Message: "legacy",
|
|
Event: &AdventureLogEvent{
|
|
Code: LogDefeatedEnemy,
|
|
Args: map[string]any{"enemyType": "wolf_l1_1_meadow", "xp": float64(10), "gold": float64(5)},
|
|
},
|
|
}
|
|
b, err := json.Marshal(line)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var got AdventureLogLine
|
|
if err := json.Unmarshal(b, &got); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got.Message != line.Message {
|
|
t.Fatalf("message: got %q want %q", got.Message, line.Message)
|
|
}
|
|
if got.Event == nil || got.Event.Code != LogDefeatedEnemy {
|
|
t.Fatalf("event code: %+v", got.Event)
|
|
}
|
|
if got.Event.Args["enemyType"] != "wolf_l1_1_meadow" {
|
|
t.Fatalf("args: %+v", got.Event.Args)
|
|
}
|
|
}
|
|
|
|
func TestAdventureLogLine_JSON_legacyMessageOnly(t *testing.T) {
|
|
raw := `{"message":"hello"}`
|
|
var got AdventureLogLine
|
|
if err := json.Unmarshal([]byte(raw), &got); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got.Message != "hello" || got.Event != nil {
|
|
t.Fatalf("got %+v", got)
|
|
}
|
|
}
|