QuantityTest.java 2.16 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;

15
// Quantities.getQuantity("1.50 €"); does not compile in Maven without cast to String ???
16
17
18
19
20
21
22
23
24
25
class QuantityTest
{
	@BeforeAll
	static void init() {
		// Initialize additional units like metric ton, $ and € with their labels
		UrbanSimulationUnits.getInstance();
	}

	@Test
	void testTemperature() {
26
		Quantity<?> q = Quantities.getQuantity((String)"5 °C");
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

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

	@Test
	void testUrbanSimulationUnitPPMAndTon() {
50
		Quantity<?> q = Quantities.getQuantity((String)"20 ppm").multiply(Quantities.getQuantity((String)"10 t"));
51
52
53
54
55
56
57
		assertEquals("[M]", q.getUnit().getDimension().toString());
		assertEquals(UrbanSimulationUnits.PARTS_PER_MILLION.multiply(UrbanSimulationUnits.TON), q.getUnit());
		assertEquals(200, q.getValue());
	}

	@Test
	void testkWhPerCubicMeter() {
58
		Quantity<?> q = Quantities.getQuantity((String)"5.2 kW*h/m³");
59
60
61
62
63
		assertEquals("[M]/([L]·[T]²)", q.getUnit().getDimension().toString(), "Wrong dimension!");
		assertEquals("187200000 W·s/m³", q.toSystemUnit().toString());
	}

}