Exemplo n.º 1
0
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.tactics_rps = TacticsCardRPS(controller)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)
Exemplo n.º 2
0
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.charge = Charge(controller)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)
Exemplo n.º 3
0
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")

        self.controller = Controller(self.p1, self.p2)
        self.charge = Charge(self.controller)
        when(self.controller).get_p1().thenReturn(self.p1)
        when(self.controller).get_p2().thenReturn(self.p2)

        self.held, sys.stdout = sys.stdout, StringIO()
Exemplo n.º 4
0
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.lance = TasteOfTheLance(controller)

        when(self.p1).get_current_position().thenReturn(0)
        when(self.p1).get_bruises().thenReturn(0)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)
Exemplo n.º 5
0
class TasteOfTheLanceTest(unittest.TestCase):
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")

        self.controller = Controller(self.p1, self.p2)
        self.charge = Charge(self.controller)
        when(self.controller).get_p1().thenReturn(self.p1)
        when(self.controller).get_p2().thenReturn(self.p2)

        self.held, sys.stdout = sys.stdout, StringIO()

    def tearDown(self):
        unstub()

    def test_round_p1_unhorsed(self):
        when(self.p1).get_unhorsed().thenReturn(True)

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P2 wins by unhorsing Sir P1", output)

    def test_round_p2_unhorsed(self):
        when(self.p2).get_unhorsed().thenReturn(True)

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P1 wins by unhorsing Sir P2", output)

    def test_round_p1_disqualified(self):
        when(self.p1).get_disqualified().thenReturn(True)

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals(
            "Sir P1 has failed to start twice and has been disqualified.",
            output)

    def test_round_p2_disqualified(self):
        when(self.p2).get_disqualified().thenReturn(True)

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals(
            "Sir P2 has failed to start twice and has been disqualified.",
            output)

    def test_final_results_p1_wins_points(self):
        when(self.p1).get_points().thenReturn(5)
        when(self.p2).get_points().thenReturn(0)

        self.controller.get_final_results()
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P1 wins 5 to 0", output)

    def test_final_results_p2_wins_points(self):
        when(self.p1).get_points().thenReturn(0)
        when(self.p2).get_points().thenReturn(5)

        self.controller.get_final_results()
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P2 wins 5 to 0", output)

    def test_final_results_tie_points(self):
        when(self.p1).get_points().thenReturn(5)
        when(self.p2).get_points().thenReturn(5)

        self.controller.get_final_results()
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P1 and Sir P2 tie with 5 points.", output)

    def test_round_p1_failed_to_start(self):
        self.p1.move(5)
        self.p2.move(10)
        self.p1.determine_failed_to_start()
        self.p2.determine_failed_to_start()
        self.assertNotEquals(0, self.p1.get_current_position())
        self.assertNotEquals(0, self.p2.get_current_position())

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P1 failed to start and the round is over.",
                          output)

    def test_round_p2_failed_to_start(self):
        self.p1.move(10)
        self.p2.move(5)
        self.p1.determine_failed_to_start()
        self.p2.determine_failed_to_start()
        self.assertNotEquals(0, self.p1.get_current_position())
        self.assertNotEquals(0, self.p2.get_current_position())

        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals("Sir P2 failed to start and the round is over.",
                          output)

    def test_round_points(self):
        when(self.p1).get_points().thenReturn(2)
        when(self.p2).get_points().thenReturn(3)
        self.controller.get_round_results(1)
        output = sys.stdout.getvalue().strip()
        self.assertEquals(
            "At the end of round 1 Sir P1 has 2 points, and Sir P2 has 3 points.",
            output)

    def test_reset_players(self):
        self.p1.move(5)
        self.p2.move(8)
        self.p1.determine_failed_to_start()
        self.p2.determine_failed_to_start()
        self.assertNotEquals(0, self.p1.get_current_position())
        self.assertNotEquals(0, self.p2.get_current_position())
        self.assertTrue(self.p1.get_failed_to_start())
        self.assertFalse(self.p2.get_failed_to_start())

        self.controller.reset_players_for_new_round()
        self.assertEquals(0, self.p1.get_current_position())
        self.assertEquals(0, self.p2.get_current_position())
        self.assertFalse(self.p1.get_failed_to_start())
        self.assertFalse(self.p2.get_failed_to_start())

    def test_full_round(self):
        self.controller.do_kick()
        self.assertNotEquals(0, self.p1.get_current_position())
        self.assertNotEquals(0, self.p2.get_current_position())

        when(self.p1).get_failed_to_start().thenReturn(False)
        when(self.p2).get_failed_to_start().thenReturn(False)
        self.controller.do_charge()

        when(self.p1).get_tactical_card().thenReturn(rps.COUNTER)
        when(self.p2).get_tactical_card().thenReturn(rps.SHIELD)
        self.controller.do_tactics_rps()
        self.assertTrue(self.p1.get_won_rps())

        when(self.p1).get_accept_heavy_blows().thenReturn(False)
        when(self.p2).get_accept_heavy_blows().thenReturn(False)
        self.controller.do_taste_of_the_lance()
        self.assertFalse(self.p1.get_unhorsed())
        self.assertFalse(self.p2.get_unhorsed())
