"""Execute actual read-only native-stock fixture checks with deterministic component adapters.""" from pathlib import Path import os,re from policy_harness import ROOT,body,run P=Path(os.environ.get('ERR_NATIVE_TRANSPORT_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c')) method=body(P,'bool MaintenanceStock(') for forbidden in ('SetFuel','SetResource','Consume','Spawn(','TryMove','GetInVehicle','SetHealth','EnableDamage'): assert forbidden not in method,forbidden s=method.replace('protected ','').replace('array<','Array<').replace('foreach (','for (').replace('null','nullptr').replace('ResourceName','string') s=s.replace('InventoryStorageManagerComponent inventory = InventoryStorageManagerComponent.Cast(site.Container.FindComponent(InventoryStorageManagerComponent));','Inventory* inventory = site->Container->inventory;') s=s.replace('SCR_ResourceComponent resource = SCR_ResourceComponent.Cast(item.FindComponent(SCR_ResourceComponent));','Resource* resource = item->resource;') s=s.replace('SCR_FuelManagerComponent fuel = SCR_FuelManagerComponent.Cast(item.FindComponent(SCR_FuelManagerComponent));','Fuel* fuel = item->fuel;') s=s.replace('SCR_ResourceContainer supplies;','Supply* supplies = nullptr;').replace('int kits, cans;','int kits=0, cans=0;') for var in ('site','m_Mode','item','resource','supplies','fuel'):s=re.sub(r'\b'+var+r'\.',var+'->',s) s=s.replace('ERR_SiteRuntime site','Site* site') s=s.replace('Sites().','Sites()->').replace('GetPrefabData().','GetPrefabData()->') for ns in ('ERR_Inventory','Math','EResourceType'):s=s.replace(ns+'.',ns+'::') run(r''' #include #include #include #include #include using string=std::string; templatestruct Array:std::vector{using std::vector::vector;int Count(){return this->size();}}; struct Item;using IEntity=Item*; struct Inventory{Arrayitems;}; struct Supply{float amount=20,capacity=20;float GetResourceValue(){return amount;}float GetMaxResourceValue(){return capacity;}}; struct Resource{Supply* supply=nullptr;Supply* GetContainer(int){return supply;}}; struct Fuel{float litres=5,capacity=20;float GetTotalFuel(){return litres;}float GetTotalMaxFuel(){return capacity;}}; struct Prefab{string name;string GetPrefabName(){return name;}}; struct Item{Prefab* prefab=nullptr;Inventory* inventory=nullptr;Resource* resource=nullptr;Fuel* fuel=nullptr;bool owned=true;Prefab* GetPrefabData(){return prefab;}}; struct Site{IEntity Container=nullptr;};struct Sites{bool Owns(IEntity item){return item&&item->owned;}}; struct Mode{struct Sites sites;struct Sites* Sites(){return &sites;}}; struct ERR_Inventory{static void Items(Inventory* inv,Array& items){for(auto item:inv->items)if(item&&std::find(items.begin(),items.end(),item)==items.end())items.push_back(item);}}; namespace Math{float AbsFloat(float x){return std::fabs(x);}}namespace EResourceType{enum{SUPPLIES};} templatevoid PrintFormat(const char*,T...){} struct Probe{Mode* m_Mode;Site* m_Site;int checks=0;bool Check(bool valid,string){checks++;return valid;} '''+s+r''' }; int main(){ Mode mode;Site site;Probe p{&mode,&site};Item container,kit,can1,can2;Inventory inventory; Prefab kitPrefab{"{C09C7C97EFA34909}Prefabs/ERR/Items/EmergencyRepairKit.et"}; Prefab canPrefab{"{12D5AD21E383B768}Prefabs/Items/Fuel/Jerrycan_01/Jerrycan_01_item.et"}; Supply supplies;Resource resource{&supplies};Fuel fuel1,fuel2; site.Container=&container;container.inventory=&inventory;kit.prefab=&kitPrefab;kit.resource=&resource; can1.prefab=&canPrefab;can1.fuel=&fuel1;can2.prefab=&canPrefab;can2.fuel=&fuel2; inventory.items={&kit,&can1,&can2};assert(p.MaintenanceStock(&site)); assert(supplies.amount==20&&fuel1.litres==5&&fuel2.litres==5); // inspection made no changes inventory.items.push_back(&can1);assert(p.MaintenanceStock(&site)); // duplicate inventory enumeration is not extra stock inventory.items={&kit,&can1};assert(!p.MaintenanceStock(&site));inventory.items={&kit,&can1,&can2}; Item extraKit=kit;inventory.items.push_back(&extraKit);assert(!p.MaintenanceStock(&site));inventory.items.pop_back(); kit.owned=false;assert(!p.MaintenanceStock(&site));kit.owned=true; can2.owned=false;assert(!p.MaintenanceStock(&site));can2.owned=true; kit.resource=nullptr;assert(!p.MaintenanceStock(&site));kit.resource=&resource; resource.supply=nullptr;assert(!p.MaintenanceStock(&site));resource.supply=&supplies; can2.fuel=nullptr;assert(!p.MaintenanceStock(&site));can2.fuel=&fuel2; for(float invalid:{0.f,19.f,21.f,NAN}){supplies.amount=invalid;assert(!p.MaintenanceStock(&site));}supplies.amount=20; supplies.capacity=100;assert(!p.MaintenanceStock(&site));supplies.capacity=20; for(float invalid:{0.f,4.f,6.f,NAN}){fuel2.litres=invalid;assert(!p.MaintenanceStock(&site));}fuel2.litres=5; fuel1.capacity=5;assert(!p.MaintenanceStock(&site));fuel1.capacity=20; string original=kitPrefab.name;kitPrefab.name="unrelated";assert(!p.MaintenanceStock(&site));kitPrefab.name=original; std::vector unrelated(129);for(auto& item:unrelated)inventory.items.push_back(&item);assert(!p.MaintenanceStock(&site));inventory.items={&kit,&can1,&can2}; container.owned=false;assert(!p.MaintenanceStock(&site));container.owned=true; container.inventory=nullptr;assert(!p.MaintenanceStock(&site));container.inventory=&inventory; assert(p.MaintenanceStock(&site)); assert(!p.MaintenanceStock(nullptr)); } ''') tick=body(P,'int Tick(') assert tick.index('if (!MaintenanceStock(m_Site)) return -1;') < tick.index('IEntity driver = Character(0)') print('PASS: actual maintenance native-stock check rejects missing/duplicate/wrong-identity/unowned/depleted/malformed stock and is read-only; native runtime not executed')