コード例 #1
0
 def test_tiles_getter(self):
     tiles_in_huro = [
         Tile(Suit.MANZU.value, 7),
         Tile(Suit.MANZU.value, 8),
         Tile(Suit.MANZU.value, 9)
     ]
     self.assertEqual(self.huro_chii.tiles, tiles_in_huro)
コード例 #2
0
 def test_remains_are_sets(self):
     self.player_1.hand[Tile(Suit.MANZU.value, 3).index] += 1
     self.player_1.hand[Tile(Suit.SOUZU.value, 5).index] -= 2
     remain_tiles = self.player_1.hand
     huro_count = len(self.player_1.kabe)
     self.assertEqual(check_remains_are_sets(remain_tiles, huro_count),
                      True)
コード例 #3
0
ファイル: test_kyoku.py プロジェクト: rasca0027/Mahjong4RL
 def test_nagashi_mangan(self):
     self.player_1.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 1).index)
     self.player_1.furiten_tiles_idx.add(Tile(Suit.SOUZU.value, 9).index)
     self.player_1.furiten_tiles_idx.add(
         Tile(Suit.JIHAI.value, Jihai.CHUN.value).index)
     winner = self.kyoku.check_nagashi_mangan()
     self.assertEqual(winner, self.player_1)
コード例 #4
0
ファイル: test_helpers.py プロジェクト: rasca0027/Mahjong4RL
 def test_is_chi(self):
     tile_set = [
         Tile(Suit.SOUZU.value, 3),
         Tile(Suit.SOUZU.value, 4),
         Tile(Suit.SOUZU.value, 5)
     ]
     self.assertEqual(is_chi(tile_set), True)
コード例 #5
0
 def test_tiles_setter(self):
     new_tiles_in_huro = [
         Tile(Suit.MANZU.value, 5),
         Tile(Suit.MANZU.value, 6),
         Tile(Suit.MANZU.value, 7)
     ]
     self.huro_chii.tiles = new_tiles_in_huro
     self.assertEqual(self.huro_chii.tiles, new_tiles_in_huro)
コード例 #6
0
 def setUp(self):
     # tenpai: 3 MANZU 5 SOUZU
     self.player = Player('test', 1)
     for i in range(1, 10):
         self.player.hand[Tile(Suit.PINZU.value, i).index] += 1
     self.player.hand[Tile(Suit.MANZU.value, 3).index] += 2
     self.player.hand[Tile(Suit.SOUZU.value, 5).index] += 2
     self.stack = Stack()
コード例 #7
0
    def test_ron(self):
        discard_1 = Tile(Suit.MANZU.value, 3)
        discard_2 = Tile(Suit.SOUZU.value, 5)

        ron_1 = check_ron(self.player, discard_1, self.stack, self.bakaze)
        ron_2 = check_ron(self.player, discard_2, self.stack, self.bakaze)
        self.assertEqual(ron_1, True)
        self.assertEqual(ron_2, True)
コード例 #8
0
 def test_chii(self):
     self.player_1.action_with_naki = MagicMock(return_value=None)
     self.player_1.discard_after_naki = MagicMock(return_value=Tile(0, 1))
     state, discard_tile, discard_pos, act = self.turn.naki_flow(
         self.player_1, Naki.CHII)
     self.assertEqual(state, 0)
     self.assertEqual(discard_tile, Tile(0, 1))
     self.assertEqual(discard_pos, 0)
コード例 #9
0
ファイル: test_helpers.py プロジェクト: rasca0027/Mahjong4RL
 def test_not_pon(self):
     tile_set = [
         Tile(Suit.SOUZU.value, 3),
         Tile(Suit.SOUZU.value, 4),
         Tile(Suit.SOUZU.value, 5)
     ]
     self.assertEqual(is_pon(tile_set), False)
     tile_set.pop()
     self.assertEqual(is_pon(tile_set), False)
