poker-odds-calc
Version:
Fastest and most accurate node module for calculating odds of poker games Texas Hold'em, Texas Shortdeck/Sixplus and Omaha.
313 lines (312 loc) • 13.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("../index");
const assert = require("assert");
describe("Texas Omaha", function () {
it('STRAIGHT FLUSH - invalid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "Jh", "6s"])
.addPlayer(["Tc", "9c", "8c", "5c"])
.boardAction((board) => {
board
.setFlop(["Qh", "5d", "8h"])
.setTurn("3s")
.setRiver("4s");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('STRAIGHT FLUSH - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "2s", "7d"])
.addPlayer(["Tc", "9c", "8c", "7c"])
.boardAction((board) => {
board
.setFlop(["Qh", "Jh", "8h"])
.setTurn("3s")
.setRiver("4s");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('STRAIGHT FLUSH - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "Jh", "6s"])
.addPlayer(["Tc", "9c", "8c", "5c"])
.boardAction((board) => {
board
.setFlop(["Qh", "5d", "8h"])
.setTurn("7h")
.setRiver("6h");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('QUADS - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "Tc", "2h", "2c"])
.addPlayer(["3c", "4c", "5c", "6c"])
.boardAction((board) => {
board
.setFlop(["Td", "Ts", "8h"])
.setTurn("3s")
.setRiver("3d");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('QUADS - invalid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "Tc", "Ts", "4d"])
.addPlayer(["3c", "4c", "5c", "6c"])
.boardAction((board) => {
board
.setFlop(["Td", "2s", "4h"])
.setTurn("3s")
.setRiver("9d");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('QUADS - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Kh", "4d", "2s", "2c"])
.addPlayer(["Ac", "Ad", "5c", "6c"])
.boardAction((board) => {
board
.setFlop(["Td", "2d", "2h"])
.setTurn("Ts")
.setRiver("Tc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('FULL HOUSE - invalid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["As", "Jh", "Jd", "Jc"])
.addPlayer(["7c", "9d", "Qc", "Qs"])
.boardAction((board) => {
board
.setFlop(["Td", "Ad", "Ac"])
.setTurn("Ts")
.setRiver("Tc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('THREE OF A KIND - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["As", "9s", "2d", "3c"])
.addPlayer(["7c", "9d", "Qd", "Qs"])
.boardAction((board) => {
board
.setFlop(["Ad", "5c", "5d"])
.setTurn("Ac")
.setRiver("Jc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('THREE OF A KIND - invalid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["3c", "As", "Ad", "Ac"])
.addPlayer(["7c", "9d", "Qd", "Qs"])
.boardAction((board) => {
board
.setFlop(["9s", "5c", "5d"])
.setTurn("2d")
.setRiver("Qc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('TWO PAIRS', (done) => {
const result = new index_1.Omaha()
.addPlayer(["3c", "5s", "Ad", "Ac"])
.addPlayer(["7c", "9d", "Kd", "Js"])
.boardAction((board) => {
board
.setFlop(["3s", "5c", "6d"])
.setTurn("Ks")
.setRiver("Qc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('ONE PAIR', (done) => {
const result = new index_1.Omaha()
.addPlayer(["3c", "5s", "Ad", "Ac"])
.addPlayer(["7c", "9d", "Kd", "Js"])
.boardAction((board) => {
board
.setFlop(["3s", "4c", "6d"])
.setTurn("Ks")
.setRiver("Qc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('STRAIGHT - valid', (done) => {
const result = new index_1.Omaha()
.addPlayer(["3c", "5s", "4s", "2s"])
.addPlayer(["7c", "9c", "Kd", "Js"])
.boardAction((board) => {
board
.setFlop(["2d", "3d", "4h"])
.setTurn("6d")
.setRiver("Qc");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('TRIPS vs STRAIGHT', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "2s", "7d"])
.addPlayer(["Tc", "9c", "8c", "7c"])
.boardAction((board) => {
board
.setFlop(["Ac", "As", "8h"])
.setTurn("7h")
.setRiver("Jh");
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 100.00);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 0);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('TRIPS vs STRAIGHT 2', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "2s", "7d"])
.addPlayer(["Tc", "9c", "8c", "7c"])
.boardAction((board) => {
board
.setFlop(["Ac", "As", "8h"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 5.85);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 63.90);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 30.24);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 30.24);
done();
});
it('TRIPS vs STRAIGHT 3', (done) => {
const result = new index_1.Omaha()
.addPlayer(["Th", "9h", "2s", "7d"])
.addPlayer(["Tc", "9c", "8c", "7c"])
.boardAction((board) => {
board
.setFlop(["Ac", "As", "7h"])
.setTurn("Jh");
//.setRiver("7h")
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 22.50);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 10.00);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 67.50);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 67.50);
done();
});
it('RANDOM 2', (done) => {
const result = new index_1.Omaha()
.addPlayer(["8d", "4s", "3d", "4c"])
.addPlayer(["Qh", "Kh", "3h", "7c"])
.boardAction((board) => {
board
.setFlop(["9c", "Js", "9d"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 56.59);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 43.41);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('RANDOM 3', (done) => {
const result = new index_1.Omaha()
.addPlayer(["7d", "8c", "6h", "5h"])
.addPlayer(["Js", "9s", "Qd", "7c"])
.boardAction((board) => {
board
.setFlop(["Jh", "Th", "9c"]);
})
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 64.88);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 35.12);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0);
done();
});
it('50/50', (done) => {
const result = new index_1.Omaha()
.addPlayer(["7s", "6s", "5s", "4s"])
.addPlayer(["7d", "6d", "5d", "4d"])
.calculate();
assert.equal(Math.round(result.getPlayers()[0].getWinsPercentage()), 5);
assert.equal(Math.round(result.getPlayers()[1].getWinsPercentage()), 5);
assert.equal(Math.round(result.getPlayers()[0].getTiesPercentage()), 90);
assert.equal(Math.round(result.getPlayers()[1].getTiesPercentage()), 90);
done();
}).timeout(3e3);
it('EXHAUSTIVE', (done) => {
const result = new index_1.Omaha()
.addPlayer(["9h", "7s", "6d", "3d"])
.addPlayer(["Ts", "Qc", "Td", "6c"])
.exhaustive()
.calculate();
assert.equal(result.getPlayers()[0].getWinsPercentage(), 35.15);
assert.equal(result.getPlayers()[1].getWinsPercentage(), 64.71);
assert.equal(result.getPlayers()[0].getTiesPercentage(), 0.14);
assert.equal(result.getPlayers()[1].getTiesPercentage(), 0.14);
done();
}).timeout(2e4);
});