UNPKG

slotify.js

Version:

A video slot game session framework for JavaScript

96 lines (79 loc) 3.29 kB
import {GameSession} from "./GameSession"; import {IGameSession} from "./IGameSession"; import {IGameSessionConfig} from "./IGameSessionConfig"; import {GameSessionConfig} from "./GameSessionConfig"; const testDefaultSession = (sessionClass: any, configClass: any) => { const config: IGameSessionConfig = new configClass(); const session: IGameSession = new sessionClass(config); expect(session.getAvailableBets()).toEqual(config.availableBets); expect(session.getBet()).toBe(config.availableBets[0]); expect(session.getCreditsAmount()).toBe(1000); }; const testSessionWithSpecifiedConfig = (sessionClass: any, configClass: any) => { const config: IGameSessionConfig = new configClass(); config.availableBets = [10, 20, 30]; config.creditsAmount = 5000; const session: IGameSession = new sessionClass(config); expect(session.isBetAvailable(1)).toBeFalsy(); expect(session.isBetAvailable(10)).toBeTruthy(); expect(session.getAvailableBets()).toEqual(config.availableBets); expect(session.getBet()).toBe(config.availableBets[0]); expect(session.getCreditsAmount()).toBe(5000); }; const testSessionWithWrongInitialBet = (sessionClass: any, configClass: any) => { const config: IGameSessionConfig = new configClass(); config.availableBets = [10, 20, 30]; config.bet = 1; const session: IGameSession = new sessionClass(config); expect(session.getBet()).toBe(config.availableBets[0]); }; const testPlayWhileEnoughCredits = (session: IGameSession) => { session.setBet(10); session.play(); expect(session.getCreditsAmount()).toBe(990); expect(session.canPlayNextGame()).toBeTruthy(); // Play with different bet session.setBet(100); session.play(); expect(session.getCreditsAmount()).toBe(890); expect(session.canPlayNextGame()).toBeTruthy(); let playedGamesNum: number = 0; let expectedGamesToPlay: number = Math.floor(session.getCreditsAmount() / session.getBet()); while (session.canPlayNextGame()) { session.play(); playedGamesNum++; } expect(playedGamesNum).toBe(expectedGamesToPlay); // Decrease bet to 10 and play remaining 9 games session.setBet(10); playedGamesNum = 0; expectedGamesToPlay = Math.floor(session.getCreditsAmount() / session.getBet()); while (session.canPlayNextGame()) { session.play(); playedGamesNum++; } expect(playedGamesNum).toBe(expectedGamesToPlay); }; describe("GameSession", () => { const sessionClass = GameSession; const configClass = GameSessionConfig; it("creates default session", () => { testDefaultSession(sessionClass, configClass); }); it("creates session with specified config", () => { testSessionWithSpecifiedConfig(sessionClass, configClass); }); it("creates session with wrong initial bet", () => { testSessionWithWrongInitialBet(sessionClass, configClass); }); it("plays while enough credits", () => { const config: IGameSessionConfig = new configClass(); const session = new sessionClass(config); testPlayWhileEnoughCredits(session); }); }); export { testDefaultSession, testSessionWithSpecifiedConfig, testSessionWithWrongInitialBet, };