コード例 #10
0
 def test_no_suukaikan(self):
     self.tile_stack.add_dora_indicator()
     naki_tile = Tile(Suit.SOUZU.value, 5)
     naki_tile.owner = self.player_1.seating_position
     kan = Huro(Naki.ANKAN, naki_tile,
                [Tile(Suit.SOUZU.value, 5) for i in range(4)])
     kabe = [kan]
     self.turn.check_suukaikan(kabe)
     self.assertEqual(self.turn.suukaikan, False)
コード例 #11
0
    def test_suufon_renda_counter_example(self):
        tile_ton = Tile(Suit.JIHAI.value, Jihai.TON.value)
        tile_nan = Tile(Suit.JIHAI.value, Jihai.NAN.value)
        self.player_1.add_kawa(tile_nan)
        self.player_2.add_kawa(tile_ton)
        self.player_3.add_kawa(tile_ton)
        self.player_4.add_kawa(tile_ton)

        self.assertEqual(self.turn.check_suufon_renda(), False)
コード例 #12
0
    def test_tsumo(self):
        discard_1 = Tile(Suit.MANZU.value, 3)
        discard_2 = Tile(Suit.SOUZU.value, 5)
        check_tsumo_1 = check_tsumo(self.player, discard_1, self.stack,
                                    self.bakaze)
        check_tsumo_2 = check_tsumo(self.player, discard_2, self.stack,
                                    self.bakaze)

        self.assertEqual(check_tsumo_1, True)
        self.assertEqual(check_tsumo_2, True)
コード例 #13
0
 def test_daminkan(self):
     discarded_tile = Tile(Suit.JIHAI.value, Jihai.SHAA.value)
     self.assertEqual(check_daminkan(self.player.hand, discarded_tile), [
         [
             discarded_tile,
             Tile(Suit.JIHAI.value, Jihai.SHAA.value),
             Tile(Suit.JIHAI.value, Jihai.SHAA.value),
             Tile(Suit.JIHAI.value, Jihai.SHAA.value)
         ],
     ])
コード例 #14
0
    def test_ankan_2(self):
        kan_in_hand = Tile(Suit.JIHAI.value, Jihai.TON.value)
        self.player.hand[kan_in_hand.index] += 4

        new_tile = Tile(Suit.JIHAI.value, Jihai.SHAA.value)
        ankan_list = sorted(
            [[kan_in_hand, kan_in_hand, kan_in_hand, kan_in_hand],
             [new_tile, new_tile, new_tile, new_tile]])

        self.assertEqual(check_ankan(self.player.hand, new_tile), ankan_list)
コード例 #15
0
 def test_call_naki(self):
     self.turn.ensemble_actions = MagicMock(return_value=(2, (Action.NAKI,
                                                              Naki.CHII)))
     self.turn.naki_flow = MagicMock(return_value=(0, Tile(0, 1), 2,
                                                   Action.NAKI))
     state, discard_tile, discard_pos, act = self.turn.discard_flow(
         Tile(1, 1), self.player_1.seating_position)
     self.assertEqual(state, 0)
     self.assertEqual(discard_tile, Tile(0, 1))
     self.assertEqual(discard_pos, 2)
コード例 #16
0
 def test_daminkan(self):
     self.player_1.action_with_naki = MagicMock(return_value=None)
     self.turn.draw_flow = MagicMock(return_value=(0, Tile(0, 1), 0,
                                                   Action.NAKI))
     state, discard_tile, discard_pos, act = self.turn.naki_flow(
         self.player_1, Naki.DAMINKAN)
     self.assertEqual(state, 0)
     self.assertEqual(discard_tile, Tile(0, 1))
     self.assertEqual(discard_pos, 0)
     self.assertEqual(len(self.tile_stack.doras), 2)
コード例 #17
0
 def test_all_noact(self):
     self.turn.ensemble_actions = MagicMock(return_value=(2, (Action.NOACT,
                                                              Naki.NONE)))
     self.turn.draw_flow = MagicMock(return_value=(0, Tile(0, 1), 0,
                                                   Action.NOACT))
     state, discard_tile, discard_pos, act = self.turn.discard_flow(
         Tile(0, 2), self.player_1.seating_position)
     self.assertEqual(state, 0)
     self.assertEqual(discard_tile, Tile(0, 1))
     self.assertEqual(discard_pos, 0)
