示例#1
0
 def testGetOutcomeByName(self):
     # arrange
     w = Wheel()
     o = Outcome('red', 1)
     # act
     w.addOutcome(5, o)
     # assert
     self.assertEqual(o, w.getOutcomeByName('red'))
示例#2
0
    def setUp(self):

        self.wheel = Wheel()

        self.outcome0 = Outcome("Number 0", 36)
        self.outcome00 = Outcome("Number 00", 36)

        self.bin0 = Bin([self.outcome0])
        self.bin00 = Bin([self.outcome00])
 def setUp(self) -> None:
     self.t = Table([])
     self.w = Wheel()
     binBuilder = BinBuilder(self.w)
     binBuilder.buildBins()
     self.blackOutcome = self.w.getOutcomeByName('black')
     self.redOutcome = self.w.getOutcomeByName('red')
     self.blackOutcomeBin = Bin([self.blackOutcome])
     self.redOutcomeBin = Bin([self.redOutcome])
     self.m = Martingale(self.t, self.w)
     self.m.isPlaying = MagicMock(return_value=True)
     self.g = Game(self.t, self.w)
示例#4
0
 def test_randomness(self):
     # arrange
     pseudoRandom = random.Random()
     pseudoRandom.seed(1)
     randomIndices = [pseudoRandom.randint(0, 37) for _ in range(10)]
     outcomes = [Outcome(i, 1) for i in range(10)]
     zipped = zip(randomIndices, outcomes)
     w = Wheel()
     for z in zipped:
         w.addOutcome(z[0], z[1])
     w.rng.seed(1)
     # act+assert
     for _ in zipped:
         self.assertEqual(w.next(), Bin({outcomes[i]}))
class MyTestCase(unittest.TestCase):
    @classmethod
    def setUp(self) -> None:
        self.t = Table([])
        self.w = Wheel()
        binBuilder = BinBuilder(self.w)
        binBuilder.buildBins()
        self.blackOutcome = self.w.getOutcomeByName('black')
        self.redOutcome = self.w.getOutcomeByName('red')
        self.blackOutcomeBin = Bin([self.blackOutcome])
        self.redOutcomeBin = Bin([self.redOutcome])
        self.m = Martingale(self.t, self.w)
        self.m.isPlaying = MagicMock(return_value=True)
        self.g = Game(self.t, self.w)

    def testLossCount(self):
        self.assertEqual(self.m.lossCount, 0)
        self.m.lose(Bet(1, self.blackOutcome))
        self.assertEqual(self.m.lossCount, 1)

    def testWinLossCountInit(self):
        myBet = Bet(1, self.blackOutcome)
        self.m.lose(myBet)
        self.m.win(myBet)
        self.assertEqual(self.m.lossCount, 0)

    def testStakeOnLoseAndWin(self):
        self.assertEqual(self.m.stake, 1000)
        myBet = Bet(10, self.blackOutcome)
        self.m.placeBets()
        self.m.lose(myBet)
        self.assertEqual(self.m.stake, 990)
        self.m.placeBets()
        self.m.win(myBet)
        self.assertEqual(self.m.stake, 990)
        self.m.placeBets()
        self.m.win(myBet)
        self.assertEqual(self.m.stake, 1000)

    def test_placeBets(self):
        wheelSpins = [
            self.redOutcomeBin, self.redOutcomeBin, self.redOutcomeBin,
            self.blackOutcomeBin, self.blackOutcomeBin
        ]
        correctLossCount = [0, 1, 2, 3, 0]
        zipped = zip(wheelSpins, correctLossCount)
        for z in zipped:
            self.assertEqual(self.m.lossCount, z[1])
            self.w.next = MagicMock(return_value=z[0])
            self.g.cycle(self.m)
示例#6
0
class TestGame(unittest.TestCase):
    @classmethod
    def setUp(self) -> None:
        self.w = Wheel()
        binBuilder = BinBuilder(self.w)
        binBuilder.buildBins()
        self.t = Table([])
        self.g = Game(self.t, self.w)

    def test_init(self):
        self.assertTrue(type(self.g) == Game)

    def test_cycle_placeBets(self):
        p1 = Passenger57(self.t, self.w)
        p1.placeBets = MagicMock()
        self.w.next = MagicMock(return_value=self.w.getOutcomeByName('black'))
        p1.isPlaying = MagicMock(return_value=True)

        self.g.cycle(p1)

        p1.placeBets.assert_called()
        self.w.next.assert_called()

    def test_cycle_win_lose(self):
        p1 = Passenger57(self.t, self.w)
        p1.win = MagicMock()
        p1.lose = MagicMock()
        black = self.w.getOutcomeByName('black')
        self.w.next = MagicMock(return_value=Bin([black]))
        p1.isPlaying = MagicMock(return_value=True)

        self.g.cycle(p1)

        p1.win.assert_called()
        p1.lose().assert_not_called()

    def testMockWheel(self):
        self.w.next = MagicMock(return_value=self.w.getOutcomeByName('black'))
        self.assertTrue(self.w.next().name == 'black')

    def testIsPlaying(self):
        p1 = Passenger57(self.t, self.w)
        p1.isPlaying = MagicMock(return_value=False)
        p1.placeBets = MagicMock()
        self.w.next = MagicMock(return_value=self.w.getOutcomeByName('black'))

        self.g.cycle(p1)
        p1.placeBets.assert_not_called()
