diff --git a/libraries/pom.xml b/libraries/pom.xml
index 6666900c1d..07524ab4e7 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -136,9 +136,9 @@
${commons-text.version}
- javax.measure
- jsr-275
- 1.0.0
+ tec.units
+ unit-ri
+ 1.0.3
org.apache.commons
@@ -632,5 +632,6 @@
2.9.9
1.5.1
1.14
+ 1.0.3
diff --git a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java b/libraries/src/main/java/com/baeldung/measurement/WaterTank.java
similarity index 62%
rename from libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java
rename to libraries/src/main/java/com/baeldung/measurement/WaterTank.java
index 1ab9eee53f..f3675ae689 100644
--- a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java
+++ b/libraries/src/main/java/com/baeldung/measurement/WaterTank.java
@@ -1,14 +1,14 @@
-package com.baeldung.javax.measure;
+package com.baeldung.measurement;
-import javax.measure.Measure;
+import javax.measure.Quantity;
import javax.measure.quantity.Volume;
public class WaterTank {
- private Measure capacityMeasure;
+ private Quantity capacityMeasure;
private double capacityDouble;
- public void setCapacityMeasure(Measure capacityMeasure) {
+ public void setCapacityMeasure(Quantity capacityMeasure) {
this.capacityMeasure = capacityMeasure;
}
@@ -16,7 +16,7 @@ public class WaterTank {
this.capacityDouble = capacityDouble;
}
- public Measure getCapacityMeasure() {
+ public Quantity getCapacityMeasure() {
return capacityMeasure;
}
diff --git a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java b/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java
deleted file mode 100644
index ef54035353..0000000000
--- a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.baeldung.javax.measure;
-
-import javax.measure.Measure;
-import javax.measure.converter.UnitConverter;
-import javax.measure.quantity.Duration;
-import javax.measure.quantity.Length;
-import javax.measure.quantity.Pressure;
-import javax.measure.quantity.Volume;
-import static javax.measure.unit.NonSI.HOUR;
-import static javax.measure.unit.NonSI.LITRE;
-import static javax.measure.unit.NonSI.MILE;
-import static javax.measure.unit.NonSI.MINUTE;
-import javax.measure.unit.SI;
-import static javax.measure.unit.SI.KILO;
-import static javax.measure.unit.SI.METER;
-import static javax.measure.unit.SI.NEWTON;
-import static javax.measure.unit.SI.SECOND;
-import javax.measure.unit.Unit;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import org.junit.Test;
-
-public class WaterTankTests {
-
- @Test
- public void givenMeasure_whenGetUnitAndConvertValue_thenSuccess() {
- WaterTank waterTank = new WaterTank();
- waterTank.setCapacityMeasure(Measure.valueOf(9.2, LITRE));
- assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit());
-
- Measure waterCapacity = waterTank.getCapacityMeasure();
- double volumeInLitre = waterCapacity.getValue().doubleValue();
- assertEquals(9.2, volumeInLitre, 0.0f);
-
- double volumeInMilliLitre = waterCapacity.doubleValue(SI.MILLI(LITRE));
- assertEquals(9200.0, volumeInMilliLitre, 0.0f);
-
- Unit Kilometer = SI.KILO(METER);
- Unit Centimeter = SI.CENTI(METER);
- }
-
- @Test
- public void givenMeasure_whenAlternateMeasure_ThenGetAlternateMeasure() {
- Unit PASCAL = NEWTON.divide(METER.pow(2)).alternate("Pa");
- assertTrue(Unit.valueOf("Pa").equals(PASCAL));
- }
-
- @Test
- public void givenMeasure_whenCompoundMeasure_ThenGetCompoundMeasure() {
- Unit HOUR_MINUTE_SECOND = HOUR.compound(MINUTE).compound(SECOND);
- Measure duration = Measure.valueOf(12345, SECOND);
- assertEquals("3h25min45s", duration.to(HOUR_MINUTE_SECOND).toString());
- }
-
- @Test
- public void givenMiles_whenConvertToKilometer_ThenConverted() {
- double distanceInMiles = 50.0;
- UnitConverter mileToKilometer = MILE.getConverterTo(KILO(METER));
- double distanceInKilometers = mileToKilometer.convert(distanceInMiles);
- assertEquals(80.4672, distanceInKilometers, 0.00f);
- }
-
- @Test
- public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() {
- assertTrue(Unit.valueOf("kW").equals(SI.KILO(SI.WATT)));
- assertTrue(Unit.valueOf("ms").equals(SI.SECOND.divide(1000)));
- }
-}
diff --git a/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java b/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java
new file mode 100644
index 0000000000..b023ffe8d9
--- /dev/null
+++ b/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java
@@ -0,0 +1,86 @@
+package com.baeldung.measurement;
+
+import javax.measure.Quantity;
+import javax.measure.quantity.Area;
+import javax.measure.quantity.Length;
+import javax.measure.quantity.Pressure;
+import javax.measure.quantity.Volume;
+
+import javax.measure.Unit;
+import javax.measure.UnitConverter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+import com.baeldung.measurement.WaterTank;
+
+import tec.units.ri.format.SimpleUnitFormat;
+import tec.units.ri.quantity.Quantities;
+import tec.units.ri.unit.MetricPrefix;
+import static tec.units.ri.unit.Units.*;
+
+public class WaterTankTests {
+
+ @Test
+ public void givenQuantity_whenGetUnitAndConvertValue_thenSuccess() {
+ WaterTank waterTank = new WaterTank();
+ waterTank.setCapacityMeasure(Quantities.getQuantity(9.2, LITRE));
+ assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit());
+
+ Quantity waterCapacity = waterTank.getCapacityMeasure();
+ double volumeInLitre = waterCapacity.getValue().doubleValue();
+ assertEquals(9.2, volumeInLitre, 0.0f);
+
+ double volumeInMilliLitre = waterCapacity.to(MetricPrefix.MILLI(LITRE)).getValue().doubleValue();
+ assertEquals(9200.0, volumeInMilliLitre, 0.0f);
+
+ // compilation error
+ // volumeInMilliLitre = waterCapacity.to(MetricPrefix.MILLI(KILOGRAM));
+
+ Unit Kilometer = MetricPrefix.KILO(METRE);
+
+ // compilation error
+ // Unit Centimeter = MetricPrefix.CENTI(LITRE);
+ }
+
+ @Test
+ public void givenUnit_whenAlternateUnit_ThenGetAlternateUnit() {
+
+ Unit PASCAL = NEWTON.divide(METRE.pow(2)).alternate("Pa").asType(Pressure.class);
+ assertTrue(SimpleUnitFormat.getInstance().parse("Pa").equals(PASCAL));
+ }
+
+ @Test
+ public void givenUnit_whenProduct_ThenGetProductUnit() {
+ Unit squareMetre = METRE.multiply(METRE).asType(Area.class);
+ Quantity line = Quantities.getQuantity(2, METRE);
+ assertEquals(line.multiply(line).getUnit(), squareMetre);
+ }
+
+ @Test
+ public void givenMeters_whenConvertToKilometer_ThenConverted() {
+ double distanceInMeters = 50.0;
+ UnitConverter metreToKilometre = METRE.getConverterTo(MetricPrefix.KILO(METRE));
+ double distanceInKilometers = metreToKilometre.convert(distanceInMeters);
+ assertEquals(0.05, distanceInKilometers, 0.00f);
+ }
+
+ @Test
+ public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() {
+ assertTrue(SimpleUnitFormat.getInstance().parse("kW").equals(MetricPrefix.KILO(WATT)));
+ assertTrue(SimpleUnitFormat.getInstance().parse("ms").equals(SECOND.divide(1000)));
+ }
+
+ @Test
+ public void givenUnits_WhenAdd_ThenSuccess() {
+ Quantity total = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, METRE));
+ assertEquals(total.getValue().intValue(), 5);
+
+ // compilation error
+ // Quantity total = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, LITRE));
+
+ Quantity totalKm = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, MetricPrefix.KILO(METRE)));
+ assertEquals(totalKm.getValue().intValue(), 3002);
+ }
+}