1 package org.djunits.value.vdouble.vector;
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.djunits.value.StorageType;
19 import org.djunits.value.ValueException;
20 import org.junit.Test;
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class DoubleVectorUtilTest
35 {
36
37
38
39
40 @Test
41 public final void instantiateTest() throws ValueException
42 {
43 double[] a12 = new double[] { 1.0, 2.0 };
44 double[] a1020 = new double[] { 10.0, 20.0 };
45 double[] a12h = new double[] { 100.0, 200.0 };
46 double[] a12k = new double[] { 1000.0, 2000.0 };
47 double[] a12k10 = new double[] { 10000.0, 20000.0 };
48
49 DimensionlessVector dimensionless = DoubleVectorUtil.instantiate(a1020, DimensionlessUnit.SI, StorageType.DENSE);
50 assertEquals("Dimensionless", 10.0, dimensionless.getSI(0), 0.0001d);
51 dimensionless = DoubleVectorUtil.instantiateSI(a1020, DimensionlessUnit.SI, StorageType.DENSE);
52 assertEquals("Dimensionless", 10.0, dimensionless.getSI(0), 0.0001d);
53 assertSame("Dimensionless", DimensionlessUnit.SI, dimensionless.getUnit());
54
55 AccelerationVector acceleration = DoubleVectorUtil.instantiate(a1020, AccelerationUnit.SI, StorageType.DENSE);
56 assertEquals("Acceleration", 10.0, acceleration.getSI(0), 0.0001d);
57 acceleration =
58 DoubleVectorUtil.instantiate(new double[] { 12960.0, 10.0 }, AccelerationUnit.KM_PER_HOUR_2, StorageType.DENSE);
59 assertEquals("Acceleration", 1.0, acceleration.getSI(0), 0.001d);
60 acceleration = DoubleVectorUtil.instantiateSI(a1020, AccelerationUnit.KM_PER_HOUR_2, StorageType.DENSE);
61 assertEquals("Acceleration", 10.0, acceleration.getSI(0), 0.0001d);
62 assertSame("Acceleration", AccelerationUnit.KM_PER_HOUR_2, acceleration.getUnit());
63
64 AngleSolidVector angleSolid = DoubleVectorUtil.instantiate(a1020, AngleSolidUnit.SI, StorageType.DENSE);
65 assertEquals("AngleSolid", 10.0, angleSolid.getSI(0), 0.0001d);
66 angleSolid = DoubleVectorUtil.instantiate(a12, AngleSolidUnit.SQUARE_DEGREE, StorageType.DENSE);
67 assertEquals("AngleSolid", (Math.PI / 180.0) * (Math.PI / 180.0), angleSolid.getSI(0), 0.001d);
68 angleSolid = DoubleVectorUtil.instantiateSI(a1020, AngleSolidUnit.SQUARE_DEGREE, StorageType.DENSE);
69 assertEquals("AngleSolid", 10.0, angleSolid.getSI(0), 0.0001d);
70 assertSame("AngleSolid", AngleSolidUnit.SQUARE_DEGREE, angleSolid.getUnit());
71
72 AngleVector angle = DoubleVectorUtil.instantiate(a1020, AngleUnit.SI, StorageType.DENSE);
73 assertEquals("Angle", 10.0, angle.getSI(0), 0.0001d);
74 angle = DoubleVectorUtil.instantiate(a12, AngleUnit.DEGREE, StorageType.DENSE);
75 assertEquals("Angle", Math.PI / 180.0, angle.getSI(0), 0.001d);
76 angle = DoubleVectorUtil.instantiateSI(a1020, AngleUnit.DEGREE, StorageType.DENSE);
77 assertEquals("Angle", 10.0, angle.getSI(0), 0.0001d);
78 assertSame("Angle", AngleUnit.DEGREE, angle.getUnit());
79
80 DirectionVector direction = DoubleVectorUtil.instantiate(a1020, DirectionUnit.BASE, StorageType.DENSE);
81 assertEquals("Direction", 10.0, direction.getSI(0), 0.0001d);
82 direction = DoubleVectorUtil.instantiate(a12, DirectionUnit.NORTH_DEGREE, StorageType.DENSE);
83 assertEquals("Direction", Math.PI / 180.0, direction.getSI(0), 0.001d);
84 direction = DoubleVectorUtil.instantiateSI(a1020, DirectionUnit.NORTH_DEGREE, StorageType.DENSE);
85 assertEquals("Direction", 10.0, direction.getSI(0), 0.0001d);
86 assertSame("Direction", DirectionUnit.NORTH_DEGREE, direction.getUnit());
87
88 AreaVector area = DoubleVectorUtil.instantiate(a1020, AreaUnit.SI, StorageType.DENSE);
89 assertEquals("Area", 10.0, area.getSI(0), 0.0001d);
90 area = DoubleVectorUtil.instantiate(a12, AreaUnit.HECTARE, StorageType.DENSE);
91 assertEquals("Area", 10000.0, area.getSI(0), 0.001d);
92 area = DoubleVectorUtil.instantiateSI(a1020, AreaUnit.HECTARE, StorageType.DENSE);
93 assertEquals("Area", 10.0, area.getSI(0), 0.0001d);
94 assertSame("Area", AreaUnit.HECTARE, area.getUnit());
95
96
97
98 MoneyVector money = DoubleVectorUtil.instantiate(a1020, MoneyUnit.USD, StorageType.DENSE);
99 assertEquals("Money", 10.0, money.getSI(0), 0.0001d);
100 money = DoubleVectorUtil.instantiate(a12h, MoneyUnit.EUR, StorageType.DENSE);
101 assertEquals("Money", 100.0, money.getSI(0), 0.001d);
102 money = DoubleVectorUtil.instantiateSI(a1020, MoneyUnit.EUR, StorageType.DENSE);
103 assertEquals("Money", 10.0, money.getSI(0), 0.0001d);
104 assertSame("Money", MoneyUnit.EUR, money.getUnit());
105
106 MoneyPerAreaUnit unitUSDm2 = new MoneyPerAreaUnit(MoneyUnit.USD, AreaUnit.SQUARE_METER, "USD/m2", "$/m2");
107 MoneyPerAreaUnit unitEURha = new MoneyPerAreaUnit(MoneyUnit.EUR, AreaUnit.HECTARE, "EUR/ha", "EUR/ha");
108 MoneyPerAreaVector moneyPerArea = DoubleVectorUtil.instantiate(a1020, unitUSDm2, StorageType.DENSE);
109 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0), 0.0001d);
110 moneyPerArea = DoubleVectorUtil.instantiate(a12k10, unitEURha, StorageType.DENSE);
111 assertEquals("MoneyPerArea", 1.0, moneyPerArea.getSI(0), 0.001d);
112 moneyPerArea = DoubleVectorUtil.instantiateSI(a1020, unitEURha, StorageType.DENSE);
113 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0), 0.0001d);
114 assertSame("MoneyPerArea", unitEURha, moneyPerArea.getUnit());
115
116 MoneyPerEnergyUnit unitUSDJ = new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.JOULE, "USD/J", "$/J");
117 MoneyPerEnergyUnit unitEURKJ = new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.KILOJOULE, "EUR/MWh", "EUR/KJ");
118 MoneyPerEnergyVector moneyPerEnergy = DoubleVectorUtil.instantiate(a1020, unitUSDJ, StorageType.DENSE);
119 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0), 0.0001d);
120 moneyPerEnergy = DoubleVectorUtil.instantiate(a12k, unitEURKJ, StorageType.DENSE);
121 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.getSI(0), 0.001d);
122 moneyPerEnergy = DoubleVectorUtil.instantiateSI(a1020, unitEURKJ, StorageType.DENSE);
123 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0), 0.0001d);
124 assertSame("MoneyPerEnerg", unitEURKJ, moneyPerEnergy.getUnit());
125
126 }
127
128
129
130
131
132 @Test
133 public final void anonymousUnitTest() throws ValueException
134 {
135 double[] a12 = new double[] { 1.0, 2.0 };
136 double[] a1020 = new double[] { 10.0, 20.0 };
137 double[] a12h = new double[] { 100.0, 200.0 };
138 double[] a12k = new double[] { 1000.0, 2000.0 };
139 double[] a12k10 = new double[] { 10000.0, 20000.0 };
140
141 Unit<?> unitSI = LengthUnit.SI;
142 Unit<?> unitKM = LengthUnit.KILOMETER;
143 LengthVector length = DoubleVectorUtil.instantiateAnonymous(a1020, unitSI, StorageType.DENSE);
144 assertEquals("Length", 10.0, length.getSI(0), 0.0001d);
145 length = DoubleVectorUtil.instantiateAnonymous(a12, unitKM, StorageType.DENSE);
146 assertEquals("Length", 1000.0, length.getSI(0), 0.001d);
147 length = DoubleVectorUtil.instantiateAnonymousSI(a1020, unitKM, StorageType.DENSE);
148 assertEquals("Length", 10.0, length.getSI(0), 0.0001d);
149 assertSame("Length", unitKM, length.getUnit());
150
151
152
153 Unit<?> unitUSD = MoneyUnit.USD;
154 Unit<?> unitEUR = MoneyUnit.EUR;
155 MoneyVector money = DoubleVectorUtil.instantiateAnonymous(a1020, unitUSD, StorageType.DENSE);
156 assertEquals("Money", 10.0, money.getSI(0), 0.0001d);
157 money = DoubleVectorUtil.instantiateAnonymous(a12h, unitEUR, StorageType.DENSE);
158 assertEquals("Money", 100.0, money.getSI(0), 0.001d);
159 money = DoubleVectorUtil.instantiateAnonymousSI(a1020, unitEUR, StorageType.DENSE);
160 assertEquals("Money", 10.0, money.getSI(0), 0.0001d);
161 assertSame("Money", unitEUR, money.getUnit());
162
163 Unit<?> unitUSDm2 = new MoneyPerAreaUnit(MoneyUnit.USD, AreaUnit.SQUARE_METER, "USD/m2", "$/m2");
164 Unit<?> unitEURha = new MoneyPerAreaUnit(MoneyUnit.EUR, AreaUnit.HECTARE, "EUR/ha", "EUR/ha");
165 MoneyPerAreaVector moneyPerArea = DoubleVectorUtil.instantiateAnonymous(a1020, unitUSDm2, StorageType.DENSE);
166 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0), 0.0001d);
167 moneyPerArea = DoubleVectorUtil.instantiateAnonymous(a12k10, unitEURha, StorageType.DENSE);
168 assertEquals("MoneyPerArea", 1.0, moneyPerArea.getSI(0), 0.001d);
169 moneyPerArea = DoubleVectorUtil.instantiateAnonymousSI(a1020, unitEURha, StorageType.DENSE);
170 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0), 0.0001d);
171 assertSame("MoneyPerArea", unitEURha, moneyPerArea.getUnit());
172
173 Unit<?> unitUSDJ = new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.JOULE, "USD/J", "$/J");
174 Unit<?> unitEURKJ = new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.KILOJOULE, "EUR/MWh", "EUR/KJ");
175 MoneyPerEnergyVector moneyPerEnergy = DoubleVectorUtil.instantiateAnonymous(a1020, unitUSDJ, StorageType.DENSE);
176 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0), 0.0001d);
177 moneyPerEnergy = DoubleVectorUtil.instantiateAnonymous(a12k, unitEURKJ, StorageType.DENSE);
178 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.getSI(0), 0.001d);
179 moneyPerEnergy = DoubleVectorUtil.instantiateAnonymousSI(a1020, unitEURKJ, StorageType.DENSE);
180 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0), 0.0001d);
181 assertSame("MoneyPerEnerg", unitEURKJ, moneyPerEnergy.getUnit());
182
183 }
184 }