Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { expect } from 'chai'
- import {
- findWinner,
- hasWinner,
- } from './tic-tac-toe'
- describe( 'tic-tac-toe', () => {
- const translate = plays =>
- plays
- .map( row =>
- row.split( '|' ) )
- describe( 'game in progress', () => {
- const inProgress = [
- [ ' | | ',
- ' | | ',
- ' | | ', ],
- [ ' |X| ',
- ' | | ',
- ' | | ', ],
- [ ' |X| ',
- ' |O| ',
- ' | | ', ],
- [ ' |X| ',
- ' | | ',
- ' |O| ', ],
- [ ' |X| ',
- 'O| | ',
- ' | | ', ],
- [ ' | | ',
- ' | |O',
- ' |X| ', ],
- [ 'X|O|X',
- 'O|X|O',
- 'O|X|O', ],
- ]
- it( 'does not have a winner', () => {
- inProgress.forEach( game => {
- const board = translate( game )
- expect( hasWinner( board ) ).to.be.false
- } )
- } )
- } )
- describe( 'winning a game', () => {
- const winningGames = [ {
- winner: 'X',
- plays: [
- 'X| | ',
- 'X| | ',
- 'X| | ', ],
- }, {
- winner: 'X',
- plays: [
- ' |X| ',
- ' |X| ',
- ' |X| ', ],
- }, {
- winner: 'O',
- plays: [
- ' | |O',
- ' | |O',
- ' | |O', ],
- }, {
- winner: 'X',
- plays: [
- ' | | ',
- 'X|X|X',
- ' | | ', ],
- }, {
- winner: 'O',
- plays: [
- 'O|O|O',
- ' | | ',
- ' | | ', ],
- }, {
- winner: 'O',
- plays: [
- ' | | ',
- 'O|O|O',
- ' | | ', ],
- }, {
- winner: 'O',
- plays: [
- ' | | ',
- ' | | ',
- 'O|O|O', ],
- }, {
- winner: 'O',
- plays: [
- ' | |O',
- ' |O| ',
- 'O| | ', ],
- }, {
- winner: 'X',
- plays: [
- ' | |X',
- ' |X| ',
- 'X| | ', ],
- }, {
- winner: 'X',
- plays: [
- 'X| | ',
- ' |X| ',
- ' | |X', ],
- }, {
- winner: 'O',
- plays: [
- 'O| | ',
- ' |O| ',
- ' | |O', ],
- } ]
- winningGames.forEach( game => {
- const board = translate( game.plays )
- expect( hasWinner( board ) ).to.be.true
- expect( findWinner( board ) ).to.eq( game.winner,
- '\n' + board.join( '\n' ) + '\n' )
- } )
- } )
- } )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement