36 lines
1.6 KiB
Python
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)
|