예제 #1
0
 /**
  * When a shot results in a miss, the score sheet should be updated
  * accordingly
  * 
  * @covers ::shotMiss
  * @covers ::getScoreSheet
  * @test
  */
 public function shotMissUpdatesScore()
 {
     $john = new User(1);
     $alistair = new User(2);
     // Setup game
     $game = new Game();
     $game->addUser($john)->addUser($alistair)->start();
     // Alistair misses a shot
     $game->shotMiss($alistair);
     // Scores should be empty
     $this->assertEquals(array(1 => array('score' => 0, 'shots' => 0, 'accuracy' => 0), 2 => array('score' => 0, 'shots' => 1, 'accuracy' => 0)), $game->getScoreSheet());
 }
예제 #2
0
 /**
  * @expectedException \DomainException
  * @expectedExceptionMessage Game state (2) prevents executing this method
  * 
  * @covers ::shotHit
  * @covers ::end
  * @test
  */
 public function firstToSevenEndsGame()
 {
     $john = new User(1);
     $alistair = new User(2);
     // Start a new game
     $game = new Game();
     $game->addUser($john)->addUser($alistair)->start();
     // 7 shots hit wins you the game
     $game->shotHit($john)->shotHit($john)->shotHit($john)->shotHit($john)->shotHit($john)->shotHit($john)->shotHit($john);
     // Try one more shot, which fails because the game has been ended
     $game->shotHit($john);
 }