def test_next_tile(self): tile = Tile(Suit.MANZU.value, 1) self.assertEqual(tile.next_tile(), Tile(Suit.MANZU.value, 2)) tile = Tile(Suit.MANZU.value, 9) self.assertEqual(tile.next_tile(), Tile(Suit.MANZU.value, 1)) tile = Tile(Suit.JIHAI.value, 1) self.assertEqual(tile.next_tile(), Tile(Suit.JIHAI.value, 2)) tile = Tile(Suit.JIHAI.value, 3) self.assertEqual(tile.next_tile(), Tile(Suit.JIHAI.value, 1)) tile = Tile(Suit.JIHAI.value, 4) self.assertEqual(tile.next_tile(), Tile(Suit.JIHAI.value, 5)) tile = Tile(Suit.JIHAI.value, 7) self.assertEqual(tile.next_tile(), Tile(Suit.JIHAI.value, 4))
def test_chii(self): self.current_kyoku.deal() # change tile in hand to test chii chii_tile = Tile(Suit.MANZU.value, 5) chii_tile.owner = self.players[0].seating_position to_discard_tile = Tile(Suit.PINZU.value, 9) self.current_kyoku.players[0].hand = defaultdict(int) self.current_kyoku.players[0].hand[chii_tile.index] = 1 self.current_kyoku.players[0].hand[Tile(2, 1).index] += 1 self.current_kyoku.players[0].hand[Tile(2, 2).index] += 1 self.current_kyoku.players[0].hand[Tile(2, 3).index] += 1 self.current_kyoku.players[1].hand = defaultdict(int) self.current_kyoku.players[1].hand[chii_tile.index - 1] = 1 self.current_kyoku.players[1].hand[chii_tile.index + 1] = 1 self.current_kyoku.players[1].hand[to_discard_tile.index] = 1 self.current_kyoku.players[1].hand[Tile(2, 2).index] += 2 self.current_kyoku.players[1].hand[Tile(2, 3).index] += 1 self.current_kyoku.players[1].hand[Tile(2, 4).index] += 1 self.current_kyoku.players[2].hand = defaultdict(int) self.current_kyoku.players[2].hand[Tile(2, 5).index] += 2 self.current_kyoku.players[2].hand[Tile(2, 6).index] += 1 self.current_kyoku.players[2].hand[Tile(2, 7).index] += 1 self.current_kyoku.players[3].hand = defaultdict(int) self.current_kyoku.players[3].hand[Tile(3, 7).index] += 2 self.current_kyoku.players[3].hand[Tile(3, 8).index] += 1 self.current_kyoku.players[3].hand[Tile(3, 9).index] += 1 pyinput.inputNum = MagicMock(side_effect=[1, 0, 4]) pyinput.inputChoice = MagicMock(return_value=1) turn = Turn( self.current_kyoku.players, self.current_kyoku.tile_stack, Jihai.TON, self.logger, ) mock_draw_flow = MagicMock( return_value=(0, chii_tile, self.players[0].seating_position)) state, discard_tile, discard_pos = mock_draw_flow( self.current_kyoku.oya_player) state, discard_tile, discard_pos, act = turn.discard_flow( discard_tile, discard_pos) chii_in_kabe = Huro( Naki.CHII, chii_tile, [chii_tile.prev_tile(), chii_tile, chii_tile.next_tile()]) self.assertEqual(state, 0) self.assertEqual(discard_tile, to_discard_tile) self.assertEqual(discard_pos, self.players[1].seating_position) self.assertEqual(chii_in_kabe.naki_type, self.players[1].kabe[0].naki_type) self.assertEqual(chii_in_kabe.naki_tile, self.players[1].kabe[0].naki_tile) # test remove_huro_tiles() self.assertEqual(self.players[1].hand[chii_tile.index - 1], 0) self.assertEqual(self.players[1].hand[chii_tile.index + 1], 0) self.assertEqual(chii_in_kabe.tiles, self.players[1].kabe[0].tiles)