joker/card_test.go

50 lines
1.1 KiB
Go

package cards
import (
"encoding/json"
"testing"
)
type cardTestCase struct {
Card Card
Expected string
}
var cardTestCases = []*cardTestCase{
{Card: NewCard(FaceAce, SuitSpades), Expected: `"AS"`},
{Card: NewCard(Face7, SuitDiamonds), Expected: `"7D"`},
{Card: NewCard(Face10, SuitHearts), Expected: `"10H"`},
{Card: NewCard(FaceQueen, SuitHearts), Expected: `"QH"`},
{Card: NewCard(FaceJoker, SuitClubs), Expected: `"!C"`},
{Card: NewCard(FaceJoker, SuitJoker), Expected: `"!!"`},
{Card: NewCard(FaceKing, SuitJoker), Expected: `"K!"`},
}
func TestMarshalCard(t *testing.T) {
for _, c := range cardTestCases {
buf, err := json.Marshal(c.Card)
if err != nil {
t.Error(err)
}
if string(buf) != c.Expected {
t.Errorf("failed to marshal card: expected %s, got %s", c.Expected, string(buf))
}
}
}
func TestUnmarshalCard(t *testing.T) {
for _, c := range cardTestCases {
var cd Card
err := json.Unmarshal([]byte(c.Expected), &cd)
if err != nil {
t.Error(err)
}
if !cd.Equal(c.Card) {
t.Errorf("failed to unmarshal card: expected %s, got %s", c.Card, cd)
}
}
}