Spaces:
Sleeping
Sleeping
| import numpy as np | |
| def test_preference_utils(): | |
| import sys | |
| sys.path.append(".") | |
| from server.preference_utils import get_context_bucket, calculate_advantages, rank_actions | |
| class DummyObs: | |
| def __init__(self, bin, amt, risk): | |
| self.bin_category = bin | |
| self.amount = amt | |
| self.observed_fraud_risk = risk | |
| obs = DummyObs(2, 600, 0.45) | |
| bucket = get_context_bucket(obs) | |
| print(f"Context Bucket: {bucket}") | |
| assert bucket == (2, 1, 2) # (2, 600//500=1, 0.45*5=2) | |
| results = [("action1", 0.8), ("action2", 0.4), ("action3", 0.6)] | |
| advantages = calculate_advantages(results) | |
| print(f"Advantages: {advantages}") | |
| ranks = rank_actions(results) | |
| print(f"Ranks: {ranks}") | |
| assert ranks[0][0] == "action2" # lowest | |
| assert ranks[2][0] == "action1" # highest | |
| def test_simulation_branching_direct(): | |
| import sys | |
| sys.path.append(".") | |
| from server.SmartPayEnv_environment import SmartpayenvEnvironment | |
| from models import SmartpayenvAction | |
| env = SmartpayenvEnvironment() | |
| print("Resetting environment...") | |
| obs = env.reset(difficulty=1) | |
| # 2. Simulate Action A | |
| print("Simulating Action A (Allow)...") | |
| action_a = SmartpayenvAction(gateway=0, fraud_decision=0, retry_strategy=0) | |
| obs_a = env.simulate(action_a) | |
| reward_a = obs_a.reward | |
| # 3. Simulate Action B (3DS) | |
| print("Simulating Action B (3DS)...") | |
| action_b = SmartpayenvAction(gateway=0, fraud_decision=2, retry_strategy=0) | |
| obs_b = env.simulate(action_b) | |
| reward_b = obs_b.reward | |
| print(f"Results: Reward Allow={reward_a:.4f}, Reward 3DS={reward_b:.4f}") | |
| # 4. Step once with Action C | |
| print("Stepping with Action C (Block)...") | |
| action_c = SmartpayenvAction(gateway=0, fraud_decision=1, retry_strategy=0) | |
| final_obs = env.step(action_c) | |
| print(f"Final Step Reward: {final_obs.reward:.4f}") | |
| if reward_a != reward_b: | |
| print("[PASS] Branching rewards differ as expected.") | |
| else: | |
| print("[INFO] Branching rewards were identical (sampling luck).") | |
| print("[PASS] Simulation branching logic verified.") | |
| if __name__ == "__main__": | |
| try: | |
| test_preference_utils() | |
| test_simulation_branching_direct() | |
| print("\nAll preference verification tests passed!") | |
| except Exception as e: | |
| print(f"Test failed: {e}") | |
| import traceback | |
| traceback.print_exc() | |