120 lines
2.7 KiB
TypeScript
Executable File
120 lines
2.7 KiB
TypeScript
Executable File
import { PokerGame, EGameStatus } from '../../../src/app/core/PokerGame';
|
|
// @ts-ignore
|
|
import { expect } from 'chai';
|
|
import { IPlayer } from '../../../src/app/core/Player';
|
|
|
|
describe('test/app/core/pokerGame.test.ts', () => {
|
|
const users: IPlayer[] = [
|
|
{
|
|
userId: '1',
|
|
counter: 200,
|
|
},
|
|
{
|
|
userId: '2',
|
|
counter: 200,
|
|
},
|
|
{
|
|
userId: '3',
|
|
counter: 50,
|
|
},
|
|
{
|
|
userId: '4',
|
|
counter: 400,
|
|
},
|
|
{
|
|
userId: '5',
|
|
counter: 1200,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* game ready
|
|
*/
|
|
it('game init', async () => {
|
|
const game = new PokerGame({
|
|
smallBlind: 1,
|
|
users,
|
|
});
|
|
game.play();
|
|
expect(game.status).to.equal(EGameStatus.GAME_ACTION);
|
|
expect(game.currPlayer.node.actionSize).to.equal(0);
|
|
expect(game.pot).to.equal(3);
|
|
expect(game.pot).to.equal(3);
|
|
expect(game.playerLink.getNode(1).node.actionSize).to.equal(1);
|
|
});
|
|
|
|
/**
|
|
* game playing
|
|
*/
|
|
it('game play', async () => {
|
|
const game = new PokerGame({
|
|
smallBlind: 1,
|
|
users,
|
|
});
|
|
game.play();
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('check');
|
|
game.sendCard();
|
|
game.action('raise:10');
|
|
game.action('raise:20');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('raise:40');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.action('call');
|
|
game.sendCard();
|
|
game.action('allin');
|
|
game.action('allin');
|
|
game.action('allin');
|
|
game.action('fold');
|
|
game.action('allin');
|
|
console.log('cc');
|
|
// game.action('raise:10');
|
|
console.log(game.commonCard);
|
|
console.log(game.pot);
|
|
console.log(game.getPlayers());
|
|
console.log(game.winner);
|
|
console.log(game.winner[0][0].handCard, game.commonCard);
|
|
});
|
|
// flop
|
|
// turn
|
|
// river
|
|
// chip in
|
|
// has Allin need separate pot
|
|
// many allin
|
|
|
|
/**
|
|
* game over
|
|
*/
|
|
it('game over', async () => {
|
|
// only one player
|
|
// last player, other player fold
|
|
|
|
// multiple player
|
|
// last player, has all in player
|
|
// all player all in
|
|
// one player all in
|
|
// many player all in
|
|
|
|
// winner
|
|
// one winner
|
|
// multiple winner
|
|
// bisecting pot
|
|
// allin player winner and small pot, multiple second winner bisecting pot
|
|
// allin player winner and small pot, one second winner
|
|
// all player allin, winner can't win all pot,
|
|
});
|
|
/**
|
|
* count
|
|
*/
|
|
it('count', async () => {
|
|
|
|
});
|
|
// has other pot
|
|
});
|