gloomhaven-modifier
Version:
Gloomhaven Modifier Cards & Decks.
168 lines (135 loc) • 4.71 kB
JavaScript
const expect = require("expect.js");
const { Card, PlusTwo, PlusOne, PlusZero, MinusOne, MinusTwo, Double, Empty, Bless, Curse } = require("../features/cards/cards.js")
const { Deck, Player, PlayerBless, PlayerCurse, Monster, MonsterBless, MonsterCurse} = require("../features/decks/decks.js");
// ================================================================
describe('Test / Gloomhaven Modifier Decks', function() {
// Cards
const card = new Card;
const p2 = new PlusTwo;
const p1 = new PlusOne;
const p0 = new PlusZero;
const m1 = new MinusOne;
const m2 = new MinusTwo;
const double = new Double;
const empty = new Empty;
const bless = new Bless;
const curse = new Curse;
it("0.0. Error - Input invalid", function() {
// Standard Input Invalid
});
// ================================
// 1. Deck
it("1.0. Deck - Attributes", function() {
let deck = new Deck;
expect(deck.name).to.eql("Modifier Deck");
expect(deck.perks).to.eql({});
expect(deck.cards).to.eql([]);
expect(deck.discards).to.eql([]);
expect(deck.modifier).to.eql([]);
expect(deck.special).to.eql([]);
expect(deck.value).to.eql(null);
expect(deck.shuffle).to.eql(false);
});
// --------------------------------
it("1.1. Deck - addCard", function() {
let deck = new Deck;
deck.addCard(card);
expect(deck.cards).to.eql([card]);
expect(deck.cards.length).to.eql(1);
deck.addCard(card);
expect(deck.cards).to.eql([card, card]);
expect(deck.cards.length).to.eql(2);
});
// --------------------------------
it("1.2. Deck - addCards", function() {
let deck = new Deck;
let cards = [card, card, card]
deck.addCards(cards);
expect(deck.cards).to.eql([card, card, card]);
expect(deck.cards.length).to.eql(3);
deck.addCards(cards);
expect(deck.cards).to.eql([card, card, card, card, card, card]);
expect(deck.cards.length).to.eql(6);
});
// -------------------------------
it("1.3. Deck - removeCard", function() {
let deck = new Deck;
let cards = [p2, p1, p0, m1, m2, m2, m1, m2];
deck.addCards(cards);
deck.removeCard(p1);
expect(deck.cards).to.eql([p2,p0,m1,m2,m2,m1,m2]);
deck.removeCard(m2);
expect(deck.cards).to.eql([p2,p0,m1,m2,m1,m2]);
deck.removeCard(p1);
expect(deck.cards).to.eql([p2,p0,m1,m2,m1,m2]);
});
// -------------------------------
it("1.4. Deck - removeCards", function() {
let deck = new Deck;
let cards = [p2, p2, p1, p1, p0, p0, m1, m1, m2, m2];
deck.addCards(cards);
deck.removeCards([p2,p1,p0,m1,m2]);
expect(deck.cards).to.eql([p2,p1,p0,m1,m2]);
deck.removeCards([p2,p1,p0]);
expect(deck.cards).to.eql([m1,m2]);
deck.removeCards([p1,m1]);
expect(deck.cards).to.eql([m2]);
let deck2 = new Deck;
let cards2 = [p2,p2,p2,p1,p1,p1];
deck2.addCards(cards2);
deck2.removeCards([p2,p2,p1]);
expect(deck2.cards).to.eql([p2,p1,p1]);
});
// -------------------------------
it("1.5. Deck - draw", function() {
let deck = new Deck;
deck.addCards([empty, bless, m1, p2]);
deck.draw(2);
expect(deck.modifier).to.eql(["+2"]);
expect(deck.special).to.eql([]);
expect(deck.value).to.eql(4);
expect(deck.shuffle).to.eql(false);
deck.draw(3);
expect(deck.modifier).to.eql(["-1"]);
expect(deck.special).to.eql([]);
expect(deck.value).to.eql(2);
expect(deck.shuffle).to.eql(false);
deck.draw(3);
expect(deck.modifier).to.eql(["Bless"]);
expect(deck.special).to.eql([]);
expect(deck.value).to.eql(6);
expect(deck.shuffle).to.eql(false);
deck.draw(1);
expect(deck.modifier).to.eql(["Empty"]);
expect(deck.special).to.eql([]);
expect(deck.value).to.eql(0);
expect(deck.shuffle).to.eql(true);
});
// -------------------------------
it("1.6. Deck - advantage", function() {
// Standard Input Invalid
});
// -------------------------------
it("1.7. Deck - disadvantage", function() {
// Standard Input Invalid
});
// -------------------------------
it("1.8. Deck - ShuffleDeck", function() {
// New Deck
let deck = new Deck;
deck.addCards([p2,p1,p0,double,m1]);
expect(deck.shuffle).to.eql(false);
deck.draw();
expect(deck.shuffle).to.eql(false);
deck.draw();
expect(deck.shuffle).to.eql(true);
deck.draw();
expect(deck.shuffle).to.eql(true);
expect(deck.cards.length).to.eql(2);
expect(deck.discards.length).to.eql(3);
deck.shuffleDeck();
expect(deck.shuffle).to.eql(false);
expect(deck.cards.length).to.eql(5);
expect(deck.discards.length).to.eql(0);
});
});