Skip to content

Commit 453b40a

Browse files
committed
fix: order components according to their index
Fixes #157
1 parent 077b664 commit 453b40a

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

analysis/src/test/java/ComputeTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import java.util.Random;
44
import java.util.random.RandomGenerator;
55

6-
import net.laprun.sustainability.power.SensorUnit;
76
import org.junit.jupiter.api.Test;
87

98
import net.laprun.sustainability.power.SensorMetadata;
9+
import net.laprun.sustainability.power.SensorUnit;
1010
import net.laprun.sustainability.power.analysis.Compute;
1111
import net.laprun.sustainability.power.analysis.MeanComponentProcessor;
1212
import net.laprun.sustainability.power.measure.OngoingPowerMeasure;

metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.BitSet;
55
import java.util.Collections;
66
import java.util.Comparator;
7-
import java.util.HashMap;
7+
import java.util.LinkedHashMap;
88
import java.util.List;
99
import java.util.Map;
1010
import java.util.Objects;
@@ -37,11 +37,11 @@ public SensorMetadata(List<ComponentMetadata> components, String documentation)
3737
}
3838

3939
final var cardinality = components.size();
40-
this.components = new HashMap<>(cardinality);
40+
this.components = new LinkedHashMap<>(cardinality);
4141
this.documentation = documentation;
4242
final var errors = new Errors();
4343
final var indices = new BitSet(cardinality);
44-
components.forEach(component -> {
44+
components.stream().sorted(Comparator.comparingInt(ComponentMetadata::index)).forEach(component -> {
4545
// check that index is valid
4646
final var index = component.index;
4747
if (index < 0 || index >= cardinality) {

metadata/src/test/java/net/laprun/sustainability/power/SensorMetadataTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,16 @@ void shouldFailIfNoComponentsAreProvided() {
7171
() -> new SensorMetadata(List.of(), ""));
7272
assertEquals("Must provide at least one component", e2.getMessage());
7373
}
74+
75+
@Test
76+
void shouldOrderComponentsByIndexOrder() {
77+
final var metadata = new SensorMetadata(List.of(
78+
new SensorMetadata.ComponentMetadata("foo", 1, null, true, SensorUnit.W),
79+
new SensorMetadata.ComponentMetadata("component2", 0, null, true, SensorUnit.decimalPercentage)), "");
80+
81+
int i = 0;
82+
for (var value : metadata.components().values()) {
83+
assertEquals(i++, value.index());
84+
}
85+
}
7486
}

0 commit comments

Comments
 (0)