Exemplo n.º 6
0
class TacticsCardRPSTest(unittest.TestCase):
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.tactics_rps = TacticsCardRPS(controller)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)

    def tearDown(self):
        unstub()

    def test_rps_tie(self):
        when(self.p1).get_tactical_card().thenReturn(rps.SHIELD)
        when(self.p2).get_tactical_card().thenReturn(rps.SHIELD)

        self.tactics_rps.do_tactics_rps()
        self.assertTrue(self.p1.get_accept_heavy_blows())
        self.assertTrue(self.p2.get_accept_heavy_blows())

    def test_rps_p1_wins_with_shield(self):
        when(self.p1).get_tactical_card().thenReturn(rps.SHIELD)
        when(self.p2).get_tactical_card().thenReturn(rps.LUNGE)

        self.tactics_rps.do_tactics_rps()
        self.assertFalse(self.p1.get_accept_heavy_blows())
        self.assertTrue(self.p2.get_accept_heavy_blows())

    def test_rps_p2_wins_with_shield(self):
        when(self.p1).get_tactical_card().thenReturn(rps.LUNGE)
        when(self.p2).get_tactical_card().thenReturn(rps.SHIELD)

        self.tactics_rps.do_tactics_rps()
        self.assertTrue(self.p1.get_accept_heavy_blows())
        self.assertFalse(self.p2.get_accept_heavy_blows())

    def test_rps_p1_wins_not_shield(self):
        when(self.p1).get_tactical_card().thenReturn(rps.COUNTER)
        when(self.p2).get_tactical_card().thenReturn(rps.SHIELD)

        self.tactics_rps.do_tactics_rps()
        self.assertTrue(self.p1.get_accept_heavy_blows())
        self.assertTrue(self.p2.get_accept_heavy_blows())
        self.assertTrue(self.p1.get_won_rps())
        self.assertFalse(self.p2.get_won_rps())

    def test_rps_p2_wins_not_shield(self):
        when(self.p1).get_tactical_card().thenReturn(rps.COUNTER)
        when(self.p2).get_tactical_card().thenReturn(rps.LUNGE)

        self.tactics_rps.do_tactics_rps()
        self.assertTrue(self.p1.get_accept_heavy_blows())
        self.assertTrue(self.p2.get_accept_heavy_blows())
        self.assertFalse(self.p1.get_won_rps())
        self.assertTrue(self.p2.get_won_rps())
Exemplo n.º 7
0
 def setUp(self):
     self.knight = Knight("Lancelot")
