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, grid in enumerate(res["middle_grids"]): print(f"step{index+1}---") print(f"倍数点数") print(" ",end="") for i in range(7): print(f"{i} ",end=" ") print() for i,row in enumerate(res["middle_multipliers"][index]): print(f"{i} {row}") print(f"消除符号") for symbol in res["middle_grid_remove_symbols"][index]: print(symbol) print(f"score:{res['middle_score'][index]}") for row in grid: print(row) class TestSugarRushLogic(unittest.TestCase): def setUp(self): self.bet = 1.0 def test_normal_free_spin_s3(self): # 0. 准备数据:构造一个即将消除的场景 custom_grid = no_cluster_grid() custom_grid[0][0] = "S" custom_grid[1][1] = "S" custom_grid[2][2] = "S" game = SugarRush1000(balance=1000, bet=self.bet, mock_grid=custom_grid) drop_symbol = [] for i in range(20): grids = no_cluster_grid() [drop_symbol.append(grids[r][c]) for c in range(7) for r in range(7)] game.drop_sequence = drop_symbol # 1. 触发freeSpin result = game.doSpin() game.mock_grid = None self.assertEqual(result["balance"], 999) self.assertEqual(result["free_spins_remaining"], 10) # 2. 使用freeSpin free_spins = result["free_spins_remaining"] for i in range(free_spins): result = game.doSpin() self.assertEqual(result["balance"], 999) self.assertEqual(result["free_spins_remaining"], free_spins - i - 1) # 3. 回归正常spin result = game.doSpin() self.assertEqual(result["balance"], 998) self.assertEqual(result["free_spins_remaining"], 0) print("✅ 测试通过:普通freeSpin正常") def test_buy_standard_free_spin(self): custom_grid = no_cluster_grid() balance = 1000 game = SugarRush1000(balance=balance, bet=self.bet, mock_grid=custom_grid) # 1. 购买 result = game.buy_free_spins("standard") self.assertEqual(result["balance"], balance - 100 * game.bet) self.assertEqual(result["is_buy_free"], True) self.assertEqual(result["is_super_free"], False) self.assertEqual(game.free_spins, 0) # 2. 使用 result = game.doSpin() self.assertGreaterEqual(game.free_spins, 10) self.assertEqual(game.is_buy_free, False) self.assertEqual(game.is_super_free, False) self.assertEqual(game.multipliers[0][0], 0) print("✅ 测试通过:购买普通免费旋转正常") def test_buy_super_free_spin(self): custom_grid = no_cluster_grid() balance = 1000 game = SugarRush1000(balance=balance, bet=self.bet, mock_grid=custom_grid) # 1. 购买 result = game.buy_free_spins("super") self.assertEqual(result["balance"], balance - 500 * game.bet) self.assertEqual(result["is_buy_free"], True) self.assertEqual(result["is_super_free"], True) self.assertEqual(game.free_spins, 0) # 2. 使用 result = game.doSpin() self.assertGreater(game.free_spins, 10) self.assertEqual(game.is_buy_free, False) self.assertEqual(game.is_super_free, True) self.assertEqual(game.multipliers[0][0], 0) # 进入super free spin result = game.doSpin() self.assertGreater(game.free_spins, 9) self.assertEqual(game.is_buy_free, False) self.assertEqual(game.is_super_free, False) self.assertEqual(result["steps"][0]["multipler"][1], 2) print("✅ 测试通过:购买超级免费旋转正常") if __name__ == "__main__": unittest.main(argv=["first-arg-is-ignored"], exit=False)