deckshoes
Version:
Various implementations of playing cards for the many game vaieties including alternative decks for games like 500.
1,167 lines (1,163 loc) • 47 kB
text/typescript
import { Color, JokerCard, PlayingCard, Suit } from "../src";
import { InvalidArgumentError } from "../src/errors";
let card: PlayingCard | JokerCard;
describe("Testing all valid playing card combinations from 500 deck: ", () => {
test("Ace of Spades", () => {
card = new PlayingCard("1", Suit.spades);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("A", Suit.spades);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("1", "S" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("A", "S" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("AS");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("1S");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("aS");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("As");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("1s");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("as");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Two of Spades", () => {
card = new PlayingCard("11", Suit.spades);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("11", "S" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("11S");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("11s");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Three of Spades", () => {
card = new PlayingCard("3", Suit.spades);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("3", "S" as Suit);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("3S");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("3s");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Four of Spades", () => {
card = new PlayingCard("4", Suit.spades);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("4", "S" as Suit);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("4S");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("4s");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Five of Spades", () => {
card = new PlayingCard("5", Suit.spades);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("5", "S" as Suit);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("5S");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("5s");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Six of Spades", () => {
card = new PlayingCard("6", Suit.spades);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("6", "S" as Suit);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("6S");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("6s");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Seven of Spades", () => {
card = new PlayingCard("7", Suit.spades);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("7", "S" as Suit);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("7S");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("7s");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Eight of Spades", () => {
card = new PlayingCard("8", Suit.spades);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("8", "S" as Suit);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("8S");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("8s");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Nine of Spades", () => {
card = new PlayingCard("9", Suit.spades);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("9", "S" as Suit);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("9S");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("9s");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Ten of Spades", () => {
card = new PlayingCard("10", Suit.spades);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("10", "S" as Suit);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("10S");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("10s");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Jack of Spades", () => {
card = new PlayingCard("J", Suit.spades);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("J", "S" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("JS");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("Js");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("j", Suit.spades);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("j", "S" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("jS");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("js");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Eleven of Spades", () => {
card = new PlayingCard("11", Suit.spades);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("11", "S" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("11S");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("11s");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Queen of Spades", () => {
card = new PlayingCard("Q", Suit.spades);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("Q", "S" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("QS");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("Qs");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("q", Suit.spades);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("q", "S" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("qS");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("qs");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Twelve of Spades", () => {
card = new PlayingCard("12", Suit.spades);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("12", "S" as Suit);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("12S");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("12s");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.spades);
});
test("King of Spades", () => {
card = new PlayingCard("K", Suit.spades);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("K", "S" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("KS");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("Ks");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("k", Suit.spades);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("k", "S" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("kS");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("ks");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Thirteen of Spades", () => {
card = new PlayingCard("13", Suit.spades);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.spades);
card = new PlayingCard("13", "S" as Suit);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("13S");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.spades);
card = PlayingCard.parseString("13s");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.spades);
});
test("Ace of Hearts", () => {
card = new PlayingCard("1", Suit.hearts);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("A", Suit.hearts);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("1", "H" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("A", "H" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("AH");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("1H");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("aH");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("Ah");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("1h");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("ah");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Two of Hearts", () => {
card = new PlayingCard("11", Suit.hearts);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("11", "H" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("11H");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("11h");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Three of Hearts", () => {
card = new PlayingCard("3", Suit.hearts);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("3", "H" as Suit);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("3H");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("3h");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Four of Hearts", () => {
card = new PlayingCard("4", Suit.hearts);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("4", "H" as Suit);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("4H");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("4h");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Five of Hearts", () => {
card = new PlayingCard("5", Suit.hearts);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("5", "H" as Suit);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("5H");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("5h");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Six of Hearts", () => {
card = new PlayingCard("6", Suit.hearts);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("6", "H" as Suit);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("6H");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("6h");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Seven of Hearts", () => {
card = new PlayingCard("7", Suit.hearts);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("7", "H" as Suit);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("7H");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("7h");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Eight of Hearts", () => {
card = new PlayingCard("8", Suit.hearts);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("8", "H" as Suit);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("8H");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("8h");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Nine of Hearts", () => {
card = new PlayingCard("9", Suit.hearts);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("9", "H" as Suit);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("9H");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("9h");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Ten of Hearts", () => {
card = new PlayingCard("10", Suit.hearts);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("10", "H" as Suit);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("10H");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("10h");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Jack of Hearts", () => {
card = new PlayingCard("J", Suit.hearts);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("J", "H" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("JH");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("Jh");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("j", Suit.hearts);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("j", "H" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("jH");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("jh");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Eleven of Hearts", () => {
card = new PlayingCard("11", Suit.hearts);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("11", "H" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("11H");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("11h");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Queen of Hearts", () => {
card = new PlayingCard("Q", Suit.hearts);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("Q", "H" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("QH");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("Qh");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("q", Suit.hearts);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("q", "H" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("qH");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("qh");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Twelve of Hearts", () => {
card = new PlayingCard("12", Suit.hearts);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("12", "H" as Suit);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("12H");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("12h");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("King of Hearts", () => {
card = new PlayingCard("K", Suit.hearts);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("K", "H" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("KH");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("Kh");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("k", Suit.hearts);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("k", "H" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("kH");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("kh");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Thirteen of Hearts", () => {
card = new PlayingCard("13", Suit.hearts);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.hearts);
card = new PlayingCard("13", "H" as Suit);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("13H");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.hearts);
card = PlayingCard.parseString("13h");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.hearts);
});
test("Ace of Diamonds", () => {
card = new PlayingCard("1", Suit.diamonds);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("A", Suit.diamonds);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("1", "D" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("A", "D" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("AD");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("1D");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("aD");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("Ad");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("1d");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("ad");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Two of Diamonds", () => {
card = new PlayingCard("11", Suit.diamonds);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("11", "D" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("11D");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("11d");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Three of Diamonds", () => {
card = new PlayingCard("3", Suit.diamonds);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("3", "D" as Suit);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("3D");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("3d");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Four of Diamonds", () => {
card = new PlayingCard("4", Suit.diamonds);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("4", "D" as Suit);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("4D");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("4d");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Five of Diamonds", () => {
card = new PlayingCard("5", Suit.diamonds);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("5", "D" as Suit);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("5D");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("5d");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Six of Diamonds", () => {
card = new PlayingCard("6", Suit.diamonds);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("6", "D" as Suit);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("6D");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("6d");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Seven of Diamonds", () => {
card = new PlayingCard("7", Suit.diamonds);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("7", "D" as Suit);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("7D");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("7d");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Eight of Diamonds", () => {
card = new PlayingCard("8", Suit.diamonds);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("8", "D" as Suit);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("8D");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("8d");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Nine of Diamonds", () => {
card = new PlayingCard("9", Suit.diamonds);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("9", "D" as Suit);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("9D");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("9d");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Ten of Diamonds", () => {
card = new PlayingCard("10", Suit.diamonds);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("10", "D" as Suit);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("10D");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("10d");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Jack of Diamonds", () => {
card = new PlayingCard("J", Suit.diamonds);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("J", "D" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("JD");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("Jd");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("j", Suit.diamonds);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("j", "D" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("jD");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("jd");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Eleven of Diamonds", () => {
card = new PlayingCard("11", Suit.diamonds);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("11", "D" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("11D");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("11d");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Queen of Diamonds", () => {
card = new PlayingCard("Q", Suit.diamonds);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("Q", "D" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("QD");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("Qd");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("q", Suit.diamonds);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("q", "D" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("qD");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("qd");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Twelve of Diamonds", () => {
card = new PlayingCard("12", Suit.diamonds);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("12", "D" as Suit);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("12D");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("12d");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("King of Diamonds", () => {
card = new PlayingCard("K", Suit.diamonds);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("K", "D" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("KD");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("Kd");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("k", Suit.diamonds);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("k", "D" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("kD");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("kd");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Thirteen of Diamonds", () => {
card = new PlayingCard("13", Suit.diamonds);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.diamonds);
card = new PlayingCard("13", "D" as Suit);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("13D");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.diamonds);
card = PlayingCard.parseString("13d");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.diamonds);
});
test("Ace of Clubs", () => {
card = new PlayingCard("1", Suit.clubs);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("A", Suit.clubs);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("1", "C" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("A", "C" as Suit);
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("AC");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("1C");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("aC");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("Ac");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("1c");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("ac");
expect(card.getRank()).toBe("A");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Two of Clubs", () => {
card = new PlayingCard("11", Suit.clubs);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("11", "C" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("11C");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("11c");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Three of Clubs", () => {
card = new PlayingCard("3", Suit.clubs);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("3", "C" as Suit);
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("3C");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("3c");
expect(card.getRank()).toBe("3");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Four of Clubs", () => {
card = new PlayingCard("4", Suit.clubs);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("4", "C" as Suit);
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("4C");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("4c");
expect(card.getRank()).toBe("4");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Five of Clubs", () => {
card = new PlayingCard("5", Suit.clubs);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("5", "C" as Suit);
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("5C");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("5c");
expect(card.getRank()).toBe("5");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Six of Clubs", () => {
card = new PlayingCard("6", Suit.clubs);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("6", "C" as Suit);
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("6C");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("6c");
expect(card.getRank()).toBe("6");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Seven of Clubs", () => {
card = new PlayingCard("7", Suit.clubs);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("7", "C" as Suit);
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("7C");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("7c");
expect(card.getRank()).toBe("7");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Eight of Clubs", () => {
card = new PlayingCard("8", Suit.clubs);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("8", "C" as Suit);
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("8C");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("8c");
expect(card.getRank()).toBe("8");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Nine of Clubs", () => {
card = new PlayingCard("9", Suit.clubs);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("9", "C" as Suit);
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("9C");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("9c");
expect(card.getRank()).toBe("9");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Ten of Clubs", () => {
card = new PlayingCard("10", Suit.clubs);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("10", "C" as Suit);
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("10C");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("10c");
expect(card.getRank()).toBe("10");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Jack of Clubs", () => {
card = new PlayingCard("J", Suit.clubs);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("J", "C" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("JC");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("Jc");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("j", Suit.clubs);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("j", "C" as Suit);
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("jC");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("jc");
expect(card.getRank()).toBe("J");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Eleven of Clubs", () => {
card = new PlayingCard("11", Suit.clubs);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("11", "C" as Suit);
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("11C");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("11c");
expect(card.getRank()).toBe("11");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Queen of Clubs", () => {
card = new PlayingCard("Q", Suit.clubs);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("Q", "C" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("QC");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("Qc");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("q", Suit.clubs);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("q", "C" as Suit);
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("qC");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("qc");
expect(card.getRank()).toBe("Q");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Twelve of Clubs", () => {
card = new PlayingCard("12", Suit.clubs);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("12", "C" as Suit);
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("12C");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("12c");
expect(card.getRank()).toBe("12");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("King of Clubs", () => {
card = new PlayingCard("K", Suit.clubs);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("K", "C" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("KC");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("Kc");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("k", Suit.clubs);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("k", "C" as Suit);
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("kC");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("kc");
expect(card.getRank()).toBe("K");
expect(card.getSuit()).toBe(Suit.clubs);
});
test("Thirteen of Clubs", () => {
card = new PlayingCard("13", Suit.clubs);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.clubs);
card = new PlayingCard("13", "C" as Suit);
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("13C");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.clubs);
card = PlayingCard.parseString("13c");
expect(card.getRank()).toBe("13");
expect(card.getSuit()).toBe(Suit.clubs);
});
});
describe("Testing joker generation: ", () => {
test("By standard class constructor", () => {
card = new JokerCard();
expect(card.getRank()).toBe("Joker");
expect(card.getColor()).toBe(Color.red);
card = new JokerCard(Color.red);
expect(card.getRank()).toBe("Joker");
expect(card.getColor()).toBe(Color.red);
card = new JokerCard(Color.black);
expect(card.getRank()).toBe("Joker");
expect(card.getColor()).toBe(Color.black);
});
//TODO - add parse string for joker tests
});
describe("Testing non-valid card types: ", () => {
test("Rank outside of range: ", () => {
expect(() => {
new PlayingCard("14", Suit.clubs);
}).toThrowError(new InvalidArgumentError("Invalid rank. Must be 1 to 13; A, J, Q, K; or Joker."));
expect(() => {
new PlayingCard("0", Suit.clubs);
}).toThrowError(new InvalidArgumentError("Invalid rank. Must be 1 to 13; A, J, Q, K; or Joker."));
expect(() => {
PlayingCard.parseString("14D");
}).toThrowError(new InvalidArgumentError("Invalid rank. Must be 1 to 13; A, J, Q, K; or Joker."));
expect(() => {
PlayingCard.parseString("DD");
}).toThrowError(new InvalidArgumentError("Invalid rank. Must be 1 to 13; A, J, Q, K; or Joker."));
});
test("Invalid Suit string value: ", () => {
expect(() => {
new PlayingCard("A", "A" as Suit);
}).toThrowError(new InvalidArgumentError("Invalid suit. Must be one of: H, C, D, S."));
expect(() => {
PlayingCard.parseString("10I");
}).toThrowError(new InvalidArgumentError("Invalid suit. Must be one of: H, C, D, S."));
});
test("Invalid card string to parse: ", () => {
expect(() => {
PlayingCard.parseString("QueenD");
}).toThrowError(new InvalidArgumentError("Invalid string representation of a card entered."));
expect(() => {
PlayingCard.parseString("Q D");
}).toThrowError(new InvalidArgumentError("Invalid string representation of a card entered."));
});
});