コード例 #1
0
 def test_corner_bets_for_top_edge(self):
     ocs = [
         Outcome(self.corner_bet_name + ' 1-2-4-5', self.corner_bet_odds),
         Outcome(self.corner_bet_name + ' 2-3-5-6', self.corner_bet_odds)
     ]
     for exp in ocs:
         self.assertTrue(exp in self.wheel.get_bin(2))
コード例 #2
0
 def test_is_valid_with_bets_exceeding_limit(self):
     bet1 = Bet(291, Outcome("Red", 1))
     bet2 = Bet(10, Outcome("Red", 1))
     self.table.place_bet(bet1)
     self.assertTrue(self.table.is_valid())
     self.table.place_bet(bet2)
     self.assertRaises(InvalidBet, self.table.is_valid)
コード例 #3
0
 def test_get_outcome(self):
     self.assertEqual(self.test_wheel.get_outcome("Red"),
                      Outcome(Game.RED_BET_NAME, Game.EVEN_MONEY_BET_ODDS))
     self.assertEqual(self.test_wheel.get_outcome("Five 00-0-1-2-3"),
                      Outcome(Game.FIVE_BET_NAME, Game.FIVE_BET_ODDS))
     self.assertEqual(
         self.test_wheel.get_outcome("Split 32-33"),
         Outcome(Game.SPLIT_BET_NAME + " 32-33", Game.SPLIT_BET_ODDS))
コード例 #4
0
 def test_corner_bets_for_bottom_edge(self):
     ocs = [
         Outcome(self.corner_bet_name + ' 31-32-34-35',
                 self.corner_bet_odds),
         Outcome(self.corner_bet_name + ' 32-33-35-36',
                 self.corner_bet_odds)
     ]
     for exp in ocs:
         self.assertTrue(exp in self.wheel.get_bin(35))
コード例 #5
0
 def test_zero_bin_outcomes(self):
     outcomes = [
         Outcome(Game.FIVE_BET_NAME, Game.FIVE_BET_ODDS),
         Outcome(Game.STRAIGHT_BET_NAME + ' 0', Game.STRAIGHT_BET_ODDS)
     ]
     actual_bin = self.test_wheel.get_bin(0)
     for exp in outcomes:
         self.assertTrue(exp in actual_bin,
                         '{} not in {}'.format(exp, actual_bin))
コード例 #6
0
 def test_is_valid_with_bets_below_limit(self):
     bet1 = Bet(280, Outcome("Red", 1))
     bet2 = Bet(10, Outcome("Red", 1))
     bet3 = Bet(10, Outcome("Red", 1))
     self.table.place_bet(bet1)
     self.assertTrue(self.table.is_valid())
     self.table.place_bet(bet2)
     self.assertTrue(self.table.is_valid())
     self.table.place_bet(bet3)
     self.assertTrue(self.table.is_valid())
コード例 #7
0
    def add_straight_bets(cls, wheel):
        """Add all Straight Bet outcomes to the corresponding bins."""
        for n in range(0, 37):
            wheel.add_outcome(
                n,
                Outcome('{} {}'.format(Game.STRAIGHT_BET_NAME, n),
                        Game.STRAIGHT_BET_ODDS))

        # special case for double zero, at index 37
        wheel.add_outcome(
            37,
            Outcome('{} {}'.format(Game.STRAIGHT_BET_NAME, '00'),
                    Game.STRAIGHT_BET_ODDS))
コード例 #8
0
 def test_corner_bets_for_all_corners(self):
     self.assertTrue(
         Outcome(self.corner_bet_name +
                 ' 1-2-4-5', self.corner_bet_odds) in self.wheel.get_bin(1))
     self.assertTrue(
         Outcome(self.corner_bet_name +
                 ' 2-3-5-6', self.corner_bet_odds) in self.wheel.get_bin(3))
     self.assertTrue(
         Outcome(self.corner_bet_name + ' 31-32-34-35',
                 self.corner_bet_odds) in self.wheel.get_bin(34))
     self.assertTrue(
         Outcome(self.corner_bet_name + ' 32-33-35-36',
                 self.corner_bet_odds) in self.wheel.get_bin(36))
コード例 #9
0
 def helper_add_split_bets(cls, wheel, n_bin, inc):
     """Helper function to add Split Bet outcomes."""
     oc = Outcome(
         '{} {}-{}'.format(Game.SPLIT_BET_NAME, n_bin, n_bin + inc),
         Game.SPLIT_BET_ODDS)
     wheel.add_outcome(n_bin, oc)
     wheel.add_outcome(n_bin + inc, oc)
