def __init__(self): card_types = (MakiCard(1), MakiCard(2), MakiCard(3), PuddingCard(), NigiriCard('egg'), NigiriCard('salmon'), NigiriCard('squid'), TempuraCard(), SashimiCard(), DumplingCard(), WasabiCard()) card_counts = (7, 7, 7, 8, 6, 6, 5, 10, 10, 15, 4) super().__init__(*self.create_card_list(card_types, card_counts))
def test_complicated_score(): cards = { 'a': [ SashimiCard(), MakiCard(2), MakiCard(1), NigiriCard('egg'), MakiCard(1), DumplingCard(), DumplingCard(), NigiriCard('salmon'), PuddingCard(), DumplingCard() ], 'b': [ DumplingCard(), NigiriCard('squid'), PuddingCard(), NigiriCard('salmon'), WasabiCard(), SashimiCard(), NigiriCard('salmon'), PuddingCard(), NigiriCard('salmon'), TempuraCard() ] } scores = get_score(cards, end_round=True) assert scores['a'] == 6 + 3 + 6 assert scores['b'] == 0 + 13 + 1
def test_deck_stop(): d = Deck(MakiCard(1), MakiCard(2)) _ = next(d) _ = next(d) try: _ = next(d) raise RuntimeError('Deck returns too many cards') except StopIteration: pass
def test_certain_cards_carry_rewards_at_end_of_round(): p1 = Player("bob") p2 = Player("sharon") # create a deck with no cards that are worth points during a round d = Deck.create([MakiCard(3)], [100]) g = Game(deck=d, agents=[p1, p2], cards_per_player=10) g.play_round() g.play_round() print(g.gamelog) assert g.gamelog.shape[0] == 42 assert g.gamelog['reward'][0] == 0.0 assert g.gamelog['reward'][1] == 0.0
def test_certain_cards_carry_no_rewards_within_rounds(): p1 = Player("bob") p2 = Player("sharon") # create a deck with no cards that are worth points during a round d = Deck.create([PuddingCard(), WasabiCard(), MakiCard(3)], [8, 4, 4 * 7]) g = Game(deck=d, agents=[p1, p2], cards_per_player=5) g.play_turn() assert g.gamelog.shape[0] == 4 assert g.gamelog['reward'][0] == 0.0 assert g.gamelog['reward'][1] == 0.0 g.play_turn() g.play_turn() g.play_turn() assert g.gamelog['reward'].iloc[-1] == 0.0
def test_sashimi_scores(): cards = { 'a': [SashimiCard(), WasabiCard()], 'b': [SashimiCard(), SashimiCard(), MakiCard(2)], 'c': [SashimiCard(), SashimiCard(), SashimiCard(), TempuraCard()] } scores = get_score(cards) assert scores['a'] == 0 assert scores['b'] == 0 assert scores['c'] == 10
def test_maki_scores(): cards = { 'a': [MakiCard(3)], 'b': [MakiCard(2)] * 4, } scores = get_score(cards, end_round=True) assert scores['a'] == 3 assert scores['b'] == 6 cards = { 'a': [MakiCard(0)], 'b': [MakiCard(2)] * 4, } scores = get_score(cards, end_round=True) assert scores['a'] == 0 assert scores['b'] == 6 cards = { 'a': [MakiCard(3)], 'b': [MakiCard(1)] * 3, 'c': [MakiCard(3)], } scores = get_score(cards, end_round=True) assert scores['a'] == 2 assert scores['b'] == 2 assert scores['c'] == 2
def test_deck_init(): d = Deck(MakiCard(1), MakiCard(2)) assert len(d.cards) == 2 assert len(d.initial_cards) == 2
def test_deck_reshuffle(): d = Deck(MakiCard(1), MakiCard(2)) _ = next(d) d.reset() _ = next(d) _ = next(d)