Skip to content

Commit

Permalink
test three players
Browse files Browse the repository at this point in the history
  • Loading branch information
jabdoa2 committed May 8, 2016
1 parent f664aee commit 105a2e7
Showing 1 changed file with 115 additions and 0 deletions.
115 changes: 115 additions & 0 deletions mpf/tests/test_ScoreReels.py
Expand Up @@ -170,3 +170,118 @@ def testAdvanceingFailure(self):
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(3, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)

def testThreePlayers(self):
player1_10k = self.machine.coils.player1_10k.hw_driver
player1_1k = self.machine.coils.player1_1k.hw_driver
player1_100 = self.machine.coils.player1_100.hw_driver
player1_10 = self.machine.coils.player1_10.hw_driver
player2_10 = self.machine.coils.player2_10.hw_driver
player1_10k.pulse = MagicMock(return_value=10)
player1_1k.pulse = MagicMock(return_value=10)
player1_100.pulse = MagicMock(return_value=10)
player1_10.pulse = MagicMock(return_value=10)
player2_10.pulse = MagicMock(return_value=10)
self.start_game()

# add two more players
self.hit_and_release_switch("s_start")
self.hit_and_release_switch("s_start")
self.machine_run()
self.assertEqual(3, self.machine.game.num_players)

self.machine.scoring.add(110)
self.advance_time_and_run(.1)
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(1, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)
self.release_switch_and_run("score_1p_10_0", 0)
self.release_switch_and_run("score_1p_100_0", 0)

# no more fires
self.advance_time_and_run(10)
self.machine_run()
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(1, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)

# drain ball
self.machine.game.balls_in_play = 0
self.machine_run()
self.assertEqual(2, self.machine.game.player.number)

self.machine.scoring.add(20)
self.advance_time_and_run(.1)
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(1, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)
self.assertEqual(1, player2_10.pulse.call_count)
self.release_switch_and_run("score_2p_10_0", 0)

self.advance_time_and_run(.3)
self.machine_run()
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(1, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

# no more changes
self.advance_time_and_run(10)
self.machine_run()
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(1, player1_100.pulse.call_count)
self.assertEqual(1, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

# drain ball
self.machine.game.balls_in_play = 0
self.machine_run()
self.assertEqual(3, self.machine.game.player.number)

# player3 reuses the reels from player 1. machine resets them
self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(2, player1_100.pulse.call_count)
self.assertEqual(2, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

for i in range(7):
self.advance_time_and_run(.3)
self.machine_run()

self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(9, player1_100.pulse.call_count)
self.assertEqual(9, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

self.hit_switch_and_run("score_1p_10_9", 0)
self.hit_switch_and_run("score_1p_100_9", 0)

self.advance_time_and_run(.3)
self.machine_run()

self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(10, player1_100.pulse.call_count)
self.assertEqual(10, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

self.hit_switch_and_run("score_1p_10_0", 0)
self.hit_switch_and_run("score_1p_100_0", 0)
self.release_switch_and_run("score_1p_10_9", 0)
self.release_switch_and_run("score_1p_100_9", 0)

self.advance_time_and_run(10)
self.machine_run()

self.assertEqual(0, player1_10k.pulse.call_count)
self.assertEqual(0, player1_1k.pulse.call_count)
self.assertEqual(10, player1_100.pulse.call_count)
self.assertEqual(10, player1_10.pulse.call_count)
self.assertEqual(2, player2_10.pulse.call_count)

0 comments on commit 105a2e7

Please sign in to comment.