#!/usr/bin/env python3 """ API一致性验证测试 验证所有修复后的API调用是否正常工作 """ import sys import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from kards_battle.core.battle_engine import BattleEngine from kards_battle.core.enums import LineType from kards_battle.examples.sample_units import create_german_infantry, create_american_gi def test_api_consistency(): """测试API一致性""" print("\n🔍 API一致性验证测试") print("=" * 40) # 创建引擎 engine = BattleEngine("Germany", "USA", debug_mode=True) # 创建单位 german_unit = create_german_infantry() american_unit = create_american_gi() german_unit.stats.operation_cost = 1 american_unit.stats.operation_cost = 1 test_results = [] # 测试1: 部署API(使用整数player_id) try: result1 = engine.deploy_unit_to_support(german_unit, 0) result2 = engine.deploy_unit_to_support(american_unit, 1) deploy_success = result1.get('success', False) and result2.get('success', False) test_results.append(("部署API", deploy_success)) print(f"✅ 部署API测试: {'通过' if deploy_success else '失败'}") except Exception as e: test_results.append(("部署API", False)) print(f"❌ 部署API测试失败: {e}") # 测试2: 移动API(使用整数player_id) try: # 等待到下一回合,这样单位就能移动了 engine.end_turn() # 切换到美军 engine.end_turn() # 切换回德军(新回合) engine.debug_set_kredits(0, kredits=10) result3 = engine.move_unit(german_unit.id, (LineType.FRONT, 0), 0) move_success = result3.get('success', False) test_results.append(("移动API", move_success)) if move_success: print("✅ 移动API测试: 通过") else: print(f"❌ 移动API测试失败: {result3.get('reason', 'Unknown')}") except Exception as e: test_results.append(("移动API", False)) print(f"❌ 移动API测试异常: {e}") # 测试3: 攻击API(使用整数player_id) try: engine.end_turn() # 切换到美军 engine.debug_set_kredits(1, kredits=10) result4 = engine.attack_target(american_unit.id, german_unit.id, 1) attack_success = result4.get('success', False) test_results.append(("攻击API", attack_success)) print(f"✅ 攻击API测试: {'通过' if attack_success else '失败'}") except Exception as e: test_results.append(("攻击API", False)) print(f"❌ 攻击API测试失败: {e}") # 测试4: 回合管理API try: result5 = engine.end_turn() turn_success = result5.get('turn_ended', False) test_results.append(("回合管理API", turn_success)) if turn_success: print("✅ 回合管理API测试: 通过") else: print(f"❌ 回合管理API测试失败: {result5.get('reason', 'Unknown')}") except Exception as e: test_results.append(("回合管理API", False)) print(f"❌ 回合管理API测试异常: {e}") # 测试5: 资源管理API(使用整数player_id) try: kredits_p1 = engine.get_kredits(0) kredits_p2 = engine.get_kredits(1) slot_p1 = engine.get_kredits_slot(0) slot_p2 = engine.get_kredits_slot(1) resource_success = all([ isinstance(kredits_p1, int), isinstance(kredits_p2, int), isinstance(slot_p1, int), isinstance(slot_p2, int) ]) test_results.append(("资源管理API", resource_success)) print(f"✅ 资源管理API测试: {'通过' if resource_success else '失败'}") except Exception as e: test_results.append(("资源管理API", False)) print(f"❌ 资源管理API测试失败: {e}") # 汇总结果 print("\n📊 测试结果汇总:") print("-" * 40) total_tests = len(test_results) passed_tests = sum(1 for _, success in test_results if success) for test_name, success in test_results: status = "✅ 通过" if success else "❌ 失败" print(f"{test_name}: {status}") overall_success = passed_tests == total_tests print(f"\n总体结果: {passed_tests}/{total_tests} 通过") print(f"{'🎉 所有API一致性测试通过!' if overall_success else '❌ 部分API测试失败'}") assert overall_success, f"API consistency test failed: {passed_tests}/{total_tests} passed" if __name__ == "__main__": try: test_api_consistency() print("✅ All tests passed!") except AssertionError as e: print(f"❌ {e}") sys.exit(1)