Exemplo n.º 8
0
class KnightTest(unittest.TestCase):
    def setUp(self):
        self.knight = Knight("Lancelot")

    def test_move(self):
        knight = self.knight
        self.assertEquals(0, knight.get_current_position())

        knight.move(5)
        self.assertEquals(5, knight.get_current_position())

    def test_bruises(self):
        knight = self.knight
        self.assertEquals(0, knight.get_bruises())

        knight.add_bruise()
        self.assertEquals(1, knight.get_bruises())

    def test_tactical_card(self):
        knight = self.knight
        self.assertEquals(-1, knight.get_tactical_card())

        knight.set_tactical_card(SHIELD)
        self.assertEquals(0, knight.get_tactical_card())

    def test_accept_heavy_blows(self):
        knight = self.knight
        self.assertTrue(knight.get_accept_heavy_blows())

        knight.set_accept_heavy_blows(False)
        self.assertFalse(knight.get_accept_heavy_blows())

    def test_disqualification(self):
        knight = self.knight
        self.assertFalse(knight.get_disqualified())

        knight.add_fail_start()
        self.assertFalse(knight.get_disqualified())

        knight.add_fail_start()
        self.assertTrue(knight.get_disqualified())

    def test_points(self):
        knight = self.knight
        self.assertEquals(0, knight.get_points())

        knight.add_points(5)
        self.assertEquals(5, knight.get_points())

    def test_unhorsed(self):
        knight = self.knight
        self.assertFalse(knight.get_unhorsed())

        knight.set_unhorsed(True)
        self.assertTrue(knight.get_unhorsed())

    def test_strike_modifier(self):
        knight = self.knight
        self.assertEquals(0, knight.get_strike_modifier())

        knight.set_strike_modifier(5)
        self.assertEquals(5, knight.get_strike_modifier())

    def test_failure_to_start(self):
        knight = self.knight
        self.assertFalse(knight.get_failed_to_start())

        knight.move(6)
        knight.determine_failed_to_start()
        self.assertTrue(knight.get_failed_to_start())

        knight.reset_for_round()
        knight.move(7)
        knight.determine_failed_to_start()
        self.assertFalse(knight.get_failed_to_start())

    def test_get_name(self):
        name = self.knight.get_name()
        self.assertEquals("Sir Lancelot", name)
Exemplo n.º 9
0
class TasteOfTheLanceTest(unittest.TestCase):
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.charge = Charge(controller)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)

    def tearDown(self):
        unstub()

    def test_roll_movement(self):
        when(random).randint(1, dice.D6).thenReturn(5)
        roll_val = self.charge.roll_movement()
        self.assertEquals(5, roll_val)

    def test_roll_movement_negative(self):
        when(random).randint(1, dice.D6).thenReturn(-1)
        roll_val = self.charge.roll_movement()
        self.assertEquals(1, roll_val)

    def test_limit_movement_no_contact(self):
        when(self.p1).get_current_position().thenReturn(12)
        when(self.p2).get_current_position().thenReturn(5)
        spaces_to_move = self.charge.limit_movement(6)
        self.assertEquals(6, spaces_to_move)

    def test_limit_movement_with_contact(self):
        when(self.p1).get_current_position().thenReturn(12)
        when(self.p2).get_current_position().thenReturn(8)
        spaces_to_move = self.charge.limit_movement(6)
        self.assertEquals(4, spaces_to_move)

    def test_at_point_of_contact_true(self):
        when(self.p1).get_current_position().thenReturn(17)
        when(self.p2).get_current_position().thenReturn(7)
        at_contact = self.charge.check_point_of_contact()
        self.assertFalse(self.p1.get_failed_to_start())
        self.assertFalse(self.p2.get_failed_to_start())
        self.assertTrue(at_contact)

    def test_at_point_of_contact_false(self):
        when(self.p1).get_current_position().thenReturn(12)
        when(self.p2).get_current_position().thenReturn(8)
        at_contact = self.charge.check_point_of_contact()
        self.assertFalse(at_contact)

    def test_fail_start_p1(self):
        when(self.p1).get_current_position().thenReturn(6)
        when(self.p2).get_current_position().thenReturn(18)
        self.charge.do_charge()
        self.assertTrue(self.p1.get_failed_to_start())
        self.assertFalse(self.p2.get_failed_to_start())

    def test_fail_start_p2(self):
        when(self.p1).get_current_position().thenReturn(18)
        when(self.p2).get_current_position().thenReturn(6)
        self.charge.do_charge()
        self.assertFalse(self.p1.get_failed_to_start())
        self.assertTrue(self.p2.get_failed_to_start())

    def test_do_charge(self):
        when(random).randint(1, dice.D6).thenReturn(5)
        self.assertEquals(0, self.p1.get_current_position())
        self.assertEquals(0, self.p2.get_current_position())
        self.charge.do_charge()
        self.assertEquals(14, self.p1.get_current_position())
        self.assertEquals(10, self.p2.get_current_position())
