poker-odds-calc
Version:
Fastest and most accurate node module for calculating odds of poker games Texas Hold'em, Texas Shortdeck/Sixplus and Omaha.
287 lines (286 loc) • 12.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("../index");
const assert = require("assert");
describe("Texas Hold'em", function () {
it('STRAIGHT FLUSH', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["Qs", "Ks"])
.addPlayer(["Qd", "Kd"])
.boardAction((board) => {
board
.setFlop(["Js", "Ts", "5h"])
.setTurn("Td");
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 9);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 20.45);
assert.equal(result.getPlayers()[1].getWins(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTies(), 35);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 79.55);
assert.equal(result.getPlayers()[1].getTies(), 35);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 79.55);
done();
});
it('QUADS', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["As", "Ad"])
.addPlayer(["Ks", "Kd"])
.boardAction((board) => {
board
.setFlop(["Ah", "Kh", "5h"])
.setTurn("Td");
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 43);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 97.73);
assert.equal(result.getPlayers()[1].getWins(), 1);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 2.27);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('QUADS - HIGH CARD', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["As", "Ad"])
.addPlayer(["Ks", "Kd"])
.boardAction((board) => {
board
.setFlop(["2d", "2h", "2c"])
.setTurn("2s");
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 42);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 95.45);
assert.equal(result.getPlayers()[1].getWins(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTies(), 2);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 4.55);
assert.equal(result.getPlayers()[1].getTies(), 2);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 4.55);
done();
});
it('FULL HOUSE', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["8d", "8c"])
.addPlayer(["2d", "2c"])
.boardAction((board) => {
board
.setFlop(["8h", "Ks", "Ad"]);
//.setTurn("2h")
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 989);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 99.9);
assert.equal(result.getPlayers()[1].getWins(), 1);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0.10);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('FLUSH', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["9d", "Td"])
.addPlayer(["2c", "3c"])
.boardAction((board) => {
board
.setFlop(["8d", "2d", "Kd"]);
//.setTurn("8d")
//.setRiver("Jh")
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 962);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 97.17);
assert.equal(result.getPlayers()[1].getWins(), 28);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 2.83);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('FLUSH - DOUBLE', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["9d", "Td"])
.addPlayer(["7d", "8d"])
.boardAction((board) => {
board
.setFlop(["5d", "2d", "Ad"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 988);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 99.80);
assert.equal(result.getPlayers()[1].getWins(), 1);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0.10);
assert.equal(result.getPlayers()[0].getTies(), 1);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0.10);
assert.equal(result.getPlayers()[1].getTies(), 1);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0.10);
done();
});
it('STRAIGHT', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["9d", "Tc"])
.addPlayer(["2d", "2c"])
.boardAction((board) => {
board
.setFlop(["8h", "Js", "Ad"]);
//.setTurn("8d")
//.setRiver("Jh")
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 522);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 52.73);
assert.equal(result.getPlayers()[1].getWins(), 450);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 45.45);
assert.equal(result.getPlayers()[0].getTies(), 18);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 1.82);
assert.equal(result.getPlayers()[1].getTies(), 18);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 1.82);
done();
});
it('TRIPS', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["Kd", "Kc"])
.addPlayer(["2d", "2c"])
.boardAction((board) => {
board
.setFlop(["2h", "Ks", "Ad"]);
//.setTurn("8d")
//.setRiver("Jh")
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 947);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 95.66);
assert.equal(result.getPlayers()[1].getWins(), 43);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 4.34);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('TWO PAIRS', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["Ad", "2c"])
.addPlayer(["Kd", "Qc"])
.boardAction((board) => {
board
.setFlop(["Ah", "2s", "Ks"])
.setTurn("Qh");
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 40);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 90.91);
assert.equal(result.getPlayers()[1].getWins(), 4);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 9.09);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('ONE PAIR', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["Ad", "2c"])
.addPlayer(["Qd", "Kc"])
.boardAction((board) => {
board
.setFlop(["2h", "Ks", "8d"]);
//.setTurn("2h")
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 200);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 20.20);
assert.equal(result.getPlayers()[1].getWins(), 790);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 79.80);
assert.equal(result.getPlayers()[0].getTies(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTies(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('STRAIGHT', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["Ad", "Tc"])
.addPlayer(["5d", "Kc"])
.boardAction((board) => {
board
.setFlop(["6h", "7s", "8d"])
.setTurn("9h");
})
.calculate();
assert.equal(result.getPlayers()[0].getWins(), 41);
assert.equal(result.getPlayers()[0].getWinsPercentage(), 93.18);
assert.equal(result.getPlayers()[1].getWins(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTies(), 3);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 6.82);
assert.equal(result.getPlayers()[1].getTies(), 3);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 6.82);
done();
});
it('TREE WAYS', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["2s", "2d"])
.addPlayer(["Ts", "Td"])
.addPlayer(["Ks", "Kd"])
.boardAction((board) => {
board
.setFlop(["5s", "6s", "Qh"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 10.08);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 8.75);
assert.equal(result.getPlayers()[2].getWinsPercentage(), 81.17);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[2].getTiesPercentage(), 0);
done();
});
it('DEAD CARD', (done) => {
const ts = Date.now();
const result = new index_1.TexasHoldem()
.addPlayer(["As", "Ks"])
.addPlayer(["Ad", "Kd"])
.boardAction((board) => {
board
.setFlop(["Ts", "6h", "5h"])
.dead(["Js", "Qs"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 3.10);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 96.90);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 96.90);
done();
}).timeout(3e3);
it('50/50', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["2s", "3s"])
.addPlayer(["2d", "3d"])
.calculate();
assert.equal(Math.round(result.getPlayers()[0].getWinsPercentage()), 7);
assert.equal(Math.round(result.getPlayers()[1].getWinsPercentage()), 7);
assert.equal(Math.round(result.getPlayers()[0].getTiesPercentage()), 86);
assert.equal(Math.round(result.getPlayers()[1].getTiesPercentage()), 86);
done();
}).timeout(3e3);
it('EXHAUSTIVE', (done) => {
const result = new index_1.TexasHoldem()
.addPlayer(["6s", "7s"])
.addPlayer(["6d", "7d"])
.exhaustive()
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 7.16);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 7.16);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 85.69);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 85.69);
done();
}).timeout(2e4);
});