UNPKG

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
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.")); }); });