Exemplo n.º 10
0
class TasteOfTheLanceTest(unittest.TestCase):
    def setUp(self):
        self.p1 = Knight("P1")
        self.p2 = Knight("P2")
        controller = mock(Controller)
        self.lance = TasteOfTheLance(controller)

        when(self.p1).get_current_position().thenReturn(0)
        when(self.p1).get_bruises().thenReturn(0)

        when(controller).get_p1().thenReturn(self.p1)
        when(controller).get_p2().thenReturn(self.p2)

    def tearDown(self):
        unstub()

    def test_determine_strike_modifier_no_movement_no_tactical_no_bruises(
            self):
        self.lance.determine_strike_modifier(self.p1)
        self.assertEquals(0, self.p1.get_strike_modifier())

    def test_determine_strike_modifier_first_movement_bonus_no_tactical_no_bruises(
            self):
        when(self.p1).get_current_position().thenReturn(13)
        self.lance.determine_strike_modifier(self.p1)
        self.assertEquals(1, self.p1.get_strike_modifier())

    def test_determine_strike_modifier_second_movement_no_tactical_no_bruises(
            self):
        when(self.p1).get_current_position().thenReturn(16)
        self.lance.determine_strike_modifier(self.p1)
        self.assertEquals(2, self.p1.get_strike_modifier())

    def test_determine_strike_modifier_first_movement_bonus_with_tactical_no_bruises(
            self):
        when(self.p1).get_current_position().thenReturn(13)
        self.lance.determine_strike_modifier(self.p1, 1)
        self.assertEquals(2, self.p1.get_strike_modifier())

    def test_determine_strike_modifier_first_movement_bonus_with_tactical_with_three_bruises(
            self):
        when(self.p1).get_current_position().thenReturn(13)
        when(self.p1).get_bruises().thenReturn(3)
        self.lance.determine_strike_modifier(self.p1, 1)
        self.assertEquals(0, self.p1.get_strike_modifier())

    def test_strike_roll_glancing(self):
        when(self.p1).get_strike_modifier().thenReturn(0)
        when(random).randint(1, dice.D6).thenReturn(1)
        self.lance.strike_roll(self.p1, self.p2)
        self.assertEquals(0, self.p1.get_points())

    def test_strike_roll_light(self):
        when(self.p1).get_strike_modifier().thenReturn(0)
        when(random).randint(1, dice.D6).thenReturn(3)
        self.lance.strike_roll(self.p1, self.p2)
        self.assertEquals(2, self.p1.get_points())

    def test_strike_roll_heavy(self):
        when(self.p1).get_strike_modifier().thenReturn(0)
        when(random).randint(1, dice.D6).thenReturn(5)
        self.lance.strike_roll(self.p1, self.p2)
        self.assertEquals(3, self.p1.get_points())

    def test_strike_roll_accept_heavy_false(self):
        when(self.p1).get_strike_modifier().thenReturn(0)
        when(self.p2).get_accept_heavy_blows().thenReturn(False)
        when(random).randint(1, dice.D6).thenReturn(5)
        self.lance.strike_roll(self.p1, self.p2)
        self.assertEquals(2, self.p1.get_points())

    def test_heavy_blow_roll_add_bruise(self):
        when(random).randint(1, dice.D6).thenReturn(4)
        self.assertEquals(0, self.p2.get_bruises())
        self.lance.heavy_blow_roll(self.p2)
        self.assertEquals(1, self.p2.get_bruises())

    def test_heavy_blow_roll_unhorse(self):
        when(random).randint(1, dice.D6).thenReturn(6)
        self.lance.heavy_blow_roll(self.p2)
        self.assertTrue(self.p2.get_unhorsed())

    def test_lance_break_roll_no_break(self):
        when(random).randint(1, dice.D6).thenReturn(3)
        self.assertEquals(0, self.p1.get_points())
        self.lance.lance_break_roll(self.p1)
        self.assertEquals(0, self.p1.get_points())

    def test_lance_break_roll_break(self):
        when(random).randint(1, dice.D6).thenReturn(4)
        self.assertEquals(0, self.p1.get_points())
        self.lance.lance_break_roll(self.p1)
        self.assertEquals(1, self.p1.get_points())

    def test_do_taste_of_the_lance(self):
        when(random).randint(1, dice.D6).thenReturn(4)
        self.assertEquals(0, self.p1.get_points())
        self.assertEquals(0, self.p2.get_points())
        self.lance.do_taste_of_the_lance()
        self.assertEquals(2, self.p1.get_points())
        self.assertEquals(2, self.p2.get_points())
Exemplo n.º 11
0
 def setUp(self):
     p1 = Knight("P1")
     p2 = Knight("P2")
     self.controller = Controller(p1, p2)
     self.kick = Kick(self.controller)