Files
roll-room/pyground/sugar/TestSugarRushFreeSpin.py
2026-04-23 16:58:11 +08:00

127 lines
4.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)