card-games-utils
Version:
Utility package for card games
616 lines (615 loc) • 48.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ErrorEnum_1 = require("../constants/ErrorEnum");
var StandardDeckEnum_1 = require("../constants/StandardDeckEnum");
var StandardCardHelper_1 = require("../helpers/StandardCardHelper");
var Rummy_1 = require("../models/Rummy");
describe('test the Rummy model and all methods in it', function () {
it('test makeMeld() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 9));
var meld = rummyGame.makeMeld([
// SET
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),
// SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_SEVEN),
// PURE SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
], [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
]);
expect(Array.isArray(meld.cards)).toBe(true);
expect(meld.cards.length).toBe(9);
expect(Array.isArray(meld.groups)).toBe(true);
expect(meld.groups.length).toBe(3);
expect(meld.groups.every(function (group) { return group.length === 3; })).toBe(true);
});
it('test getCardGroup() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 9));
var meld = rummyGame.makeMeld([
// SET
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),
// SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_SEVEN),
// PURE SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
], [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
]);
var cardGroup = rummyGame.getCardGroup(meld);
expect(Array.isArray(cardGroup)).toBe(true);
expect(cardGroup.length).toBe(3);
expect(cardGroup.every(function (group) { return group.length === 3; })).toBe(true);
});
it('test sortMeld() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 9));
var cardGroup = [
// SET
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),
// SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_SEVEN),
// PURE SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
];
var meld = rummyGame.makeMeld(cardGroup, [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
]);
meld = rummyGame.sortMeld(meld);
expect(meld.groups).toEqual([[0, 3], [1, 4], [2, 5], [6, 7, 8], []]);
});
it('test calculatePoints() method', function () {
var points = Rummy_1.Rummy.calculatePoints([
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(points).toEqual(3);
points = Rummy_1.Rummy.calculatePoints([
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),
], StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE);
expect(points).toEqual(2);
points = Rummy_1.Rummy.calculatePoints([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
], StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE);
expect(points).toEqual(1);
points = Rummy_1.Rummy.calculatePoints([
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_JACK),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_KING),
], StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE);
expect(points).toEqual(20);
});
it('test isReadyToDeclare() method', function () {
var onlySetRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, false, false, true, true, 9));
var onlySequenceRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(false, true, false, true, true, 9));
var onlyPureSequenceRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(false, false, true, true, true, 9));
var allRuleRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 9));
var noJokerRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, false, true, 9));
var noWildRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, false, 9));
// without any joker or wildcard
var meld = noWildRummyGame.makeMeld([
// SET
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),
// SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_SEVEN),
// PURE SEQUENCE / SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
], [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
]);
// CORRECT ONES
expect(onlySetRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).isValid).toEqual(true);
expect(onlySetRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).points).toEqual(18);
expect(onlySequenceRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).isValid).toEqual(true);
expect(onlySequenceRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).points).toEqual(10);
expect(onlyPureSequenceRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).isValid).toEqual(true);
expect(onlyPureSequenceRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).points).toEqual(10);
// INCORRECT ONES
expect(noWildRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).isValid).toEqual(false);
expect(noWildRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.CLUBS_FIVE).error).toEqual(ErrorEnum_1.ErrorEnum.WILD_NOT_ALLOWED);
expect(noJokerRummyGame.isReadyToDeclare(meld).isValid).toEqual(false);
expect(noJokerRummyGame.isReadyToDeclare(meld).error).toEqual(ErrorEnum_1.ErrorEnum.JOKER_NOT_ALLOWED);
expect(allRuleRummyGame.isReadyToDeclare(meld).isValid).toEqual(true);
expect(allRuleRummyGame.isReadyToDeclare(meld).points).toEqual(0);
// special case with 3 pure sequence and 1 set(1 pure sequence is with wildcard, so it's actually a sequence)
var specialRuleRummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 13));
meld = specialRuleRummyGame.makeMeld([
// PURE SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_QUEEN),
// PURE SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_QUEEN),
// PURE SEQUENCE / SEQUENCE
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_EIGHT),
// SET
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_NINE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_NINE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_NINE),
], [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8, 9],
[10, 11, 12],
]);
expect(specialRuleRummyGame.isReadyToDeclare(meld, StandardDeckEnum_1.StandardCardName.DIAMONDS_EIGHT).isValid).toEqual(true);
});
it('test isInSequence() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 13));
// NOTE::without any flex cards, a sequence is pure sequence(so we focus more on deck with flex cards)
// with the exception of Q,K,A - without proper order
var correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
// --------------------------------------------------------------------------------------------------------------------------
// with 1 joker
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_THREE),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
var incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
];
expect(rummyGame.isInSequence(incorrectSequence).isValid).toBe(false);
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
];
expect(rummyGame.isInSequence(incorrectSequence).isValid).toBe(false);
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
];
expect(rummyGame.isInSequence(incorrectSequence).isValid).toBe(false);
// --------------------------------------------------------------------------------------------------------------------------
// with 2 joker
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
];
expect(rummyGame.isInSequence(incorrectSequence).isValid).toBe(false);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInSequence(correctSequence).isValid).toBe(true);
// --------------------------------------------------------------------------------------------------------------------------
// with 1 wildcard
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
];
expect(rummyGame.isInSequence(correctSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInSequence(correctSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
correctSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInSequence(correctSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
correctSequence = [
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.HEARTS_TEN),
];
expect(rummyGame.isInSequence(correctSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
];
expect(rummyGame.isInSequence(incorrectSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
];
expect(rummyGame.isInSequence(incorrectSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
];
expect(rummyGame.isInSequence(incorrectSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
// --------------------------------------------------------------------------------------------------------------------------
// with 2 wildcard
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
];
expect(rummyGame.isInSequence(incorrectSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
// --------------------------------------------------------------------------------------------------------------------------
// with 1 wildcard and 1 joker
incorrectSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
];
expect(rummyGame.isInSequence(incorrectSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
// Complex case: Valid sequence with 4 cards and 1 JOKER
var validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
];
expect(rummyGame.isInSequence(validComplexSequence).isValid).toBe(true);
// Complex case: Valid sequence with 4 cards and 2 JOKERs
validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
];
expect(rummyGame.isInSequence(validComplexSequence).isValid).toBe(true);
// Complex case: Valid sequence with 5 cards and 1 wildcard
validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInSequence(validComplexSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_FOUR),
];
expect(rummyGame.isInSequence(validComplexSequence, StandardDeckEnum_1.StandardCardName.SPADES_SIX).isValid).toBe(true);
// Complex case: Invalid sequence with 4 cards and 2 JOKERs
var invalidComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_FOUR),
];
expect(rummyGame.isInSequence(invalidComplexSequence).isValid).toBe(true);
// Complex case: Valid sequence with 6 cards and 1 wildcard and 1 JOKER
validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_SIX),
];
expect(rummyGame.isInSequence(validComplexSequence, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
// Complex case: Invalid sequence with 6 cards and 1 JOKER and 1 wildcard
invalidComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_FOUR),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
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(rummyGame.isInSequence(invalidComplexSequence).isValid).toBe(false);
// when sequence is actually a pure sequence but with 1 wildcard
validComplexSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SIX),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_SEVEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_EIGHT),
];
expect(rummyGame.isInSequence(validComplexSequence, StandardDeckEnum_1.StandardCardName.SPADES_EIGHT).isValid).toBe(true);
});
it('test isInSet() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 13));
// without any joker or wildcard
var correctSet = [
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(rummyGame.isInSet(correctSet).isValid).toBe(true);
var incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(incorrectSet).isValid).toBe(false);
// with 1 joker
correctSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(correctSet).isValid).toBe(true);
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
];
expect(rummyGame.isInSet(incorrectSet).isValid).toBe(false);
// with 2 joker
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
// with 1 wildcard
correctSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(correctSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_FIVE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
// with 2 wildcard
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
// with 1 wildcard and 1 joker
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.HEARTS_ACE),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(true);
// with 3 jokers
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).isValid).toBe(false);
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.DIAMONDS_TEN).error).toBe(ErrorEnum_1.ErrorEnum.AT_LEAST_ONE_NORMAL_CARD_NEEDED_FOR_SET);
// with 3 wildcard
incorrectSet = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.SPADES_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_KING),
];
expect(rummyGame.isInSet(incorrectSet, StandardDeckEnum_1.StandardCardName.HEARTS_KING).isValid).toBe(true);
});
it('test isInPureSequence() method', function () {
var rummyGame = new Rummy_1.Rummy(Rummy_1.Rummy.makeRummyConfig(true, true, true, true, true, 13));
// without any joker or wildcard
var correctPureSequence = [
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),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// without proper order
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
];
// with the exception of Q,K,A
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// with the exception of Q,K,A - without proper order
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// with the exception of K,A,2
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// with the exception of K,A,2- without proper order
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// Valid pure sequence with face cards in different order
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// Valid pure sequence with four cards including face card
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_JACK),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
// Valid pure sequence with face cards
correctPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_KING),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
];
expect(rummyGame.isInPureSequence(correctPureSequence).isValid).toBe(true);
var incorrectPureSequence = [
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.CLUBS_THREE),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// Invalid pure sequence with only two cards
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_TWO),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// Invalid pure sequence with repeated cards
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FIVE),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// Invalid pure sequence with a gap between cards
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_FOUR),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// Invalid pure sequence with duplicate face cards
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_JACK),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_QUEEN),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_JACK),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_ACE),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// with 1 joker
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.DIAMONDS_TWO),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
// with 2 joker
incorrectPureSequence = [
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.JOKER),
StandardCardHelper_1.StandardCardHelper.makeStandardCard(StandardDeckEnum_1.StandardCardName.CLUBS_THREE),
];
expect(rummyGame.isInPureSequence(incorrectPureSequence).isValid).toBe(false);
});
});