From 4e0f17399aec0e2842a1c6a7846d6ac5093cf8a7 Mon Sep 17 00:00:00 2001 From: Cliff Casey Date: Wed, 1 Jul 2026 16:05:24 -0400 Subject: [PATCH] fom update and array test --- config/HlaFedereplFOM.xml | 17 ++++++++++- .../com/yetanalytics/ConfigParserTest.java | 29 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/config/HlaFedereplFOM.xml b/config/HlaFedereplFOM.xml index 07872de..65eb7c0 100644 --- a/config/HlaFedereplFOM.xml +++ b/config/HlaFedereplFOM.xml @@ -323,6 +323,13 @@ GridPosition Cell occupied after movement. + + LocationHistory + GridPositionHistory + + Ordered list of positions occupied by the entity, including the new destination. + + EntityAte @@ -585,7 +592,15 @@ - + + + GridPositionHistory + GridPosition + Dynamic + HLAvariableArray + Ordered history of grid positions occupied by an entity. + + GridPosition diff --git a/src/test/java/com/yetanalytics/ConfigParserTest.java b/src/test/java/com/yetanalytics/ConfigParserTest.java index 8ae23db..4a36b1b 100644 --- a/src/test/java/com/yetanalytics/ConfigParserTest.java +++ b/src/test/java/com/yetanalytics/ConfigParserTest.java @@ -140,6 +140,35 @@ public void handlesFixedRecordFieldAccess() { assertEquals(42, result); } + @Test + public void handlesFixedRecordFieldAccessInsideArray() { + // Test array of fixed records + SimulationConfig simConfig = new SimulationConfig(null, null, null, null, + "config/HlaFedereplFOM.xml"); + HLADecoderRegistry decoderRegistry = new HLADecoderRegistry(new HLA1516eEncoderFactory()); + InjectionHandler ih = new InjectionHandler(); + ih.setFomXml(new FOMXML(simConfig, decoderRegistry)); + ih.setHLADecoderRegistry(decoderRegistry); + + byte[] gridPosition = java.nio.ByteBuffer.allocate(Integer.BYTES * 2) + .order(java.nio.ByteOrder.BIG_ENDIAN) + .putInt(42) + .putInt(84) + .array(); + + byte[] arrayBytes = HLAEncodingTestSupport.variableArray(gridPosition); + + Map paramMap = new java.util.HashMap<>(); + paramMap.put("LocationHistory", arrayBytes); + + InteractionInjectionContext injectionContext = new InteractionInjectionContext("EntityMoved", paramMap); + com.yetanalytics.hlaxapi.config.model.Target target = new com.yetanalytics.hlaxapi.config.model.Target( + java.util.List.of("LocationHistory", 0, "X")); + + Object result = ih.handleThis(target, injectionContext); + assertEquals(42, result); + } + @Test public void handlesFixedRecordGridPositionFieldAccess() { SimulationConfig simConfig = new SimulationConfig(null, null, null, null,