Files
Viano-Core/tests/clientless/test_adventure_recovery_policy.py
T
Nico 49712aadfe
GCC PCH / build (push) Waiting to run
clang PCH / build (push) Canceled after 0s
Improve AdventureBot travel recovery and destination eligibility
2026-10-29 11:10:27 +01:00

36 lines
1.6 KiB
Python

"""Boundary tests for the production death-chain, rescue and invitation policies."""
from pathlib import Path
import subprocess
import tempfile
root=Path(__file__).resolve().parents[2]
code=r'''
#include "AdventureRecoveryPolicy.h"
#include "AdventureGroupPolicy.h"
#include <cassert>
#include <iostream>
int main(){
using namespace AdventureRecoveryPolicy;
DeathChain c;
assert(!c.Died(1) && c.QuickDeaths==0);
for(int i=1;i<=5;++i){c.Revived=i*100;assert(!c.Died(i*100+60));assert(c.QuickDeaths==unsigned(i));}
assert(c.NextGraveyard);c.Revived=600;
assert(c.Died(610));assert(!c.NextGraveyard && c.QuickDeaths==0);
c.Revived=700;assert(!c.Died(761)&&c.QuickDeaths==0);
c.Revived=800;assert(!c.Died(810)&&c.QuickDeaths==1);
c.Revived=900;assert(!c.Died(961)&&c.QuickDeaths==0);
assert(!Rescue(699,100,0,9));assert(Rescue(700,100,0,5));
assert(!Rescue(700,100,0,4));assert(!Rescue(10000,0,0,9));
assert(!Rescue(2000,100,201,5));assert(Rescue(2001,100,201,5));
using namespace AdventureGroupPolicy;
assert(InviteLevel(60,55)&&InviteLevel(60,65));
assert(!InviteLevel(60,54)&&!InviteLevel(60,66));
assert(!AcceptPlayerLevel(85,10)&&!AcceptPlayerLevel(60,54));
assert(AcceptPlayerLevel(60,55)&&AcceptPlayerLevel(10,85));
std::cout<<"Five quick redeaths arm the NEXT graveyard fallback; rescue grace/cooldown and asymmetric invitation limits passed.\n";
}
'''
with tempfile.TemporaryDirectory() as d:
p=Path(d);(p/'test.cpp').write_text(code)
subprocess.run(['c++','-std=c++17','-I'+str(root/'src/server/game/World'),str(p/'test.cpp'),'-o',str(p/'test')],check=True)
subprocess.run([str(p/'test')],check=True)