card-games-utils
Version:
Utility package for card games
151 lines (150 loc) • 10.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var StandardDeckEnum_1 = require("../constants/StandardDeckEnum");
var TeenPattiEnum_1 = require("../constants/TeenPattiEnum");
var StandardCardHelper_1 = require("../helpers/StandardCardHelper");
var TeenPatti_1 = require("../models/TeenPatti");
describe('test the TeenPatti model and all methods in it', function () {
it('test calculateHand() method', function () {
var hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.TRAIL);
hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.PURE_SEQUENCE);
hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.SEQUENCE);
hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.COLOR);
hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.PAIR);
hand = TeenPatti_1.TeenPatti.calculateHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_EIGHT),
]);
expect(hand).toBe(TeenPattiEnum_1.TeenPattiHand.HIGH);
});
it('test makeHand() method', function () {
var hand = TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
]);
expect(Array.isArray(hand.cards)).toBe(true);
expect(hand.cards.length).toBe(3);
expect(hand.hand).toBe(TeenPattiEnum_1.TeenPattiHand.TRAIL);
});
it('test calculateWinners() method', function () {
// TRAIL-PURE_SEQUENCE => TRAIL
var winnerArr = TeenPatti_1.TeenPatti.calculateWinners([
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
]),
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
]),
]);
expect(Array.isArray(winnerArr)).toBe(true);
expect(winnerArr.length).toBe(1);
expect(winnerArr[0]).toBe(0);
// PURE_SEQUENCE-SEQUENCE => PURE_SEQUENCE
winnerArr = TeenPatti_1.TeenPatti.calculateWinners([
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
]),
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
]),
]);
expect(Array.isArray(winnerArr)).toBe(true);
expect(winnerArr.length).toBe(1);
expect(winnerArr[0]).toBe(0);
// SEQUENCE-COLOR => SEQUENCE
winnerArr = TeenPatti_1.TeenPatti.calculateWinners([
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
]),
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]),
]);
expect(Array.isArray(winnerArr)).toBe(true);
expect(winnerArr.length).toBe(1);
expect(winnerArr[0]).toBe(0);
// COLOR-PAIR => COLOR
winnerArr = TeenPatti_1.TeenPatti.calculateWinners([
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]),
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]),
]);
expect(Array.isArray(winnerArr)).toBe(true);
expect(winnerArr.length).toBe(1);
expect(winnerArr[0]).toBe(0);
// PAIR-HIGH => PAIR
winnerArr = TeenPatti_1.TeenPatti.calculateWinners([
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
]),
TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_EIGHT),
]),
]);
expect(Array.isArray(winnerArr)).toBe(true);
expect(winnerArr.length).toBe(1);
expect(winnerArr[0]).toBe(0);
});
it('test isRankHigher() method', function () {
var isRankHigher = TeenPatti_1.TeenPatti.isRankHigher(TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
]), TeenPatti_1.TeenPatti.makeHand([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_NINE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_NINE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
]));
expect(isRankHigher).toBe(true);
});
});