コード例 #18
0
 def test_chakan_2(self):
     tile_in_hand = Tile(Suit.MANZU.value, 7)
     self.player.hand[tile_in_hand.index] += 1
     new_tile = Tile(Suit.PINZU.value, 5)
     chakan_list = sorted(
         [[new_tile, new_tile, new_tile, new_tile],
          [tile_in_hand, tile_in_hand, tile_in_hand, tile_in_hand]])
     self.assertEqual(
         check_chakan(self.player.hand, self.player.kabe, new_tile),
         chakan_list)
コード例 #19
0
    def test_chii_3(self):
        discard = Tile(Suit.MANZU.value, 7)
        possible_sets = [[
            Tile(Suit.MANZU.value, 5),
            Tile(Suit.MANZU.value, 6),
            Tile(Suit.MANZU.value, 7)
        ]]
        chii_sets = check_chii(self.player.hand, discard)
        chii_sets = [sorted(chii_set) for chii_set in chii_sets]

        self.assertEqual(chii_sets, possible_sets)
コード例 #20
0
    def test_no_ron(self):
        discard_1 = Tile(Suit.MANZU.value, 4)
        ron_1 = check_ron(self.player, discard_1, self.stack, self.bakaze)
        self.assertEqual(ron_1, False)

        # 振聴
        discard_2 = Tile(Suit.MANZU.value, 3)
        self.player.add_kawa(Tile(Suit.MANZU.value, 3))

        ron_2 = check_ron(self.player, discard_2, self.stack, self.bakaze)
        self.assertEqual(ron_2, False)
コード例 #21
0
 def test_suukantsu_other_player(self):
     for _ in range(3):
         self.tile_stack.add_dora_indicator()
     naki_tile = Tile(Suit.SOUZU.value, 5)
     naki_tile.owner = self.player_1.seating_position
     kan = Huro(Naki.DAMINKAN, naki_tile,
                [Tile(Suit.SOUZU.value, 5) for i in range(4)])
     kabe = [kan]
     self.turn.check_suukaikan(kabe)
     self.assertEqual(len(self.tile_stack.doras), 5)
     self.assertEqual(self.turn.suukaikan, True)
コード例 #22
0
ファイル: test_helpers.py プロジェクト: rasca0027/Mahjong4RL
 def setUp(self):
     self.player = Player('test', 0)
     self.player.hand[Tile(Suit.JIHAI.value, Jihai.HATSU.value).index] += 2
     self.player.hand[Tile(Suit.JIHAI.value, Jihai.HAKU.value).index] += 2
     self.player.hand[Tile(Suit.JIHAI.value, Jihai.CHUN.value).index] += 1
     self.player.hand[Tile(Suit.JIHAI.value, Jihai.NAN.value).index] += 1
     self.player.hand[Tile(Suit.PINZU.value, 1).index] += 1
     self.player.hand[Tile(Suit.PINZU.value, 9).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 1).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 9).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 3).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 4).index] += 2
コード例 #23
0
    def test_suukaikan(self):
        for _ in range(3):
            self.tile_stack.add_dora_indicator()
        self.player_1.action_with_naki = MagicMock(return_value=None)
        self.turn.draw_flow = MagicMock(return_value=(0, Tile(0, 1), 0,
                                                      Action.NOACT))
        state, discard_tile, pos, act = self.turn.naki_flow(
            self.player_1, Naki.DAMINKAN)

        self.assertEqual(state, 0)
        self.assertEqual(discard_tile, Tile(0, 1))
        self.assertEqual(self.turn.suukaikan, True)
        self.assertEqual(len(self.tile_stack.doras), 5)
