Exemple #1
0
    def test_tiles(self):
        import skb.model as model
        from skb.model.game import ShiftyBoard

        sb = ShiftyBoard()

        sb.name = 'test_tiles'
        sb.dimensions = (10,10)

        for coli in range(0, len(sb)):
            for rowi in range(0, len(sb[coli])):
                if coli == rowi:
                    sb[coli][rowi] = ShiftyBoard.TILE_GRAY
                elif coli > rowi:
                    sb[coli][rowi] = ShiftyBoard.TILE_WHITE
                else:
                    sb[coli][rowi] = ShiftyBoard.TILE_BLACK

        model.commit()

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

        for coli in xrange(0, len(sb)):
            for rowi in range(0, len(sb[coli])):
                if coli == rowi:
                    assert sb[coli][rowi] == ShiftyBoard.TILE_GRAY
                elif coli > rowi:
                    assert sb[coli][rowi] == ShiftyBoard.TILE_WHITE
                else:
                    assert sb[coli][rowi] == ShiftyBoard.TILE_BLACK
Exemple #2
0
    def test_name(self):
        import skb.model as model
        from skb.model.game import ShiftyBoard

        sb = ShiftyBoard()

        sb.name = 'test_name'

        model.commit()

        sb = ShiftyBoard.query.get(name='test_name')
        
        assert sb.name == 'test_name'
Exemple #3
0
    def test_dimensions(self):
        import skb.model as model
        from skb.model.game import ShiftyBoard

        sb = ShiftyBoard()

        assert len(sb) == 1
        assert len(sb[0]) == 1

        sb.name = 'test_set_dimensions'
        sb.dimensions = (5,5)

        model.commit()

        sb = ShiftyBoard.query.get(name='test_set_dimensions')
        
        assert sb.dimensions == (5,5)
        assert len(sb) == 5
        for col in sb:
            assert len(col) == 5
Exemple #4
0
    def test_start_location(self):
        import skb.model as model
        from skb.model.game import ShiftyBoard

        sb = ShiftyBoard()

        sb.name = 'test_start_location'
        sb.dimensions = (3,3)
        sb.start_location = (1,1)

        model.commit()

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

        assert sb.start_location == (1,1)

        with self.assertRaises(Exception):
            assert sb.start_location == (-1,-1)

        with self.assertRaises(Exception):
            assert sb.start_location == (3,3)
Exemple #5
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 #6
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