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

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)
}
}