Exemple #1
0
    def index_post(self):
        jsboard = loads(request.body)

        board = ShiftyBoard.query.get(name=jsboard['name'])

        if board:
            abort(409, detail='Name already in use: %s' % board.name)

        board = ShiftyBoard()

        try:
            board.name = jsboard['name']

            board.dimensions = (jsboard['dimensions']['cols'], jsboard['dimensions']['rows'])

            board.start = (jsboard['start'][0], jsboard['start'][1])

            for tile, col, row in jsboard['goals']:
                board.add_goal(tile, col=col, row=row)

            for col in range(0, board.dimensions[0]):
                for row in range(0, board.dimensions[1]):
                    board[col][row] = jsboard['tiles'][col][row]
        except Exception as e:
            abort(406, 'Configuration error for board: %s' % e)

        model.commit()

        redirect('/boards/%s/' % board.name, code=303)
Exemple #2
0
    def test_goals(self):
        import skb.model as model
        from skb.model.game import ShiftyBoard

        sb = ShiftyBoard()

        assert len(sb.goals) == 0

        sb.name = 'test_goals'
        sb.dimensions = (3,3)

        sb.add_goal(ShiftyBoard.TILE_WHITE, 0, 0)
        sb.add_goal(ShiftyBoard.TILE_BLACK, 1, 1)

        with self.assertRaises(Exception):
            sb.add_goal(ShiftyBoard.TILE_GRAY, 2, 2)

        with self.assertRaises(Exception):
            sb.add_goal(ShiftyBoard.TILE_WHITE, 3, 3)

        with self.assertRaises(Exception):
            sb.add_goal(ShiftyBoard.TILE_WHITE, -1, -1)

        model.commit()

        sb = ShiftyBoard.query.get(name='test_goals')

        assert sb.goals[0]['goal_color'] == ShiftyBoard.TILE_WHITE and sb.goals[0]['col'] == 0 and sb.goals[0]['row'] == 0
        assert sb.goals[1]['goal_color'] == ShiftyBoard.TILE_BLACK and sb.goals[1]['col'] == 1 and sb.goals[1]['row'] == 1