joker/card_test.go

50 lines
1.1 KiB
Go

package joker
import (
"encoding/json"
"testing"
)
type cardTestCase struct {
Card Card
Expected string
}
var cardTestCases = []*cardTestCase{
{Card: Card{FaceAce, SuitSpades}, Expected: `"AS"`},
{Card: Card{Face7, SuitDiamonds}, Expected: `"7D"`},
{Card: Card{Face10, SuitHearts}, Expected: `"10H"`},
{Card: Card{FaceQueen, SuitHearts}, Expected: `"QH"`},
{Card: Card{FaceJoker, SuitClubs}, Expected: `"!C"`},
{Card: Card{FaceJoker, SuitJoker}, Expected: `"!!"`},
{Card: Card{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)
}
}
}