package game import ( "testing" ) type MockPlayerControl struct { p *Player sentNotifications []PlayerNotification actionToSend Action } func newMockPlayerControl(p *Player) *MockPlayerControl { return &MockPlayerControl{p: p} } func (ctrl *MockPlayerControl) Close() {} func (ctrl *MockPlayerControl) Player() *Player { return ctrl.p } func (ctrl *MockPlayerControl) RecvNotification() (n PlayerNotification, err error) { return } func (ctrl *MockPlayerControl) SendNotification(n PlayerNotification) error { ctrl.sentNotifications = append(ctrl.sentNotifications, n) return nil } func (ctrl *MockPlayerControl) RecvAction() (Action, error) { return ctrl.actionToSend, nil } func (ctrl *MockPlayerControl) SendAction(Action) error { return nil } const PRORITY_STRING = "!priority{}" func TestMarshalPriority(t *testing.T) { exp := PRORITY_STRING n := newPriorityNotification() is := string(n.Marshal(nil)) if is != exp { t.Fatalf("expected string %s does not match %s\n", exp, is) } } func TestUnmarshalPriority(t *testing.T) { in := PRORITY_STRING n, err := UnmarshalPlayerNotification(nil, []byte(in)) if err != nil { t.Fatal(err) } if n.Notification != PriorityNotification { t.Fatalf("expexted PriorityNotificaton not %s", n.Notification) } } const PICK_STRING = "!pick{[base/archer, magic/more!]}" func TestMarshalPick(t *testing.T) { exp := PICK_STRING poc := NewPileOfCards() poc.AddCard(NewCard("base/archer")) poc.AddCard(NewCard("magic/more!")) n := newDraftPickPrompt(poc) is := string(n.Marshal(nil)) if is != exp { t.Fatalf("expected string %s does not match %s\n", exp, is) } } func TestUnmarshalPick(t *testing.T) { in := PICK_STRING n, err := UnmarshalPlayerNotification(nil, []byte(in)) if err != nil { t.Fatal(err) } if n.Notification != DraftPickPrompt { t.Fatalf("expexted DraftPickPrompt not %s", n.Notification) } pack := n.Context.(PileOfCards) if len(pack.Cards()) != 2 { t.Fatalf("expexted two cards in pack not %d", len(pack.Cards())) } }