1 package org.djunits.value.vdouble.scalar;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertSame;
5
6 import org.djunits.unit.AccelerationUnit;
7 import org.djunits.unit.AngleSolidUnit;
8 import org.djunits.unit.AngleUnit;
9 import org.djunits.unit.AreaUnit;
10 import org.djunits.unit.DimensionlessUnit;
11 import org.djunits.unit.DirectionUnit;
12 import org.djunits.unit.EnergyUnit;
13 import org.djunits.unit.LengthUnit;
14 import org.djunits.unit.MoneyPerAreaUnit;
15 import org.djunits.unit.MoneyPerEnergyUnit;
16 import org.djunits.unit.MoneyPerLengthUnit;
17 import org.djunits.unit.MoneyUnit;
18 import org.djunits.unit.Unit;
19 import org.junit.Test;
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class DoubleScalarUtilTest
34 {
35
36
37
38 @Test
39 public final void instantiateTest()
40 {
41 Dimensionless dimensionless = DoubleScalarUtil.instantiate(10.0, DimensionlessUnit.SI);
42 assertEquals("Dimensionless", 10.0, dimensionless.si, 0.0001d);
43 dimensionless = DoubleScalarUtil.instantiateSI(10.0, DimensionlessUnit.SI);
44 assertEquals("Dimensionless", 10.0, dimensionless.si, 0.0001d);
45 assertSame("Dimensionless", DimensionlessUnit.SI, dimensionless.getUnit());
46
47 Acceleration acceleration = DoubleScalarUtil.instantiate(10.0, AccelerationUnit.SI);
48 assertEquals("Acceleration", 10.0, acceleration.si, 0.0001d);
49 acceleration = DoubleScalarUtil.instantiate(12960.0, AccelerationUnit.KM_PER_HOUR_2);
50 assertEquals("Acceleration", 1.0, acceleration.si, 0.001d);
51 acceleration = DoubleScalarUtil.instantiateSI(10.0, AccelerationUnit.KM_PER_HOUR_2);
52 assertEquals("Acceleration", 10.0, acceleration.si, 0.0001d);
53 assertSame("Acceleration", AccelerationUnit.KM_PER_HOUR_2, acceleration.getUnit());
54
55 AngleSolid angleSolid = DoubleScalarUtil.instantiate(10.0, AngleSolidUnit.SI);
56 assertEquals("AngleSolid", 10.0, angleSolid.si, 0.0001d);
57 angleSolid = DoubleScalarUtil.instantiate(1.0, AngleSolidUnit.SQUARE_DEGREE);
58 assertEquals("AngleSolid", (Math.PI / 180.0) * (Math.PI / 180.0), angleSolid.si, 0.001d);
59 angleSolid = DoubleScalarUtil.instantiateSI(10.0, AngleSolidUnit.SQUARE_DEGREE);
60 assertEquals("AngleSolid", 10.0, angleSolid.si, 0.0001d);
61 assertSame("AngleSolid", AngleSolidUnit.SQUARE_DEGREE, angleSolid.getUnit());
62
63 Angle angle = DoubleScalarUtil.instantiate(10.0, AngleUnit.SI);
64 assertEquals("Angle", 10.0, angle.si, 0.0001d);
65 angle = DoubleScalarUtil.instantiate(1.0, AngleUnit.DEGREE);
66 assertEquals("Angle", Math.PI / 180.0, angle.si, 0.001d);
67 angle = DoubleScalarUtil.instantiateSI(10.0, AngleUnit.DEGREE);
68 assertEquals("Angle", 10.0, angle.si, 0.0001d);
69 assertSame("Angle", AngleUnit.DEGREE, angle.getUnit());
70
71 Direction direction = DoubleScalarUtil.instantiate(10.0, DirectionUnit.BASE);
72 assertEquals("Direction", 10.0, direction.si, 0.0001d);
73 direction = DoubleScalarUtil.instantiate(1.0, DirectionUnit.NORTH_DEGREE);
74 assertEquals("Direction", Math.PI / 180.0, direction.si, 0.001d);
75 direction = DoubleScalarUtil.instantiateSI(10.0, DirectionUnit.NORTH_DEGREE);
76 assertEquals("Direction", 10.0, direction.si, 0.0001d);
77 assertSame("Direction", DirectionUnit.NORTH_DEGREE, direction.getUnit());
78
79 Area area = DoubleScalarUtil.instantiate(10.0, AreaUnit.SI);
80 assertEquals("Area", 10.0, area.si, 0.0001d);
81 area = DoubleScalarUtil.instantiate(1.0, AreaUnit.HECTARE);
82 assertEquals("Area", 10000.0, area.si, 0.001d);
83 area = DoubleScalarUtil.instantiateSI(10.0, AreaUnit.HECTARE);
84 assertEquals("Area", 10.0, area.si, 0.0001d);
85 assertSame("Area", AreaUnit.HECTARE, area.getUnit());
86
87
88
89
90 Money money = DoubleScalarUtil.instantiate(10.0, MoneyUnit.USD);
91 assertEquals("Money", 10.0, money.si, 0.0001d);
92 money = DoubleScalarUtil.instantiate(100.0, MoneyUnit.EUR);
93 assertEquals("Money", 100.0, money.si, 0.001d);
94 money = DoubleScalarUtil.instantiateSI(10.0, MoneyUnit.EUR);
95 assertEquals("Money", 10.0, money.si, 0.0001d);
96 assertSame("Money", MoneyUnit.EUR, money.getUnit());
97
98 MoneyPerAreaUnit unitUSDm2 = new MoneyPerAreaUnit(MoneyUnit.USD, AreaUnit.SQUARE_METER, "USD/m2", "$/m2");
99 MoneyPerAreaUnit unitEURha = new MoneyPerAreaUnit(MoneyUnit.EUR, AreaUnit.HECTARE, "EUR/ha", "EUR/ha");
100 MoneyPerArea moneyPerArea = DoubleScalarUtil.instantiate(10.0, unitUSDm2);
101 assertEquals("MoneyPerArea", 10.0, moneyPerArea.si, 0.0001d);
102 moneyPerArea = DoubleScalarUtil.instantiate(10000.0, unitEURha);
103 assertEquals("MoneyPerArea", 1.0, moneyPerArea.si, 0.001d);
104 moneyPerArea = DoubleScalarUtil.instantiateSI(10.0, unitEURha);
105 assertEquals("MoneyPerArea", 10.0, moneyPerArea.si, 0.0001d);
106 assertSame("MoneyPerArea", unitEURha, moneyPerArea.getUnit());
107
108 MoneyPerEnergyUnit unitUSDJ = new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.JOULE, "USD/J", "$/J");
109 MoneyPerEnergyUnit unitEURKJ = new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.KILOJOULE, "EUR/MWh", "EUR/KJ");
110 MoneyPerEnergy moneyPerEnergy = DoubleScalarUtil.instantiate(10.0, unitUSDJ);
111 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.si, 0.0001d);
112 moneyPerEnergy = DoubleScalarUtil.instantiate(1000.0, unitEURKJ);
113 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.si, 0.001d);
114 moneyPerEnergy = DoubleScalarUtil.instantiateSI(10.0, unitEURKJ);
115 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.si, 0.0001d);
116 assertSame("MoneyPerEnerg", unitEURKJ, moneyPerEnergy.getUnit());
117
118 }
119
120
121
122
123 @Test
124 public final void anonymousUnitTest()
125 {
126 Unit<?> unitSI = LengthUnit.SI;
127 Unit<?> unitKM = LengthUnit.KILOMETER;
128 Length length = DoubleScalarUtil.instantiateAnonymous(10.0, unitSI);
129 assertEquals("Length", 10.0, length.si, 0.0001d);
130 length = DoubleScalarUtil.instantiateAnonymous(1.0, unitKM);
131 assertEquals("Length", 1000.0, length.si, 0.001d);
132 length = DoubleScalarUtil.instantiateAnonymousSI(10.0, unitKM);
133 assertEquals("Length", 10.0, length.si, 0.0001d);
134 assertSame("Length", unitKM, length.getUnit());
135
136
137
138 Unit<?> unitUSD = MoneyUnit.USD;
139 Unit<?> unitEUR = MoneyUnit.EUR;
140 Money money = DoubleScalarUtil.instantiateAnonymous(10.0, unitUSD);
141 assertEquals("Money", 10.0, money.si, 0.0001d);
142 money = DoubleScalarUtil.instantiateAnonymous(100.0, unitEUR);
143 assertEquals("Money", 100.0, money.si, 0.001d);
144 money = DoubleScalarUtil.instantiateAnonymousSI(10.0, unitEUR);
145 assertEquals("Money", 10.0, money.si, 0.0001d);
146 assertSame("Money", unitEUR, money.getUnit());
147
148 Unit<?> unitUSDm2 = new MoneyPerAreaUnit(MoneyUnit.USD, AreaUnit.SQUARE_METER, "USD/m2", "$/m2");
149 Unit<?> unitEURha = new MoneyPerAreaUnit(MoneyUnit.EUR, AreaUnit.HECTARE, "EUR/ha", "EUR/ha");
150 MoneyPerArea moneyPerArea = DoubleScalarUtil.instantiateAnonymous(10.0, unitUSDm2);
151 assertEquals("MoneyPerArea", 10.0, moneyPerArea.si, 0.0001d);
152 moneyPerArea = DoubleScalarUtil.instantiateAnonymous(10000.0, unitEURha);
153 assertEquals("MoneyPerArea", 1.0, moneyPerArea.si, 0.001d);
154 moneyPerArea = DoubleScalarUtil.instantiateAnonymousSI(10.0, unitEURha);
155 assertEquals("MoneyPerArea", 10.0, moneyPerArea.si, 0.0001d);
156 assertSame("MoneyPerArea", unitEURha, moneyPerArea.getUnit());
157
158 Unit<?> unitUSDJ = new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.JOULE, "USD/J", "$/J");
159 Unit<?> unitEURKJ = new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.KILOJOULE, "EUR/MWh", "EUR/KJ");
160 MoneyPerEnergy moneyPerEnergy = DoubleScalarUtil.instantiateAnonymous(10.0, unitUSDJ);
161 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.si, 0.0001d);
162 moneyPerEnergy = DoubleScalarUtil.instantiateAnonymous(1000.0, unitEURKJ);
163 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.si, 0.001d);
164 moneyPerEnergy = DoubleScalarUtil.instantiateAnonymousSI(10.0, unitEURKJ);
165 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.si, 0.0001d);
166 assertSame("MoneyPerEnerg", unitEURKJ, moneyPerEnergy.getUnit());
167
168 }
169 }
170