diff --git a/analysis/src/test/java/ComputeTest.java b/analysis/src/test/java/ComputeTest.java index 87f6005..c693b6f 100644 --- a/analysis/src/test/java/ComputeTest.java +++ b/analysis/src/test/java/ComputeTest.java @@ -3,10 +3,10 @@ import java.util.Random; import java.util.random.RandomGenerator; -import net.laprun.sustainability.power.SensorUnit; import org.junit.jupiter.api.Test; import net.laprun.sustainability.power.SensorMetadata; +import net.laprun.sustainability.power.SensorUnit; import net.laprun.sustainability.power.analysis.Compute; import net.laprun.sustainability.power.analysis.MeanComponentProcessor; import net.laprun.sustainability.power.measure.OngoingPowerMeasure; diff --git a/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java b/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java index 7ab81f7..c0ec07c 100644 --- a/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java +++ b/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java @@ -4,7 +4,7 @@ import java.util.BitSet; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -37,11 +37,11 @@ public SensorMetadata(List components, String documentation) } final var cardinality = components.size(); - this.components = new HashMap<>(cardinality); + this.components = new LinkedHashMap<>(cardinality); this.documentation = documentation; final var errors = new Errors(); final var indices = new BitSet(cardinality); - components.forEach(component -> { + components.stream().sorted(Comparator.comparingInt(ComponentMetadata::index)).forEach(component -> { // check that index is valid final var index = component.index; if (index < 0 || index >= cardinality) { diff --git a/metadata/src/test/java/net/laprun/sustainability/power/SensorMetadataTest.java b/metadata/src/test/java/net/laprun/sustainability/power/SensorMetadataTest.java index 306f972..26599e5 100644 --- a/metadata/src/test/java/net/laprun/sustainability/power/SensorMetadataTest.java +++ b/metadata/src/test/java/net/laprun/sustainability/power/SensorMetadataTest.java @@ -71,4 +71,16 @@ void shouldFailIfNoComponentsAreProvided() { () -> new SensorMetadata(List.of(), "")); assertEquals("Must provide at least one component", e2.getMessage()); } + + @Test + void shouldOrderComponentsByIndexOrder() { + final var metadata = new SensorMetadata(List.of( + new SensorMetadata.ComponentMetadata("foo", 1, null, true, SensorUnit.W), + new SensorMetadata.ComponentMetadata("component2", 0, null, true, SensorUnit.decimalPercentage)), ""); + + int i = 0; + for (var value : metadata.components().values()) { + assertEquals(i++, value.index()); + } + } }