UNPKG

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
"use strict"; 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); });