QuantityTest.java 2.06 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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;


class QuantityTest
{
	@BeforeAll
	static void init() {
		// Initialize additional units like metric ton, $ and € with their labels
		UrbanSimulationUnits.getInstance();
	}

	@Test
	void testTemperature() {
		java.lang.String cs = "5 °C";
		Quantity<?> q = Quantities.getQuantity(cs);

		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() {
		Quantity<?> cost = Quantities.getQuantity("1.50 €");
		assertEquals(cost.getUnit(), UrbanSimulationUnits.EURO, "Wrong currency!");
	}

	@Test
	void testUrbanSimulationUnitPPMAndTon() {
		Quantity<?> q = Quantities.getQuantity("20 ppm").multiply(Quantities.getQuantity("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("5.2 kW*h/m³");
		assertEquals("[M]/([L]·[T]²)", q.getUnit().getDimension().toString(), "Wrong dimension!");
		assertEquals("187200000 W·s/m³", q.toSystemUnit().toString());
	}

}