Initial commit
This commit is contained in:
126
pyground/sugar/TestSugarRushFreeSpin.py
Normal file
126
pyground/sugar/TestSugarRushFreeSpin.py
Normal file
@@ -0,0 +1,126 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user