import random import unittest from SugarRush1000 import SugarRush1000 def no_cluster_grid(): return [ ( ["B" if col % 2 == 0 else "E" for col in range(7)] if row % 2 == 0 else ["E" if col % 2 == 0 else "B" for col in range(7)] ) for row in range(7) ] def print_mid_result(tag, res): print(f"\n======={tag}=========") for index, step in enumerate(res["steps"]): print(f"step{index+1}---") print(f"倍数点数 {step['multipler']}") print(f"消除符号") for symbol in step["symbol_links"]: print(symbol) print(f"score:{step['score']} ") for index, row in enumerate(step["grid"]): if index % 7 == 0 and index != 0: print() print(row, end=" ") print() class TestSugarRushLogic(unittest.TestCase): def setUp(self): self.bet = 1.0 def test_row_cascade_and_drop(self): # 0. 准备数据:构造一个即将消除的场景 custom_grid = no_cluster_grid() custom_grid[3] = ["A"] * 7 # 假设 A 的赔付是 1.0 game = SugarRush1000(bet=self.bet, mock_grid=custom_grid) game.drop_sequence = ["C", "C", "C", "C", "A", "A", "A"] # 预设掉落全是 C # 1. 执行 Spin result = game.doSpin() # print_mid_result("test_row_cascade_and_drop", result) # 2. 断言验证 self.assertEqual(result["win"], 1.75) self.assertEqual(result["grid"][0][0], "C") # 顶部掉入了新符号 self.assertEqual(result["grid"][3][0], "B") # 原本上面的 B 掉下来了 print("✅ 测试通过:基础翻转与行掉落逻辑正常") def test_col_cascade_and_drop(self): # 0. 准备数据:构造一个即将消除的场景 custom_grid = no_cluster_grid() for row in range(7): custom_grid[row][3] = "A" # 假设 A 的赔付是 1.0 game = SugarRush1000(bet=self.bet, mock_grid=custom_grid) game.drop_sequence = ["C", "C", "C", "C", "A", "A", "A"] # 预设掉落全是 C # 1. 执行 Spin result = game.doSpin() # print_mid_result("test_row_cascade_and_drop", result) # 2. 断言验证 self.assertEqual(result["win"], 1.75) self.assertEqual(result["grid"][0][3], "C") self.assertEqual(result["grid"][1][3], "C") self.assertEqual(result["grid"][2][3], "C") self.assertEqual(result["grid"][3][3], "C") self.assertEqual(result["grid"][4][3], "A") self.assertEqual(result["grid"][5][3], "A") self.assertEqual(result["grid"][6][3], "A") print("✅ 测试通过:基础翻转与列掉落逻辑正常") def test_row_col_cascade_and_drop(self): random.seed(42) # 0. 准备数据:构造一个即将消除的场景 custom_grid = no_cluster_grid() for row in range(3): custom_grid[row + 2][3] = "A" for col in range(3): custom_grid[3][2 + col] = "A" # 假设 A 的赔付是 1.0 game = SugarRush1000(bet=self.bet, mock_grid=custom_grid) game.drop_sequence = ["C", "C", "C", "C", "A"] # 预设掉落全是 C # 1. 执行 Spin result = game.doSpin() # print_mid_result("test_row_col_cascade_and_drop", result) # 2. 断言验证 self.assertEqual(result["win"], 19.1) print("✅ 测试通过:基础翻转与行列掉落逻辑正常") if __name__ == "__main__": unittest.main(argv=["first-arg-is-ignored"], exit=False)