Esempio n. 1
0
    def test_game_fire(self, MockShip):
        ship = MockShip()
        ship.is_dead.return_value = False
        rules = Rules(mode='standard', opponent='human')

        player1 = Player('p1')

        player2 = Player('p2')
        player2.ships.append(ship)

        g = Game(1, player1, player2, rules)
        ship.is_hit.return_value = True

        expected = True
        actual = g.fire(Coordinates('a', 1))
        self.assertEqual(expected, actual)

        g = Game(1, player1, player2, rules)
        ship.is_hit.return_value = False

        expected = False
        actual = g.fire(Coordinates('b', 3))
        self.assertEqual(expected, actual)

        expected = False
        actual = g.fire(Coordinates('i', 10))
        self.assertEqual(expected, actual)
Esempio n. 2
0
    def test_game_next_player(self):
        rules = Rules(mode='standard', opponent='human')

        p1 = Player('p1')
        p2 = Player('p2')

        g = Game(1, p1, p2, rules)

        expected = p2
        actual = g.next_player()
        self.assertEqual(expected, actual)
Esempio n. 3
0
def edit_rule(id):
    data = data_defaults['rule']['edit']
    if request.method == 'GET':
        r = Rules().get_rule(id)
        data['rule'] = r[id]
        return render_template('rule_form.html', data=data)
    if request.method == 'POST':
        _input = g.form.copy()
        _input['id'] = id

        ok, messages = fswww().validate_rule_properties(_input)
        if not ok:
            for m in messages:
                flash(m)
            return render_template('rule_form.html', data={'rule': _input})

        id = Rules().update_rule(_input)
        if id is not False:
            url = '/rules/edit/%d' % id
            flash('rule updated')
            return redirect(url)

        flash('unable to update rule')
        return render_template('rule_form.html', data={'rule': _input})
Esempio n. 4
0
    def test_is_game_over(self, MockShip):
        ship = MockShip()
        ship.is_dead.return_value = False
        player1 = Player('p1')

        player2 = Player('p2')
        rules = Rules(mode='standard', opponent='human')

        g = Game(1, player1, player2, rules)
        self.assertTrue(g.is_game_over())

        player1.ships.append(ship)
        g = Game(1, player1, player2, rules)
        self.assertTrue(g.is_game_over())

        player2.ships.append(ship)
        g = Game(1, player1, player2, rules)
        self.assertFalse(g.is_game_over())
Esempio n. 5
0
def create_rule():
    data = data_defaults['rule']['create']
    if request.method == 'GET':
        return render_template('rule_form.html', data=data)
    if request.method == 'POST':
        _input = g.form.copy()
        _input['modified_by'] = g.current_user['id']
        ok, messages = fswww().validate_rule_properties(_input)
        if not ok:
            for m in messages:
                flash(m)
            return render_template('rule_form.html', data={'rule': _input})

        id = Rules().create_rule(_input)
        if id is not False:
            url = '/rules/edit/%d' % id
            flash('rule created')
            return redirect(url)

        flash('unable to create rule')
        return render_template('rule_form.html', data={'rule': _input})
Esempio n. 6
0
def new_game():
    player1 = Player("Player 1")
    player2 = Player("Player 2")
    rules = Rules(mode='standard', opponent='human')
    new_g = Game(1, player1, player2, rules)
    return new_g
Esempio n. 7
0
def delete_rule(id):
    if request.method == 'POST':
        data = Rules().delete_rule(id)
Esempio n. 8
0
def list_rules():
    rules = Rules().get_all_rules()
    data = {'rules': rules}
    return render_template('rules.html', data=data)