コード例 #10
0
 def test_straight_bets_for_dbl_zero(self):
     bin_number = 37
     actual_bin = self.wheel.get_bin(bin_number)
     expected = Outcome('{} {}'.format(self.straight_bet_name, '00'),
                        self.straight_bet_odds)
     self.assertTrue(expected in actual_bin,
                     '{} is not in {}'.format(expected, actual_bin))
コード例 #11
0
 def add_dozen_bets(cls, wheel):
     """Add all Dozen Bet outcomes to the corresponding bins."""
     for dozen in range(0, 3):
         oc = Outcome('{} {}'.format(Game.DOZEN_BET_NAME, dozen + 1),
                      Game.DOZEN_BET_ODDS)
         for n in range(0, 12):
             bin_number = 12 * dozen + n + 1
             wheel.add_outcome(bin_number, oc)
コード例 #12
0
 def test_straight_bets_for_all_except_double_zero(self):
     for bin_number in range(0, 37):
         actual_bin = self.wheel.get_bin(bin_number)
         expected = Outcome(
             '{} {}'.format(self.straight_bet_name, bin_number),
             self.straight_bet_odds)
         self.assertTrue(expected in actual_bin,
                         '{} is not in {}'.format(expected, actual_bin))
コード例 #13
0
 def add_column_bets(cls, wheel):
     """Add all Column Bet outcomes to the corresponding bins."""
     for col in range(0, 3):
         oc = Outcome('{} {}'.format(Game.COLUMN_BET_NAME, col + 1),
                      Game.DOZEN_BET_ODDS)
         for row in range(0, 12):
             bin_number = 3 * row + col + 1
             wheel.add_outcome(bin_number, oc)
コード例 #14
0
 def add_street_bets(cls, wheel):
     """Add all Street Bet outcomes to the corresponding bins."""
     for row in range(0, 12):
         n = 3 * row + 1
         oc = Outcome(
             '{} {}-{}-{}'.format(Game.STREET_BET_NAME, n, n + 1, n + 2),
             Game.STREET_BET_ODDS)
         for i in range(0, 3):
             wheel.add_outcome(n + i, oc)
コード例 #15
0
 def test_all_dozen_bets(self):
     for dozen in range(0, 3):
         exp = Outcome('{} {}'.format(self.dozen_bet_name, dozen + 1),
                       self.dozen_bet_odds)
         for n in range(0, 12):
             bin_number = 12 * dozen + n + 1
             actual_bin = self.wheel.get_bin(bin_number)
             self.assertTrue(exp in actual_bin,
                             '{} is not in {}'.format(exp, actual_bin))
コード例 #16
0
 def test_all_column_bets(self):
     for col in range(0, 3):
         exp = Outcome('{} {}'.format(self.column_bet_name, col + 1),
                       self.dozen_bet_odds)
         for row in range(0, 12):
             bin_number = 3 * row + col + 1
             actual_bin = self.wheel.get_bin(bin_number)
             self.assertTrue(exp in actual_bin,
                             '{} is not in {}'.format(exp, actual_bin))
コード例 #17
0
 def helper_split_bets_test(self, n, inc):
     actual_bin1 = self.wheel.get_bin(n)
     actual_bin2 = self.wheel.get_bin(n + inc)
     expected = Outcome('{} {}-{}'.format(self.split_bet_name, n, n + inc),
                        self.split_bet_odds)
     self.assertTrue(expected in actual_bin1,
                     '{} is not in {}'.format(expected, actual_bin1))
     self.assertTrue(expected in actual_bin2,
                     '{} is not in {}'.format(expected, actual_bin2))
コード例 #18
0
 def test_street_bets(self):
     for row in range(0, 12):
         n = 3 * row + 1
         exp_oc = Outcome(
             '{} {}-{}-{}'.format(self.street_bet_name, n, n + 1, n + 2),
             self.street_bet_odds)
         for i in range(0, 3):
             actual_bin = self.wheel.get_bin(n + i)
             self.assertTrue(exp_oc in actual_bin,
                             '{} is not in {}'.format(exp_oc, actual_bin))
コード例 #19
0
 def test_all_line_bets(self):
     for row in range(0, 11):
         n = 3 * row + 1
         exp = Outcome(
             self.line_bet_name + ' {:d}-{:d}-{:d}-{:d}-{:d}-{:d}'.format(
                 n, n + 1, n + 2, n + 3, n + 4, n + 5), self.line_bet_odds)
         for i in range(n, n + 6):
             actual_bin = self.wheel.get_bin(n)
             self.assertTrue(exp in actual_bin,
                             '{} is not in {}'.format(exp, actual_bin))
