115 lines
3.6 KiB
Python
115 lines
3.6 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, 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)
|