public function reconcile($game)
 {
     $state = $game->getState();
     debug("Wallet::reconcile state [{$state}] money [" . $this->money . "]");
     $prize = 0;
     $wager = $this->wager;
     if ($state != State::RECONCILED && State::isEndGame($state)) {
         // handle double down
         if ($game->isDoubleDown()) {
             $wager *= 2;
         }
         switch ($state) {
             case State::USER_BLACKJACK:
                 $prize = $wager * 1.5;
                 break;
             case State::DEALER_BUST:
             case State::USER_WIN:
                 $prize = $wager;
                 break;
             case State::DEALER_BLACKJACK:
             case State::USER_BUST:
             case State::DEALER_WIN:
                 $prize += -$wager;
                 break;
         }
         // handle insurance
         if ($game->userInsured()) {
             if ($state == State::DEALER_BLACKJACK) {
                 // user original wager insurance
                 $prize += $this->wager;
             } else {
                 // user original wager insurance
                 $prize -= $this->wager / 2;
             }
         }
         $this->money += $prize;
         debug("Wallet::reconcile final prize [{$prize}] money [" . $this->money . "]");
     }
     $game->reconcile();
 }
 public function testIsEndGame()
 {
     $this->assertTrue(State::isEndGame(State::USER_BUST));
     $this->assertTrue(State::isEndGame(State::DEALER_BUST));
     $this->assertTrue(State::isEndGame(State::PUSH));
     $this->assertTrue(State::isEndGame(State::USER_WIN));
     $this->assertTrue(State::isEndGame(State::DEALER_WIN));
     $this->assertTrue(State::isEndGame(State::USER_BLACKJACK));
     $this->assertTrue(State::isEndGame(State::DEALER_BLACKJACK));
     $this->assertFalse(State::isEndGame(State::INVALID));
     $this->assertFalse(State::isEndGame(State::START));
     $this->assertFalse(State::isEndGame(State::PLAYING));
     $this->assertFalse(State::isEndGame(State::PLAYING_ACTIVE));
     $this->assertFalse(State::isEndGame(State::OFFER_INSURANCE));
 }