コード例 #20
0
 def add_line_bets(cls, wheel):
     """Add all Line Bet outcomes to the corresponding bins."""
     for row in range(0, 11):
         n = 3 * row + 1
         oc = Outcome(
             '{:s} {:d}-{:d}-{:d}-{:d}-{:d}-{:d}'.format(
                 Game.LINE_BET_NAME, n, n + 1, n + 2, n + 3, n + 4, n + 5),
             Game.LINE_BET_ODDS)
         for i in range(0, 6):
             wheel.add_outcome(n + i, oc)
コード例 #21
0
 def add_corner_bets(cls, wheel):
     """Add all Corner Bet outcomes to the corresponding bins."""
     for row in range(0, 11):
         for i in range(1, 3):
             n = 3 * row + i
             oc = Outcome(
                 '{} {}-{}-{}-{}'.format(Game.CORNER_BET_NAME, n, n + 1,
                                         n + 3, n + 4),
                 Game.CORNER_BET_ODDS)
             for j in [n, n + 1, n + 3, n + 4]:
                 wheel.add_outcome(j, oc)
コード例 #22
0
class OutcomeTest(unittest.TestCase):
    """Test the implementation of the class Outcome."""
    def setUp(self):
        self.oc1 = Outcome("Red", 1)
        self.oc2 = Outcome("Red", 1)
        self.oc3 = Outcome("Split 1-2", 17)

    def test_can_create_outcome(self):
        self.assertIsNotNone(self.oc1)

    def test_same_outcomes_are_equal(self):
        self.assertEqual(self.oc1, self.oc2)

    def test_different_outcomes_are_not_equal(self):
        self.assertNotEqual(self.oc1, self.oc3)

    def test_same_outcomes_have_same_hash(self):
        self.assertEqual(hash(self.oc1), hash(self.oc2))

    def test_different_outcomes_have_different_hash(self):
        self.assertNotEqual(hash(self.oc1), hash(self.oc3))

    def test_outcome_str_representation_is_correct(self):
        self.assertEqual(self.oc1.__str__(), "Red (1:1)")
        self.assertEqual(self.oc3.__str__(), "Split 1-2 (17:1)")

    def test_outcome_repr_is_correct(self):
        self.assertEqual(self.oc1.__repr__(), "Outcome('Red', 1)")
        self.assertEqual(self.oc3.__repr__(), "Outcome('Split 1-2', 17)")

    def test_win_amount_returns_correct_value(self):
        self.assertEqual(self.oc1.win_amount(13), 13)
        self.assertEqual(self.oc3.win_amount(5), 85)
コード例 #23
0
    def add_even_money_bets(cls, wheel):
        """Add all Even Money Bet outcomes to the corresponding bins."""
        red = Outcome(Game.RED_BET_NAME, Game.EVEN_MONEY_BET_ODDS)
        black = Outcome(Game.BLACK_BET_NAME, Game.EVEN_MONEY_BET_ODDS)
        even = Outcome(Game.EVEN_BET_NAME, Game.EVEN_MONEY_BET_ODDS)
        odd = Outcome(Game.ODD_BET_NAME, Game.EVEN_MONEY_BET_ODDS)
        high = Outcome(Game.HIGH_BET_NAME, Game.EVEN_MONEY_BET_ODDS)
        low = Outcome(Game.LOW_BET_NAME, Game.EVEN_MONEY_BET_ODDS)

        for bin_number in range(1, 37):
            if bin_number < 19:
                wheel.add_outcome(bin_number, low)
            else:
                wheel.add_outcome(bin_number, high)

            if bin_number % 2 == 0:
                wheel.add_outcome(bin_number, even)
            else:
                wheel.add_outcome(bin_number, odd)

            if bin_number in Game.RED_BINS:
                wheel.add_outcome(bin_number, red)
            else:
                wheel.add_outcome(bin_number, black)
