package de.hftstuttgart.cityunits.tests; import static org.junit.jupiter.api.Assertions.assertEquals; import javax.measure.Quantity; import javax.measure.Unit; import javax.measure.quantity.Area; import javax.measure.quantity.Length; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import de.hftstuttgart.cityunits.model.UrbanSimulationUnits; import tech.units.indriya.quantity.Quantities; import tech.units.indriya.unit.Units; // Quantities.getQuantity("1.50 €"); does not compile in Maven without cast to String ??? class QuantityTest { @BeforeAll static void init() { // Initialize additional units like metric ton, $ and € with their labels UrbanSimulationUnits.getInstance(); } @Test void testTemperature() { Quantity q = Quantities.getQuantity((String)"5 °C"); assertEquals("[Θ]", q.getUnit().getDimension().toString(), "Wrong dimension!"); assertEquals("278.15 K", q.toSystemUnit().toString(), "Wrong calculation of Celsius to Kelvin!"); } @Test void testMetreAndArea() { Unit sqm = Units.METRE.multiply(Units.METRE).asType(Area.class); Quantity line = Quantities.getQuantity(2, Units.METRE); Quantity area = line.multiply(line).asType(Area.class); assertEquals(sqm, area.getUnit(), "Wrong unit computation!"); assertEquals(4, area.getValue(), "Wrong calculation of area!"); } @Test void testUrbanSimulationUnitMoney() { Quantity cost = Quantities.getQuantity((String)"1.50 €"); assertEquals(cost.getUnit(), UrbanSimulationUnits.EURO, "Wrong currency!"); } @Test void testUrbanSimulationUnitPPMAndTon() { Quantity q = Quantities.getQuantity((String)"20 ppm").multiply(Quantities.getQuantity((String)"10 t")); assertEquals("[M]", q.getUnit().getDimension().toString()); assertEquals(UrbanSimulationUnits.PARTS_PER_MILLION.multiply(UrbanSimulationUnits.TON), q.getUnit()); assertEquals(200, q.getValue()); } @Test void testkWhPerCubicMeter() { Quantity q = Quantities.getQuantity((String)"5.2 kW*h/m³"); assertEquals("[M]/([L]·[T]²)", q.getUnit().getDimension().toString(), "Wrong dimension!"); assertEquals("187200000 W·s/m³", q.toSystemUnit().toString()); } }