Exemplo n.º 1
0
class TestGame(unittest.TestCase):
    def setUp(self):
        app.testing = True
        self.data = {
            'player': 'x',
            'opponent': 'o',
            'winner': False,
            'board': {
                'top-left': {
                    'value': ''
                },
                'top-center': {
                    'value': ''
                },
                'top-right': {
                    'value': ''
                },
                'middle-left': {
                    'value': ''
                },
                'middle-center': {
                    'value': ''
                },
                'middle-right': {
                    'value': ''
                },
                'bottom-left': {
                    'value': ''
                },
                'bottom-center': {
                    'value': ''
                },
                'bottom-right': {
                    'value': ''
                },
            }
        }

        self.game = Game(self.data)

    def test_makeMove(self):
        projectedBoard = [[{
            'id': 'top-left',
            'value': ''
        }, {
            'id': 'top-center',
            'value': 'o'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                          [{
                              'id': 'middle-left',
                              'value': ''
                          }, {
                              'id': 'middle-center',
                              'value': 'x'
                          }, {
                              'id': 'middle-right',
                              'value': ''
                          }],
                          [{
                              'id': 'bottom-left',
                              'value': 'o'
                          }, {
                              'id': 'bottom-center',
                              'value': 'o'
                          }, {
                              'id': 'bottom-right',
                              'value': 'x'
                          }]]
        self.game.board.board = projectedBoard
        self.game.makeMove()

        self.assertEqual(self.game.board.board[0][0]['value'], 'x')
        self.assertEqual(self.game.player, 'o')
        self.assertEqual(self.game.opponent, 'x')

    def test_constructResponse(self):
        response = self.game.constructResponse()

        data = {
            'player': 'x',
            'opponent': 'o',
            'winner': False,
            'board': {
                'top-left': {
                    'value': ''
                },
                'top-center': {
                    'value': ''
                },
                'top-right': {
                    'value': ''
                },
                'middle-left': {
                    'value': ''
                },
                'middle-center': {
                    'value': ''
                },
                'middle-right': {
                    'value': ''
                },
                'bottom-left': {
                    'value': ''
                },
                'bottom-center': {
                    'value': ''
                },
                'bottom-right': {
                    'value': ''
                },
            }
        }

        self.assertEqual(response['player'], 'x')
        self.assertEqual(response['opponent'], 'o')
        self.maxDiff = None
        self.assertDictEqual(response['board'], data['board'])

    def test_takeTurn(self):
        winningBoard = [[{
            'id': 'top-left',
            'value': 'x'
        }, {
            'id': 'top-center',
            'value': 'x'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                        [{
                            'id': 'middle-left',
                            'value': ''
                        }, {
                            'id': 'middle-center',
                            'value': ''
                        }, {
                            'id': 'middle-right',
                            'value': ''
                        }],
                        [{
                            'id': 'bottom-left',
                            'value': ''
                        }, {
                            'id': 'bottom-center',
                            'value': ''
                        }, {
                            'id': 'bottom-right',
                            'value': ''
                        }]]

        self.game.board.board = winningBoard
        response = self.game.takeTurn()
        self.assertEqual(response['winner'], 'x')

        testBoard = [[{
            'id': 'top-left',
            'value': 'x'
        }, {
            'id': 'top-center',
            'value': 'o'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                     [{
                         'id': 'middle-left',
                         'value': 'o'
                     }, {
                         'id': 'middle-center',
                         'value': 'x'
                     }, {
                         'id': 'middle-right',
                         'value': ''
                     }],
                     [{
                         'id': 'bottom-left',
                         'value': ''
                     }, {
                         'id': 'bottom-center',
                         'value': ''
                     }, {
                         'id': 'bottom-right',
                         'value': ''
                     }]]

        self.game.board.board = testBoard
        self.assertEqual(self.game.board.board[1][2]['value'], '')

        response = self.game.takeTurn()

        self.assertEqual(self.game.board.board[1][2]['value'], 'x')

    def test_determineBestMove(self):
        testBoard = [[{
            'id': 'top-left',
            'value': 'x'
        }, {
            'id': 'top-center',
            'value': 'o'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                     [{
                         'id': 'middle-left',
                         'value': 'o'
                     }, {
                         'id': 'middle-center',
                         'value': 'x'
                     }, {
                         'id': 'middle-right',
                         'value': ''
                     }],
                     [{
                         'id': 'bottom-left',
                         'value': ''
                     }, {
                         'id': 'bottom-center',
                         'value': ''
                     }, {
                         'id': 'bottom-right',
                         'value': ''
                     }]]

        self.game.board.board = testBoard
        self.assertEqual(self.game.board.board[1][2]['value'], '')
        self.game.determineBestMove()
        self.assertEqual(self.game.board.board[1][2]['value'], 'x')

    def test_generateMoves(self):
        testBoard = [[{
            'id': 'top-left',
            'value': 'x'
        }, {
            'id': 'top-center',
            'value': 'o'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                     [{
                         'id': 'middle-left',
                         'value': 'o'
                     }, {
                         'id': 'middle-center',
                         'value': 'x'
                     }, {
                         'id': 'middle-right',
                         'value': ''
                     }],
                     [{
                         'id': 'bottom-left',
                         'value': ''
                     }, {
                         'id': 'bottom-center',
                         'value': ''
                     }, {
                         'id': 'bottom-right',
                         'value': ''
                     }]]

        self.game.board.board = testBoard
        self.game.board.moves = []

        self.game.generateMoves(self.game.board)

        self.assertEqual(len(self.game.board.moves), 4)

    def test_score(self):
        winningBoard = [[{
            'id': 'top-left',
            'value': 'x'
        }, {
            'id': 'top-center',
            'value': 'x'
        }, {
            'id': 'top-right',
            'value': 'x'
        }],
                        [{
                            'id': 'middle-left',
                            'value': ''
                        }, {
                            'id': 'middle-center',
                            'value': ''
                        }, {
                            'id': 'middle-right',
                            'value': ''
                        }],
                        [{
                            'id': 'bottom-left',
                            'value': ''
                        }, {
                            'id': 'bottom-center',
                            'value': ''
                        }, {
                            'id': 'bottom-right',
                            'value': ''
                        }]]

        self.game.board.board = winningBoard

        self.assertEqual(self.game.score(self.game.board), 1)

        winningBoard = [[{
            'id': 'top-left',
            'value': 'o'
        }, {
            'id': 'top-center',
            'value': 'o'
        }, {
            'id': 'top-right',
            'value': 'o'
        }],
                        [{
                            'id': 'middle-left',
                            'value': ''
                        }, {
                            'id': 'middle-center',
                            'value': ''
                        }, {
                            'id': 'middle-right',
                            'value': ''
                        }],
                        [{
                            'id': 'bottom-left',
                            'value': ''
                        }, {
                            'id': 'bottom-center',
                            'value': ''
                        }, {
                            'id': 'bottom-right',
                            'value': ''
                        }]]

        self.game.board.board = winningBoard
        self.assertEqual(self.game.score(self.game.board), -1)

        winningBoard = [[{
            'id': 'top-left',
            'value': 'o'
        }, {
            'id': 'top-center',
            'value': 'x'
        }, {
            'id': 'top-right',
            'value': 'o'
        }],
                        [{
                            'id': 'middle-left',
                            'value': 'x'
                        }, {
                            'id': 'middle-center',
                            'value': 'o'
                        }, {
                            'id': 'middle-right',
                            'value': 'x'
                        }],
                        [{
                            'id': 'bottom-left',
                            'value': 'x'
                        }, {
                            'id': 'bottom-center',
                            'value': 'o'
                        }, {
                            'id': 'bottom-right',
                            'value': 'x'
                        }]]

        self.game.board.board = winningBoard
        self.assertEqual(self.game.score(self.game.board), 0)

    def test_findBoard(self):
        data = {
            'top-left': {
                'value': ''
            },
            'top-center': {
                'value': ''
            },
            'top-right': {
                'value': ''
            },
            'middle-left': {
                'value': ''
            },
            'middle-center': {
                'value': ''
            },
            'middle-right': {
                'value': ''
            },
            'bottom-left': {
                'value': ''
            },
            'bottom-center': {
                'value': ''
            },
            'bottom-right': {
                'value': ''
            },
        }

        board1 = Board(data, 'x', 'o')

        data = {
            'top-left': {
                'value': 'x'
            },
            'top-center': {
                'value': ''
            },
            'top-right': {
                'value': ''
            },
            'middle-left': {
                'value': ''
            },
            'middle-center': {
                'value': ''
            },
            'middle-right': {
                'value': ''
            },
            'bottom-left': {
                'value': ''
            },
            'bottom-center': {
                'value': ''
            },
            'bottom-right': {
                'value': ''
            },
        }

        board2 = Board(data, 'x', 'o')

        boards = [board1, board2]

        self.game.board.moves = boards

        data = {'top-left': {'value': 'x'}}

        foundBoard = Game.findBoard(self.game.board, data)

        self.assertEqual(foundBoard, board2)
Exemplo n.º 2
0
            'value': ''
        },
        'bottom-left': {
            'value': ''
        },
        'bottom-center': {
            'value': ''
        },
        'bottom-right': {
            'value': ''
        },
    }
}

initialGame = Game(emptyBoard)
initialGame.generateMoves(initialGame.board)
app.startBoard = initialGame.board

print 'initial boards generated. Starting up'

assets = Environment(app)
assets.url = app.static_url_path

css_bundle = Bundle('css/bootstrap.css', 'css/main.css', output="all.css")
assets.register('css_all', css_bundle)

js_bundle = Bundle('js/jquery-2.1.3.js',
                   'js/bootstrap.js',
                   'js/main.js',
                   'js/board.js',
                   output="all.js")