Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion config/HlaFedereplFOM.xml
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,13 @@
<dataType>GridPosition</dataType>
<semantics>Cell occupied after movement.</semantics>
</parameter>
<parameter>
<name>LocationHistory</name>
<dataType>GridPositionHistory</dataType>
<semantics>
Ordered list of positions occupied by the entity, including the new destination.
</semantics>
</parameter>
</interactionClass>
<interactionClass>
<name>EntityAte</name>
Expand Down Expand Up @@ -585,7 +592,15 @@
</enumerator>
</enumeratedData>
</enumeratedDataTypes>
<arrayDataTypes/>
<arrayDataTypes>
<arrayData>
<name>GridPositionHistory</name>
<dataType>GridPosition</dataType>
<cardinality>Dynamic</cardinality>
<encoding>HLAvariableArray</encoding>
<semantics>Ordered history of grid positions occupied by an entity.</semantics>
</arrayData>
</arrayDataTypes>
<fixedRecordDataTypes>
<fixedRecordData>
<name>GridPosition</name>
Expand Down
29 changes: 29 additions & 0 deletions src/test/java/com/yetanalytics/ConfigParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<String, byte[]> 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,
Expand Down
Loading