Add tests for the Deck object
This commit is contained in:
parent
040a7ae804
commit
1f6c72ee8a
1 changed files with 126 additions and 0 deletions
126
server/tests/objects/Deck.spec.ts
Normal file
126
server/tests/objects/Deck.spec.ts
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
import { expect } from "chai";
|
||||
import "mocha";
|
||||
|
||||
import { Deck } from "../../src/objects/Deck";
|
||||
|
||||
describe("The Deck object", () => {
|
||||
var drawSuccess = false;
|
||||
|
||||
|
||||
it("should construct properly with strings", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
expect(d.size).to.equal(5);
|
||||
});
|
||||
|
||||
it("should construct properly with objects", () => {
|
||||
let d = new Deck<any>([
|
||||
{}, {}, {}, {}, {}
|
||||
]);
|
||||
expect(d.size).to.equal(5);
|
||||
});
|
||||
|
||||
it("should draw a single card from the deck properly", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
let c = d.draw(1);
|
||||
expect(d.size).to.equal(4);
|
||||
expect(c).to.have.length(1);
|
||||
expect(c[0]).to.be.a("string");
|
||||
expect(c[0]).to.be.oneOf(["1", "2", "3", "4", "5"]);
|
||||
drawSuccess = true;
|
||||
});
|
||||
|
||||
it("should draw multiple cards from the deck properly", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
let draws = 2;
|
||||
let c = d.draw(draws);
|
||||
expect(d.size).to.equal(3);
|
||||
expect(c).to.have.length(draws);
|
||||
for (var i = 0; i < draws; i++) {
|
||||
expect(c[i]).to.be.a("string");
|
||||
expect(c[i]).to.be.oneOf(["1", "2", "3", "4", "5"]);
|
||||
};
|
||||
});
|
||||
|
||||
it("should draw all of the cards from the deck properly", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
let draws = 5;
|
||||
let c = d.draw(draws);
|
||||
expect(d.size).to.equal(0);
|
||||
expect(c).to.have.length(draws);
|
||||
for (var i = 0; i < draws; i++) {
|
||||
expect(c[i]).to.be.a("string");
|
||||
expect(c[i]).to.be.oneOf(["1", "2", "3", "4", "5"]);
|
||||
};
|
||||
});
|
||||
|
||||
it("should throw an error when -1 cards are drawn", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
try {
|
||||
d.draw(-1);
|
||||
throw "draw() didn't error with -1 given";
|
||||
} catch (e) {};
|
||||
});
|
||||
|
||||
it("should throw an error when -5 cards are drawn", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
try {
|
||||
d.draw(-5);
|
||||
throw "draw() didn't error with -5 given";
|
||||
} catch (e) {};
|
||||
});
|
||||
|
||||
it("should throw an error when n+1 cards were requested", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
try {
|
||||
d.draw(6);
|
||||
throw "Draw didn't error with 6 given";
|
||||
} catch (e) {};
|
||||
});
|
||||
|
||||
it("should throw an error when n+5 cards were requested", () => {
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
try {
|
||||
d.draw(10);
|
||||
throw "Draw didn't error with 10 given";
|
||||
} catch (e) {};
|
||||
});
|
||||
|
||||
it("should error when discarding something that isn't a card in the deck", function (this: Mocha.Context) {
|
||||
if (!drawSuccess) { this.skip() };
|
||||
|
||||
let d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
d.draw(1);
|
||||
|
||||
try {
|
||||
d.discard("potato");
|
||||
throw "Didn't error when discarding an invalid card"
|
||||
} catch (_) {};
|
||||
});
|
||||
|
||||
it("shouldn't error when discarding a valid card", function (this: Mocha.Context) {
|
||||
if (!drawSuccess) { this.skip() };
|
||||
|
||||
const d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
const c = d.draw(1)[0];
|
||||
d.discard(c);
|
||||
});
|
||||
|
||||
it("should reset count when card is in unknown domain", function (this: Mocha.Context) {
|
||||
if (!drawSuccess) { this.skip() };
|
||||
|
||||
const d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
d.draw(1);
|
||||
d.reset();
|
||||
expect(d.size).to.equal(5);
|
||||
});
|
||||
|
||||
it("should reset count when card is in discard", function (this: Mocha.Context) {
|
||||
if (!drawSuccess) { this.skip() };
|
||||
|
||||
const d = new Deck<string>(["1", "2", "3", "4", "5"]);
|
||||
const c = d.draw(1)[0];
|
||||
d.discard(c);
|
||||
d.reset();
|
||||
expect(d.size).to.equal(5);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue