QuantityTest.java 2.32 KB
Newer Older
1
2
3
package de.hftstuttgart.cityunits.tests;

import static org.junit.jupiter.api.Assertions.assertEquals;
4
5
6
7

import java.util.Locale;
import java.util.Locale.Category;

8
9
10
11
12
13
14
15
16
17
18
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;

19
// Quantities.getQuantity("1.50 €"); does not compile in Maven without cast to String ???
20
21
22
23
24
25
class QuantityTest
{
	@BeforeAll
	static void init() {
		// Initialize additional units like metric ton, $ and € with their labels
		UrbanSimulationUnits.getInstance();
26
27
		// Ensure US number format (interpret '.' as decimal point)
		Locale.setDefault(Category.FORMAT, Locale.US);
28
29
30
31
	}

	@Test
	void testTemperature() {
32
		Quantity<?> q = Quantities.getQuantity((String)"5 °C");
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

		assertEquals("[Θ]", q.getUnit().getDimension().toString(), "Wrong dimension!");
		assertEquals("278.15 K", q.toSystemUnit().toString(), "Wrong calculation of Celsius to Kelvin!");
	}
	
	@Test
	void testMetreAndArea() {
		Unit<Area> sqm = Units.METRE.multiply(Units.METRE).asType(Area.class);
		Quantity<Length> line = Quantities.getQuantity(2, Units.METRE);
		Quantity<Area> 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() {
50
		Quantity<?> cost = Quantities.getQuantity((String)"1.50 €");
51
52
53
54
55
		assertEquals(cost.getUnit(), UrbanSimulationUnits.EURO, "Wrong currency!");
	}

	@Test
	void testUrbanSimulationUnitPPMAndTon() {
56
		Quantity<?> q = Quantities.getQuantity((String)"20 ppm").multiply(Quantities.getQuantity((String)"10 t"));
57
58
59
60
61
62
63
		assertEquals("[M]", q.getUnit().getDimension().toString());
		assertEquals(UrbanSimulationUnits.PARTS_PER_MILLION.multiply(UrbanSimulationUnits.TON), q.getUnit());
		assertEquals(200, q.getValue());
	}

	@Test
	void testkWhPerCubicMeter() {
64
		Quantity<?> q = Quantities.getQuantity((String)"5.2 kW*h/m³");
65
		assertEquals("[M]/([L]·[T]²)", q.getUnit().getDimension().toString(), "Wrong dimension!");
66
		assertEquals("18720000 W·s/m³", q.toSystemUnit().toString());
67
68
69
	}

}