コード例 #24
0
 def test_bin_one_outcomes(self):
     outcomes = [
         Outcome(Game.STRAIGHT_BET_NAME + ' 1', Game.STRAIGHT_BET_ODDS),
         Outcome(Game.RED_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.ODD_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.LOW_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.COLUMN_BET_NAME + " 1", Game.COLUMN_BET_ODDS),
         Outcome(Game.DOZEN_BET_NAME + " 1", Game.DOZEN_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 1-2", Game.SPLIT_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 1-4", Game.SPLIT_BET_ODDS),
         Outcome(Game.STREET_BET_NAME + " 1-2-3", Game.STREET_BET_ODDS),
         Outcome(Game.CORNER_BET_NAME + " 1-2-4-5", Game.CORNER_BET_ODDS),
         Outcome(Game.FIVE_BET_NAME, Game.FIVE_BET_ODDS),
         Outcome(Game.LINE_BET_NAME + " 1-2-3-4-5-6", Game.LINE_BET_ODDS)
     ]
     actual_bin = self.test_wheel.get_bin(1)
     self.assertEqual(len(outcomes), len(actual_bin), actual_bin)
     for exp in outcomes:
         self.assertTrue(exp in actual_bin,
                         '{} not in {}'.format(exp, actual_bin))
コード例 #25
0
 def test_no_other_five_bets(self):
     five_bet = Outcome(self.five_bet_name, self.five_bet_odds)
     for i in range(4, self.dbl_zero_bin):
         actual_bin = self.wheel.get_bin(i)
         self.assertTrue(five_bet not in actual_bin,
                         '{} is in {}'.format(five_bet, actual_bin))
コード例 #26
0
 def test_five_bets_for_one_two_three(self):
     expected = Outcome(self.five_bet_name, self.five_bet_odds)
     for i in range(1, 4):
         actual_bin = self.wheel.get_bin(i)
         self.assertTrue(expected in actual_bin,
                         '{} is not in {}'.format(expected, actual_bin))
コード例 #27
0
 def test_five_bets_for_dbl_zero(self):
     actual_bin = self.wheel.get_bin(self.dbl_zero_bin)
     expected = Outcome(self.five_bet_name, self.five_bet_odds)
     self.assertTrue(expected in actual_bin,
                     '{} is not in {}'.format(expected, actual_bin))
コード例 #28
0
 def test_some_black_bets(self):
     black = Outcome(self.black_bet_name, self.even_money_bet_odds)
     self.assertTrue(black in self.wheel.get_bin(6))
     self.assertTrue(black in self.wheel.get_bin(31))
コード例 #29
0
 def test_some_red_bets(self):
     red = Outcome(self.red_bet_name, self.even_money_bet_odds)
     self.assertTrue(red in self.wheel.get_bin(9))
     self.assertTrue(red in self.wheel.get_bin(18))
コード例 #30
0
 def test_bin_twenty_outcomes(self):
     outcomes = [
         Outcome(Game.STRAIGHT_BET_NAME + ' 20', Game.STRAIGHT_BET_ODDS),
         Outcome(Game.BLACK_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.EVEN_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.HIGH_BET_NAME, Game.EVEN_MONEY_BET_ODDS),
         Outcome(Game.COLUMN_BET_NAME + " 2", Game.COLUMN_BET_ODDS),
         Outcome(Game.DOZEN_BET_NAME + " 2", Game.DOZEN_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 17-20", Game.SPLIT_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 19-20", Game.SPLIT_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 20-21", Game.SPLIT_BET_ODDS),
         Outcome(Game.SPLIT_BET_NAME + " 20-23", Game.SPLIT_BET_ODDS),
         Outcome(Game.STREET_BET_NAME + " 19-20-21", Game.STREET_BET_ODDS),
         Outcome(Game.CORNER_BET_NAME + " 16-17-19-20",
                 Game.CORNER_BET_ODDS),
         Outcome(Game.CORNER_BET_NAME + " 17-18-20-21",
                 Game.CORNER_BET_ODDS),
         Outcome(Game.CORNER_BET_NAME + " 19-20-22-23",
                 Game.CORNER_BET_ODDS),
         Outcome(Game.CORNER_BET_NAME + " 20-21-23-24",
                 Game.CORNER_BET_ODDS),
         Outcome(Game.LINE_BET_NAME + " 16-17-18-19-20-21",
                 Game.LINE_BET_ODDS),
         Outcome(Game.LINE_BET_NAME + " 19-20-21-22-23-24",
                 Game.LINE_BET_ODDS)
     ]
     actual_bin = self.test_wheel.get_bin(20)
     self.assertEqual(len(outcomes), len(actual_bin), actual_bin)
     for exp in outcomes:
         self.assertTrue(exp in actual_bin,
                         '{} not in {}'.format(exp, actual_bin))