Add typed field-flight prototype and preserve native qualification failures
This commit is contained in:
@@ -64,7 +64,7 @@ for project,rounds,timeout,extra,message in cases:
|
||||
chat=ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c'
|
||||
text=chat.read_text()
|
||||
assert 'm_ERRTestAircraftRoute = outcome == "aircraft-route";' in text
|
||||
assert 'if (m_ERRTestAircraftControl || m_ERRTestAircraftRoute) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 330000;' in text
|
||||
assert 'if (m_ERRTestAircraftControl || m_ERRTestAircraftRoute || m_ERRTestAircraftField) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 330000;' in text
|
||||
assert 'OnStop().Insert(ERR_StopHQPatrol);' in text
|
||||
assert 'if (m_ERRAircraftRoute) m_ERRAircraftRoute.Stop();' in body(chat,'protected void ERR_StopHQPatrol(')
|
||||
assert 'ERR_StopHQPatrol();' in body(chat,'protected bool ERR_Check(')
|
||||
@@ -153,11 +153,11 @@ int main(){
|
||||
# The sole fixture getter observes the service's original retained controller.
|
||||
getter=body(P,'ERR_AircraftRouteFlight ERR_NativeOriginalFlight(')
|
||||
run(r'''#include <cassert>
|
||||
struct Flight{};struct Entry {Flight* FlightPtr=nullptr;};
|
||||
struct BaseFlight {virtual ~BaseFlight()=default;};struct Flight:BaseFlight{};struct FieldFlight:BaseFlight{};struct Entry {BaseFlight* FlightPtr=nullptr;};
|
||||
struct Observe {Entry* entry=nullptr;Entry* Find(int){return entry;}
|
||||
''' + getter.replace('ERR_AircraftRouteFlight ', 'Flight* ').replace('Vehicle aircraft','int aircraft').replace('ERR_AircraftServiceEntry entry','Entry* entry').replace('entry.Flight','entry->FlightPtr').replace('return null;','return nullptr;') + r'''
|
||||
''' + getter.replace('ERR_AircraftRouteFlight.Cast(entry.Flight)', 'dynamic_cast<Flight*>(entry.Flight)').replace('ERR_AircraftRouteFlight ', 'Flight* ').replace('Vehicle aircraft','int aircraft').replace('ERR_AircraftServiceEntry entry','Entry* entry').replace('entry.Flight','entry->FlightPtr').replace('null','nullptr') + r'''
|
||||
};
|
||||
int main(){Observe p;assert(!p.ERR_NativeOriginalFlight(1));Flight flight;Entry e;e.FlightPtr=&flight;p.entry=&e;assert(p.ERR_NativeOriginalFlight(1)==&flight);}
|
||||
int main(){Observe p;assert(!p.ERR_NativeOriginalFlight(1));Flight flight;Entry e;e.FlightPtr=&flight;p.entry=&e;assert(p.ERR_NativeOriginalFlight(1)==&flight);FieldFlight field;e.FlightPtr=&field;assert(!p.ERR_NativeOriginalFlight(1));}
|
||||
''')
|
||||
assert 'm_Service.Drained() && !m_Service.Pending(m_Aircraft) && !m_Service.Retired(m_Aircraft)' in tick
|
||||
assert 'if (!RetainedIdentity())' in tick
|
||||
|
||||
Reference in New Issue
Block a user