Spaces:
Paused
Paused
| ; | |
| const { Hangman } = require('../../../dist/server/chat-plugins/hangman'); | |
| const { makeUser, destroyUser } = require('../../users-utils'); | |
| const assert = require('../../assert'); | |
| function createHangman(creator, word, hint) { | |
| return new Hangman(Rooms.lobby, creator, word, hint); | |
| } | |
| describe("Hangman", () => { | |
| before(function () { | |
| this.creator = makeUser('dawoblefet'); | |
| this.guesser = makeUser('mathy'); | |
| }); | |
| after(function () { | |
| destroyUser(this.creator); | |
| destroyUser(this.guesser); | |
| }); | |
| it("should reject impossible guesses", function () { | |
| const game = createHangman(this.creator, "Wynaut", "Why write unit tests?"); | |
| const errorRegex = /Your guess "[A-Za-z ]+" is invalid./; | |
| const testInvalidGuess = guess => { | |
| assert.throws(() => { | |
| game.choose(this.guesser, guess); | |
| }, errorRegex, `Guess should have been invalid: "${guess}"`); | |
| }; | |
| testInvalidGuess('wobbuffet'); // wrong length | |
| game.choose(this.guesser, 'z'); | |
| testInvalidGuess('zekrom'); // 'z' already guessed | |
| game.choose(this.guesser, 't'); | |
| // _ _ _ _ _ t | |
| testInvalidGuess('beldum'); // wrong letters | |
| game.choose(this.guesser, 'furret'); // should be valid | |
| testInvalidGuess('chatot'); // only one 't' | |
| game.choose(this.guesser, 'a'); | |
| game.choose(this.guesser, 'n'); | |
| // _ _ n a _ t | |
| testInvalidGuess('durant'); // 'n' in wrong spot | |
| game.choose(this.guesser, 'wynaut'); // we did it! | |
| }); | |
| }); | |