def test_win(self): figgie = Figgie() figgie.goal_suit = Suit.SPADES figgie.cards = np.array([[12, 0, 0, 0], [0, 10, 0, 0], [0, 0, 8, 0], [0, 0, 0, 10]]) results = figgie.get_utility() self.assertEqual([200, 200, 200, 400], results.tolist())
def test_bid(self): figgie = Figgie() for suit in SUITS: figgie.cards = np.full((4, 4), 2, dtype=int) player = figgie.active_player market = figgie.markets[suit.value] can, _ = market.can_bid(player, 7) self.assertTrue(can) figgie.preform(('bid', suit, 7)) self.assertEqual( 7, market.buying_price, 'Buying price not set properly with bid operation') self.assertEqual(1, market.operations) figgie.reset()
def test_buy(self): figgie = Figgie() for suit in SUITS: figgie.cards = np.full((4, 4), 2, dtype=int) player = figgie.active_player market = figgie.markets[suit.value] can, _ = market.can_ask(0, 7) self.assertTrue(can) asking_player = player figgie.preform(('ask', suit, 7)) self.assertEqual( 7, market.selling_price, 'Selling price not set properly with ask operation') self.assertEqual(1, market.operations) if figgie.active_player == asking_player: figgie.preform(('pass', )) player = figgie.active_player figgie.preform(('buy', suit)) for s in SUITS: self.assertEqual(figgie.markets[s.value].buying_price, None, 'Market not reset after buy') self.assertEqual(figgie.markets[s.value].selling_price, None, 'Market not reset after buy') self.assertEqual(STARTING_CHIPS - 7, figgie.chips[player], 'Chips not properly subtracted') self.assertEqual(STARTING_CHIPS + 7, figgie.chips[asking_player], 'Chips not properly added') self.assertEqual(3, figgie.cards[player][suit.value], 'card not properly added') self.assertEqual(1, figgie.cards[asking_player][suit.value], 'card not properly subtracted') self.assertEqual(1, market.transactions) self.assertEqual(7, market.last_price) self.assertEqual(2, market.operations) figgie.reset()
def test_ask(self): figgie = Figgie() for suit in SUITS: figgie.cards = np.full((4, 4), 2, dtype=int) player = figgie.active_player hand = figgie.cards[player] market = figgie.markets[suit.value] hand[suit.value] = 0 can, _ = market.can_ask(player, 7) self.assertFalse(can) hand[suit.value] = 2 can, _ = market.can_ask(player, 7) self.assertTrue(can) figgie.preform(('ask', suit, 7)) self.assertEqual( 7, market.selling_price, 'Selling price not set properly with ask operation') self.assertEqual(1, market.operations) figgie.reset()