50 lines
1.1 KiB
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)
|
|
}
|
|
}
|
|
}
|