39 lines
1.7 KiB
Python
39 lines
1.7 KiB
Python
"""Execute the production rescue departure hold; no native-flight claim."""
|
|
from policy_harness import ROOT, body, run
|
|
source = ROOT / "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c"
|
|
methods = "\n".join(body(source, signature) for signature in (
|
|
"static float BoardingSince(", "static bool CanDepart("))
|
|
run("#include <cassert>\nstruct Rules {\n" + methods + r"""
|
|
};
|
|
int main() {
|
|
assert(Rules::BoardingSince(0,0,-1,1000)==-1);
|
|
assert(Rules::BoardingSince(3,2,1000,9000)==-1);
|
|
assert(Rules::BoardingSince(3,3,-1,1000)==1000);
|
|
assert(Rules::BoardingSince(3,3,1000,8999)==1000);
|
|
assert(!Rules::CanDepart(1000,8999));
|
|
assert(Rules::CanDepart(1000,9000));
|
|
assert(!Rules::CanDepart(-1,10000));
|
|
assert(!Rules::CanDepart(1000,999));
|
|
assert(Rules::BoardingSince(3,3,1000,999)==999);
|
|
float since=Rules::BoardingSince(2,2,-1,1000);
|
|
since=Rules::BoardingSince(2,1,since,8000);
|
|
since=Rules::BoardingSince(2,2,since,9000);
|
|
assert(!Rules::CanDepart(since,16000));
|
|
assert(Rules::CanDepart(since,17000));
|
|
}
|
|
""")
|
|
print("PASS: all survivors required, continuous eight-second boarding hold, reset on exit and clock rollback")
|
|
|
|
flight_rules=body(source,'static float AirborneSince(')+body(source,'static bool FlightComplete(')
|
|
run("#include <cassert>\n"+flight_rules+"""
|
|
int main(){
|
|
assert(AirborneSince(false,-1,1000)==-1);
|
|
float since=AirborneSince(true,-1,1000);
|
|
assert(!FlightComplete(since,30999));assert(FlightComplete(since,31000));
|
|
assert(AirborneSince(false,since,2000)==-1);
|
|
assert(AirborneSince(true,since,0)==0);
|
|
assert(!FlightComplete(-1,100000));assert(!FlightComplete(5000,4999));
|
|
}
|
|
""")
|
|
print('PASS: thirty continuous airborne seconds, grounded reset and clock rollback')
|