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