65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
from src.engine.hand import Hand
|
||
|
||
|
||
def test_hand():
|
||
# 创建一个玩家的手牌
|
||
hand = Hand()
|
||
|
||
# 添加一些牌到手牌中
|
||
hand.add_tile("1条")
|
||
hand.add_tile("1条")
|
||
hand.add_tile("2条")
|
||
hand.add_tile("2条")
|
||
hand.add_tile("2条")
|
||
hand.add_tile("3条")
|
||
|
||
# 打印手牌
|
||
print("\n当前手牌:", hand)
|
||
|
||
# 测试获取某张牌的数量
|
||
assert hand.get_tile_count("1条") == 2, f"测试失败:1条应该有 2 张"
|
||
assert hand.get_tile_count("2条") == 3, f"测试失败:2条应该有 3 张"
|
||
assert hand.get_tile_count("3条") == 1, f"测试失败:3条应该有 1 张"
|
||
|
||
# 测试移除一张牌
|
||
hand.remove_tile("1条")
|
||
print("移除 1条 后的手牌:", hand)
|
||
assert hand.get_tile_count("1条") == 1, f"测试失败:1条应该有 1 张"
|
||
|
||
# 确保移除后有足够的牌可以碰
|
||
# 添加一张 1条,确保可以碰
|
||
hand.add_tile("1条")
|
||
print("添加 1条 后的手牌:", hand)
|
||
|
||
# 测试是否可以碰
|
||
assert hand.can_peng("1条") == True, f"测试失败:1条应该可以碰"
|
||
print("可以碰 1条 的牌:", hand.can_peng("1条"))
|
||
assert hand.can_peng("3条") == False, f"测试失败:3条不可以碰"
|
||
print("不可以碰 3条 的牌:", hand.can_peng("3条"))
|
||
|
||
# 测试是否可以杠
|
||
assert hand.can_gang("1条") == False, f"测试失败:1条不可以杠"
|
||
print("不可以杠 1条 的牌:", hand.can_gang("1条"))
|
||
assert hand.can_gang("2条") == False, f"测试失败:2条不可以杠"
|
||
print("不可以杠 2条 的牌:", hand.can_gang("2条"))
|
||
|
||
# 添加更多牌来形成杠
|
||
hand.add_tile("2条")
|
||
print("添加牌后手牌:", hand)
|
||
hand.add_tile("2条")
|
||
print("添加牌后手牌:", hand)
|
||
assert hand.can_gang("2条") == False, f"测试失败:2条不可以杠" # still not enough for gang
|
||
|
||
# 添加一张更多的 2条 来形成杠
|
||
hand.add_tile("2条")
|
||
print("添加一张2条后:", hand)
|
||
assert hand.can_gang("2条") == True, f"测试失败:2条应该可以杠"
|
||
|
||
print("所有测试通过!")
|
||
|
||
# 运行测试
|
||
test_hand()
|
||
|
||
|
||
|