def test_dont_call_riichi_with_tanki_wait(self): table = Table() table.count_of_remaining_tiles = 60 table.set_players_scores([250, 250, 250, 250]) player = table.player player.name = "AaronXu" player.scores = 10000 tiles = self._string_to_136_array(sou='123456', pin='123456', man='3') player.init_hand(tiles) player.draw_tile(self._string_to_136_tile(man='4')) player.discard_tile() self.assertEqual(player.can_call_riichi(), False) table = Table() table.count_of_remaining_tiles = 60 player = table.player player.scores = 25000 tiles = self._string_to_136_array(sou='1133557799', pin='113') tile = self._string_to_136_tile(pin='6') player.init_hand(tiles) player.draw_tile(tile) player.discard_tile() # for chitoitsu it is ok to have a pair wait self.assertEqual(player.can_call_riichi(), True)
def test_set_scores(self): table = Table() table.init_round(0, 0, 0, 0, 0, []) scores = [230, 110, 55, 405] table.set_players_scores(scores) self.assertEqual(table.get_player(0).scores, 23000) self.assertEqual(table.get_player(1).scores, 11000) self.assertEqual(table.get_player(2).scores, 5500) self.assertEqual(table.get_player(3).scores, 40500)
def test_set_scores(): table = Table() table.init_round(0, 0, 0, 0, 0, []) scores = [230, 110, 55, 405] table.set_players_scores(scores) assert table.get_player(0).scores == 23000 assert table.get_player(1).scores == 11000 assert table.get_player(2).scores == 5500 assert table.get_player(3).scores == 40500
def test_set_scores_and_uma(self): table = Table() table.init_round(0, 0, 0, 0, 0, []) scores = [230, 110, 55, 405] uma = [-17, 3, 48, -34] table.set_players_scores(scores, uma) self.assertEqual(table.get_player(0).scores, 23000) self.assertEqual(table.get_player(0).uma, -17) self.assertEqual(table.get_player(1).scores, 11000) self.assertEqual(table.get_player(1).uma, 3) self.assertEqual(table.get_player(2).scores, 5500) self.assertEqual(table.get_player(2).uma, 48) self.assertEqual(table.get_player(3).scores, 40500) self.assertEqual(table.get_player(3).uma, -34)
def test_set_scores_and_uma(): table = Table() table.init_round(0, 0, 0, 0, 0, []) scores = [230, 110, 55, 405] uma = [-17, 3, 48, -34] table.set_players_scores(scores, uma) assert table.get_player(0).scores == 23000 assert table.get_player(0).uma == (-17) assert table.get_player(1).scores == 11000 assert table.get_player(1).uma == 3 assert table.get_player(2).scores == 5500 assert table.get_player(2).uma == 48 assert table.get_player(3).scores == 40500 assert table.get_player(3).uma == (-34)
def test_should_go_for_defence_and_good_hand(self): """ When we have 13 tiles in hand and someone declared a riichi """ table = Table() table.set_players_names_and_ranks([ { "name": "a", "rank": 1500 }, { "name": "b", "rank": 1500 }, { "name": "c", "rank": 1500 }, { "name": "d", "rank": 1500 }, ]) table.set_players_scores([250, 250, 250, 250]) tiles = self._string_to_136_array(sou='234678', pin='34789', man='77') table.player.init_hand(tiles) table.player.draw_tile(self._string_to_136_tile(man='6')) # discard here to reinit shanten number in AI table.player.discard_tile() self.assertEqual(table.player.ai.defence.should_go_to_defence_mode(), False) table.add_called_riichi(3) # our hand is in tempai, but it is really cheap self.assertEqual(table.player.ai.defence.should_go_to_defence_mode(), False) table.add_dora_indicator(self._string_to_136_tile(man='4')) table.add_dora_indicator(self._string_to_136_tile(pin='3')) # our hand in tempai, and it has a cost, so let's push it self.assertEqual(table.player.ai.defence.should_go_to_defence_mode(), False)
def test_set_scores_and_recalculate_player_position(self): table = Table() table.init_round(0, 0, 0, 0, 0, []) self.assertEqual(table.get_player(0).first_seat, 0) self.assertEqual(table.get_player(1).first_seat, 1) self.assertEqual(table.get_player(2).first_seat, 2) self.assertEqual(table.get_player(3).first_seat, 3) scores = [230, 110, 55, 405] table.set_players_scores(scores) self.assertEqual(table.get_player(0).position, 2) self.assertEqual(table.get_player(1).position, 3) self.assertEqual(table.get_player(2).position, 4) self.assertEqual(table.get_player(3).position, 1) scores = [110, 110, 405, 405] table.set_players_scores(scores) self.assertEqual(table.get_player(0).position, 3) self.assertEqual(table.get_player(1).position, 4) self.assertEqual(table.get_player(2).position, 1) self.assertEqual(table.get_player(3).position, 2)
def test_set_scores_and_recalculate_player_position(): table = Table() table.init_round(0, 0, 0, 0, 0, []) assert table.get_player(0).first_seat == 0 assert table.get_player(1).first_seat == 1 assert table.get_player(2).first_seat == 2 assert table.get_player(3).first_seat == 3 scores = [230, 110, 55, 405] table.set_players_scores(scores) assert table.get_player(0).position == 2 assert table.get_player(1).position == 3 assert table.get_player(2).position == 4 assert table.get_player(3).position == 1 scores = [110, 110, 405, 405] table.set_players_scores(scores) assert table.get_player(0).position == 3 assert table.get_player(1).position == 4 assert table.get_player(2).position == 1 assert table.get_player(3).position == 2