Skip to content

Commit 5391781

Browse files
committed
fix: proper factor for deci prefix
1 parent 39119de commit 5391781

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,27 @@
1010

1111
public class SensorUnit {
1212

13+
/**
14+
* Note that for simplicity's sake, we're not supporting deca prefix since it would make the prefix identification logic
15+
* more complex and it's not a very used prefix. Might revisit as needed.
16+
*/
1317
private final static Map<String, Double> prefixesToFactors = Map.of(
1418
"n", 1e-9,
1519
"µ", 1e-6,
1620
"m", 1e-3,
1721
"c", 1e-2,
18-
"d", 10.0,
22+
"d", 1e-1,
1923
"h", 100.0,
2024
"k", 1e3,
2125
"M", 1e6,
2226
"G", 1e9);
2327
private final static Map<String, SensorUnit> baseUnits = new HashMap<>();
28+
public static final SensorUnit W = baseUnitFor("W");
29+
public static final SensorUnit J = baseUnitFor("J");
30+
public static final SensorUnit decimalPercentage = baseUnitFor("decimal percentage");
2431
private final static Map<String, SensorUnit> knownUnits = new HashMap<>();
25-
32+
public static final SensorUnit mW = SensorUnit.of("mW");
33+
public static final SensorUnit µJ = SensorUnit.of("µJ");
2634
private final String symbol;
2735
private final SensorUnit base;
2836
private final double factor;
@@ -121,10 +129,4 @@ public boolean equals(Object o) {
121129
public int hashCode() {
122130
return Objects.hashCode(symbol);
123131
}
124-
125-
public static final SensorUnit W = baseUnitFor("W");
126-
public static final SensorUnit mW = SensorUnit.of("mW");
127-
public static final SensorUnit J = baseUnitFor("J");
128-
public static final SensorUnit µJ = SensorUnit.of("µJ");
129-
public static final SensorUnit decimalPercentage = baseUnitFor("decimal percentage");
130132
}

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ void ofShouldWork() {
1818
assertThat(su).isEqualTo(SensorUnit.decimalPercentage);
1919
assertThat(su.factor()).isEqualTo(1);
2020
assertThat(su.base()).isEqualTo(SensorUnit.decimalPercentage);
21+
22+
su = SensorUnit.of("dW");
23+
assertThat(su.base()).isEqualTo(SensorUnit.W);
24+
assertThat(su.factor()).isEqualTo(0.1);
2125
}
2226

2327
@Test
@@ -47,9 +51,9 @@ void conversionFactorShouldWork() {
4751
assertEquals(1, SensorUnit.J.conversionFactorTo(SensorUnit.J));
4852
assertEquals(1, SensorUnit.decimalPercentage.conversionFactorTo(SensorUnit.decimalPercentage));
4953
assertEquals(1, SensorUnit.of("mW").conversionFactorTo(SensorUnit.of("mW")));
50-
assertEquals(1e-3, SensorUnit.of("mW").conversionFactorTo(SensorUnit.W), 0.0001);
51-
assertEquals(1e3, SensorUnit.of("W").conversionFactorTo(SensorUnit.of("mW")), 0.0001);
52-
assertEquals(1e3, SensorUnit.of("mW").conversionFactorTo(SensorUnit.of("µW")), 0.0001);
54+
assertEquals(0.001, SensorUnit.of("mW").conversionFactorTo(SensorUnit.W), 0.0001);
55+
assertEquals(1000, SensorUnit.of("W").conversionFactorTo(SensorUnit.of("mW")), 0.0001);
56+
assertEquals(1000, SensorUnit.of("mW").conversionFactorTo(SensorUnit.of("µW")), 0.0001);
5357
assertEquals(1e-3, SensorUnit.of("µW").conversionFactorTo(SensorUnit.of("mW")), 0.0001);
5458
assertEquals(0.1, SensorUnit.of("mW").conversionFactorTo(SensorUnit.of("cW")), 0.0001);
5559
assertEquals(10, SensorUnit.of("cW").conversionFactorTo(SensorUnit.of("mW")), 0.0001);

0 commit comments

Comments
 (0)