127 lines
4.2 KiB
Python
127 lines
4.2 KiB
Python
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)
|