Files
kondiplo_api/verify_possible_orders.py
2026-02-15 14:53:03 +09:00

81 lines
3.2 KiB
Python

import requests
import json
from diplomacy import Game
BASE_URL = "http://127.0.0.1:8000"
def get_initial_state():
resp = requests.get(f"{BASE_URL}/game/initial-state")
return resp.json()
def test_possible_orders_default():
print("--- Testing Default ---")
state = get_initial_state()
resp = requests.post(f"{BASE_URL}/calculate/possible-orders", json=state)
data = resp.json()
# Expect loc -> list
if "possible_orders" in data and isinstance(data["possible_orders"], dict):
first_key = list(data["possible_orders"].keys())[0]
if isinstance(data["possible_orders"][first_key], list):
print("OK: Default format is loc -> list")
else:
print(f"FAILED: Expected list for {first_key}, got {type(data['possible_orders'][first_key])}")
else:
print("FAILED: Response structure incorrect")
def test_possible_orders_power():
print("--- Testing Power Name (FRANCE) ---")
state = get_initial_state()
resp = requests.post(f"{BASE_URL}/calculate/possible-orders?power_name=FRANCE", json=state)
data = resp.json()
if data.get("power") == "FRANCE" and "possible_orders" in data:
# Check if only France units are there
locs = list(data["possible_orders"].keys())
# Initial France units are at BRE, MAR, PAR
expected = {"BRE", "MAR", "PAR"}
if set(locs) == expected:
print("OK: Filtered by power correctly")
else:
print(f"FAILED: Expected locs {expected}, got {locs}")
else:
print(f"FAILED: Response structure incorrect: {data}")
def test_possible_orders_by_power():
print("--- Testing By Power ---")
state = get_initial_state()
resp = requests.post(f"{BASE_URL}/calculate/possible-orders?by_power=true", json=state)
data = resp.json()
if "possible_orders" in data and "FRANCE" in data["possible_orders"]:
france_orders = data["possible_orders"]["FRANCE"]
if isinstance(france_orders, dict) and "PAR" in france_orders:
print("OK: Grouped by power correctly")
else:
print(f"FAILED: France orders structure incorrect: {france_orders}")
else:
print(f"FAILED: Response structure incorrect or FRANCE missing: {data.keys()}")
def test_possible_orders_both():
print("--- Testing Both (By Power + FRANCE) ---")
state = get_initial_state()
resp = requests.post(f"{BASE_URL}/calculate/possible-orders?by_power=true&power_name=FRANCE", json=state)
data = resp.json()
# My implementation returns just that power in filtered format if both provided?
# Actually, my code:
# if by_power:
# ...
# if power_name:
# return {"power": power_name, "possible_orders": results[power_name]}
if data.get("power") == "FRANCE" and "possible_orders" in data:
print("OK: Both parameters handled correctly (returned filtered power)")
else:
print(f"FAILED: Response structure incorrect: {data}")
if __name__ == "__main__":
try:
test_possible_orders_default()
test_possible_orders_power()
test_possible_orders_by_power()
test_possible_orders_both()
except Exception as e:
print(f"Error during testing: {e}")