コード例 #24
0
 def test_tenpai_7(self):
     self.player.hand[Tile(Suit.MANZU.value, 1).index] += 4
     self.player.hand[Tile(Suit.MANZU.value, 2).index] += 1
     self.player.hand[Tile(Suit.MANZU.value, 3).index] += 1
     self.player.hand[Tile(Suit.MANZU.value, 4).index] += 4
     naki_tile = Tile(Suit.JIHAI.value, Jihai.SHAA.value)
     naki_tile.owner = 0
     self.player.kabe.append(
         Huro(Naki.PON, naki_tile,
              [Tile(Suit.JIHAI.value, Jihai.SHAA.value) for i in range(3)]))
     tenpai = [Tile(Suit.MANZU.value, 1), Tile(Suit.MANZU.value, 4)]
     # tenpai: 1 MANZU 4 MANZU 空聴(カラテン)
     self.assert_tenpai(self.player, tenpai)
コード例 #25
0
ファイル: test_helpers.py プロジェクト: rasca0027/Mahjong4RL
 def setUp(self):
     self.player = Player('test', 0)
     self.player.hand[Tile(Suit.SOUZU.value, 2).index] += 2
     self.player.hand[Tile(Suit.SOUZU.value, 3).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 4).index] += 1
     self.player.hand[Tile(Suit.SOUZU.value, 5).index] += 1
     self.player.hand[Tile(Suit.MANZU.value, 8).index] += 3
     self.player.hand[Tile(Suit.JIHAI.value, Jihai.NAN.value).index] += 3
     naki_tile = Tile(Suit.SOUZU.value, 5)
     naki_tile.owner = 0
     self.player.kabe.append(
         Huro(Naki.PON, naki_tile,
              [Tile(Suit.SOUZU.value, 5) for i in range(3)]))
コード例 #26
0
 def test_tenpai_8(self):
     self.player.hand[Tile(Suit.MANZU.value, 1).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 2).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 3).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 4).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 5).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 6).index] += 2
     self.player.hand[Tile(Suit.MANZU.value, 7).index] += 1
     tenpai = [
         Tile(Suit.MANZU.value, 1),
         Tile(Suit.MANZU.value, 4),
         Tile(Suit.MANZU.value, 7)
     ]
     self.assert_tenpai(self.player, tenpai)
コード例 #27
0
 def test_normal_ryuukyoku(self):
     self.tile_stack.playing_wall = self.tile_stack.playing_wall[-1:]
     self.player_1.action_with_new_tile = MagicMock(
         return_value=((Action.NOACT, Naki.NONE), Tile(0, 1)))
     _, action_tile, discard_pos, _ = self.turn.draw_flow(self.player_1)
     self.assertEqual(self.turn.discard_flow(action_tile, discard_pos),
                      (-1, action_tile, discard_pos, Action.NOACT))
コード例 #28
0
ファイル: test_kyoku.py プロジェクト: rasca0027/Mahjong4RL
 def test_no_nagashi_mangan_2(self):
     self.player_1.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 1).index)
     self.player_1.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 9).index)
     naki_tile = Tile(Suit.JIHAI.value, Jihai.HAKU.value)
     naki_tile.owner = self.player_1.seating_position
     huro = Huro(Naki.CHII, naki_tile, [])
     self.player_2.kabe = [huro]
     self.player_2.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 5).index)
     self.player_3.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 5).index)
     self.player_3.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 5).index)
     self.player_4.furiten_tiles_idx.add(Tile(Suit.MANZU.value, 5).index)
     winner = self.kyoku.check_nagashi_mangan()
     self.assertEqual(winner, None)
コード例 #29
0
 def test_ron(self):
     self.turn.ensemble_actions = MagicMock(return_value=(2, (Action.RON,
                                                              Naki.NONE)))
     state, discard_tile, discard_pos, act = self.turn.discard_flow(
         Tile(1, 1), self.player_1.seating_position)
     self.assertEqual(state, 1)
     self.assertEqual(discard_tile, None)
     self.assertEqual(discard_pos, 0)
コード例 #30
0
    def test_suufon_renda(self):
        tile_ton = Tile(Suit.JIHAI.value, Jihai.TON.value)
        self.player_1.add_kawa(tile_ton)
        self.player_2.add_kawa(tile_ton)
        self.player_3.add_kawa(tile_ton)
        self.player_4.add_kawa(tile_ton)

        self.assertEqual(self.turn.check_suufon_renda(), True)