示例#7
0
 def setUp(self) -> None:
     self.w = Wheel()
     bb = BinBuilder(self.w)
     bb.buildBins()
     self.t = Table()
     self.p = Passenger57(self.t, self.w)
     self.g = Game(self.t, self.w)
     self.sim = Simulator(self.p, self.g)
示例#8
0
class TestOutcome(unittest.TestCase):
    def setUp(self):

        self.wheel = Wheel()

        self.outcome0 = Outcome("Number 0", 36)
        self.outcome00 = Outcome("Number 00", 36)

        self.bin0 = Bin([self.outcome0])
        self.bin00 = Bin([self.outcome00])

    def test_addOutcomesToWheel(self):

        self.wheel.addOutcome("0", self.outcome0)
        self.wheel.addOutcome("00", self.outcome00)

    def test_binIncludedInWheel(self):

        self.assertIn(self.bin0, self.wheel.bins)
        self.assertIn(self.bin00, self.wheel.bins)
示例#9
0
 def run(self):
     w = Wheel()
     binBuilder = BinBuilder(w)
     binBuilder.buildBins()
     t = Table([])
     g = Game(t, w)
     p1 = Passenger57(t, w)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
     g.cycle(p1)
示例#10
0
class MyTestCase(unittest.TestCase):
    @classmethod
    def setUp(self) -> None:
        self.w = Wheel()
        bb = BinBuilder(self.w)
        bb.buildBins()
        self.t = Table()
        self.p = Player(self.t, self.w)

    def test_default_budget(self):
        self.assertEqual(self.p.budget,
                         self.p.BUDGET_MIN_DEFAULT_MULTIPLIER * self.t.minimum)

    def test_default_duration(self):
        self.assertEqual(self.p.duration, self.p.DURATIONS_MIN_DEFAULT)

    def test_win(self):
        budgetBefore = self.p.budget
        outcome = self.w.getOutcomeByName("0")
        bet = Bet(self.t.minimum, outcome)
        self.p.win(bet)
        self.assertEqual(self.p.budget,
                         budgetBefore + bet.amount * (outcome.odds + 1))

    def test_placeBets_BudgetReduction(self):
        budgetBefore = self.p.budget
        self.p.placeBets()
        self.assertEqual(budgetBefore, self.p.budget + self.t.minimum)

    def test_placeBets_DurationReduction(self):
        durationBefore = self.p.duration
        self.p.placeBets()
        self.assertEqual(durationBefore, self.p.duration + 1)

    def test_isPlaying_trueWhenDurationAndBudgetpositive(self):
        self.assertTrue(self.p.isPlaying())

    def test_isPlaying_falseWhenDurationAndBudgetNegative(self):
        self.p.budget = 0
        self.assertFalse(self.p.isPlaying())
        self.p.budget = 100
        self.p.duration = 0
        self.assertFalse(self.p.isPlaying())

        if __name__ == '__main__':
            unittest.main()
示例#11
0
 def setUp(self) -> None:
     self.w = Wheel()
     bb = BinBuilder(self.w)
     bb.buildBins()
     self.t = Table()
     self.p = Player(self.t, self.w)
示例#12
0
            for outcome in winningBin:  # Cycle through all outcomes in the winning bin

                if bet.outcome == outcome:

                    print("Congratulations, you won!")

                    player.win(bet)

                #else:

                #print("Sorry, this bet didn't win!")

                #player.lose(bet)


if __name__ == "__main__":

    # Main entry point of the game

    wheel = Wheel()
    table = Table(100, 1)
    game = Game(wheel, table)

    # Creates a player
    playerName = input("Choose player name: ")

    player = Player(playerName, table, 100, 5)

    # Runs the Roulette game
    game.cycle(player)
示例#13
0
    def setUp(self):

        self.wheel = Wheel()
        self.bb = BinBuilder()
示例#14
0
 def testInit(self):
     w = Wheel()
     binBuilder = BinBuilder(w)
     self.assertEqual(type(binBuilder), type(BinBuilder(w)))
     self.assertEqual(type(binBuilder.wheel.getBinByIndex(0)), type(Bin()))
示例#15
0
 def testAddOutcome(self):
     w = Wheel()
     o = Outcome('red', 1)
     w.addOutcome(5, o)
     self.assertEqual(Bin({o}), w.getBinByIndex(5))
示例#16
0
 def __init__(self, table: Table, wheel: Wheel) -> None:
     super().__init__(table, wheel)
     self.black = wheel.getOutcomeByName(Passenger57.BLACK_OUTCOME_NAME)
示例#17
0
 def testInit(self):
     w = Wheel()
     self.assertEqual(len(w.bins), 38)
示例#18
0
 def testNext(self):
     w = Wheel()
     next = w.next()
     self.assertEqual(type(next), type(Bin()))
示例#19
0
 def setUp(self) -> None:
     self.w = Wheel()
     binBuilder = BinBuilder(self.w)
     binBuilder.buildBins()
     self.t = Table([])
     self.g = Game(self.t, self.w)
示例#20
0
 def __init(self):
     w = Wheel()
     a = BinBuilder(w)
     return a, w