1 package org.djunits.value.vdouble.matrix;
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 DoubleMatrixUtilTest
35 {
36
37
38
39
40 @Test
41 public final void instantiateTest() throws ValueException
42 {
43 double[][] a12 = new double[][] { { 1.0, 2.0 }, { 3.0, 4.0 } };
44 double[][] a1020 = new double[][] { { 10.0, 20.0 }, { 30.0, 40.0 } };
45 double[][] a12h = new double[][] { { 100.0, 200.0 }, { 300.0, 400.0 } };
46 double[][] a12k = new double[][] { { 1000.0, 2000.0 }, { 3000.0, 4000.0 } };
47 double[][] a12k10 = new double[][] { { 10000.0, 20000.0 }, { 30000.0, 40000.0 } };
48
49 DimensionlessMatrix dimensionless = DoubleMatrixUtil.instantiate(a1020, DimensionlessUnit.SI, StorageType.DENSE);
50 assertEquals("Dimensionless", 10.0, dimensionless.getSI(0, 0), 0.0001d);
51 dimensionless = DoubleMatrixUtil.instantiateSI(a1020, DimensionlessUnit.SI, StorageType.DENSE);
52 assertEquals("Dimensionless", 10.0, dimensionless.getSI(0, 0), 0.0001d);
53 assertSame("Dimensionless", DimensionlessUnit.SI, dimensionless.getUnit());
54
55 AccelerationMatrix acceleration = DoubleMatrixUtil.instantiate(a1020, AccelerationUnit.SI, StorageType.DENSE);
56 assertEquals("Acceleration", 10.0, acceleration.getSI(0, 0), 0.0001d);
57 acceleration = DoubleMatrixUtil.instantiate(new double[][] { { 12960.0, 10.0 }, { 30.0, 40.0 } },
58 AccelerationUnit.KM_PER_HOUR_2, StorageType.DENSE);
59 assertEquals("Acceleration", 1.0, acceleration.getSI(0, 0), 0.001d);
60 acceleration = DoubleMatrixUtil.instantiateSI(a1020, AccelerationUnit.KM_PER_HOUR_2, StorageType.DENSE);
61 assertEquals("Acceleration", 10.0, acceleration.getSI(0, 0), 0.0001d);
62 assertSame("Acceleration", AccelerationUnit.KM_PER_HOUR_2, acceleration.getUnit());
63
64 AngleSolidMatrix angleSolid = DoubleMatrixUtil.instantiate(a1020, AngleSolidUnit.SI, StorageType.DENSE);
65 assertEquals("AngleSolid", 10.0, angleSolid.getSI(0, 0), 0.0001d);
66 angleSolid = DoubleMatrixUtil.instantiate(a12, AngleSolidUnit.SQUARE_DEGREE, StorageType.DENSE);
67 assertEquals("AngleSolid", (Math.PI / 180.0) * (Math.PI / 180.0), angleSolid.getSI(0, 0), 0.001d);
68 angleSolid = DoubleMatrixUtil.instantiateSI(a1020, AngleSolidUnit.SQUARE_DEGREE, StorageType.DENSE);
69 assertEquals("AngleSolid", 10.0, angleSolid.getSI(0, 0), 0.0001d);
70 assertSame("AngleSolid", AngleSolidUnit.SQUARE_DEGREE, angleSolid.getUnit());
71
72 AngleMatrix angle = DoubleMatrixUtil.instantiate(a1020, AngleUnit.SI, StorageType.DENSE);
73 assertEquals("Angle", 10.0, angle.getSI(0, 0), 0.0001d);
74 angle = DoubleMatrixUtil.instantiate(a12, AngleUnit.DEGREE, StorageType.DENSE);
75 assertEquals("Angle", Math.PI / 180.0, angle.getSI(0, 0), 0.001d);
76 angle = DoubleMatrixUtil.instantiateSI(a1020, AngleUnit.DEGREE, StorageType.DENSE);
77 assertEquals("Angle", 10.0, angle.getSI(0, 0), 0.0001d);
78 assertSame("Angle", AngleUnit.DEGREE, angle.getUnit());
79
80 DirectionMatrix direction = DoubleMatrixUtil.instantiate(a1020, DirectionUnit.BASE, StorageType.DENSE);
81 assertEquals("Direction", 10.0, direction.getSI(0, 0), 0.0001d);
82 direction = DoubleMatrixUtil.instantiate(a12, DirectionUnit.NORTH_DEGREE, StorageType.DENSE);
83 assertEquals("Direction", Math.PI / 180.0, direction.getSI(0, 0), 0.001d);
84 direction = DoubleMatrixUtil.instantiateSI(a1020, DirectionUnit.NORTH_DEGREE, StorageType.DENSE);
85 assertEquals("Direction", 10.0, direction.getSI(0, 0), 0.0001d);
86 assertSame("Direction", DirectionUnit.NORTH_DEGREE, direction.getUnit());
87
88 AreaMatrix area = DoubleMatrixUtil.instantiate(a1020, AreaUnit.SI, StorageType.DENSE);
89 assertEquals("Area", 10.0, area.getSI(0, 0), 0.0001d);
90 area = DoubleMatrixUtil.instantiate(a12, AreaUnit.HECTARE, StorageType.DENSE);
91 assertEquals("Area", 10000.0, area.getSI(0, 0), 0.001d);
92 area = DoubleMatrixUtil.instantiateSI(a1020, AreaUnit.HECTARE, StorageType.DENSE);
93 assertEquals("Area", 10.0, area.getSI(0, 0), 0.0001d);
94 assertSame("Area", AreaUnit.HECTARE, area.getUnit());
95
96
97
98 MoneyMatrix money = DoubleMatrixUtil.instantiate(a1020, MoneyUnit.USD, StorageType.DENSE);
99 assertEquals("Money", 10.0, money.getSI(0, 0), 0.0001d);
100 money = DoubleMatrixUtil.instantiate(a12h, MoneyUnit.EUR, StorageType.DENSE);
101 assertEquals("Money", 100.0, money.getSI(0, 0), 0.001d);
102 money = DoubleMatrixUtil.instantiateSI(a1020, MoneyUnit.EUR, StorageType.DENSE);
103 assertEquals("Money", 10.0, money.getSI(0, 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 MoneyPerAreaMatrix moneyPerArea = DoubleMatrixUtil.instantiate(a1020, unitUSDm2, StorageType.DENSE);
109 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0, 0), 0.0001d);
110 moneyPerArea = DoubleMatrixUtil.instantiate(a12k10, unitEURha, StorageType.DENSE);
111 assertEquals("MoneyPerArea", 1.0, moneyPerArea.getSI(0, 0), 0.001d);
112 moneyPerArea = DoubleMatrixUtil.instantiateSI(a1020, unitEURha, StorageType.DENSE);
113 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0, 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 MoneyPerEnergyMatrix moneyPerEnergy = DoubleMatrixUtil.instantiate(a1020, unitUSDJ, StorageType.DENSE);
119 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0, 0), 0.0001d);
120 moneyPerEnergy = DoubleMatrixUtil.instantiate(a12k, unitEURKJ, StorageType.DENSE);
121 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.getSI(0, 0), 0.001d);
122 moneyPerEnergy = DoubleMatrixUtil.instantiateSI(a1020, unitEURKJ, StorageType.DENSE);
123 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0, 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 }, { 3.0, 4.0 } };
136 double[][] a1020 = new double[][] { { 10.0, 20.0 }, { 30.0, 40.0 } };
137 double[][] a12h = new double[][] { { 100.0, 200.0 }, { 300.0, 400.0 } };
138 double[][] a12k = new double[][] { { 1000.0, 2000.0 }, { 3000.0, 4000.0 } };
139 double[][] a12k10 = new double[][] { { 10000.0, 20000.0 }, { 30000.0, 40000.0 } };
140
141 Unit<?> unitSI = LengthUnit.SI;
142 Unit<?> unitKM = LengthUnit.KILOMETER;
143 LengthMatrix length = DoubleMatrixUtil.instantiateAnonymous(a1020, unitSI, StorageType.DENSE);
144 assertEquals("Length", 10.0, length.getSI(0, 0), 0.0001d);
145 length = DoubleMatrixUtil.instantiateAnonymous(a12, unitKM, StorageType.DENSE);
146 assertEquals("Length", 1000.0, length.getSI(0, 0), 0.001d);
147 length = DoubleMatrixUtil.instantiateAnonymousSI(a1020, unitKM, StorageType.DENSE);
148 assertEquals("Length", 10.0, length.getSI(0, 0), 0.0001d);
149 assertSame("Length", unitKM, length.getUnit());
150
151
152
153 Unit<?> unitUSD = MoneyUnit.USD;
154 Unit<?> unitEUR = MoneyUnit.EUR;
155 MoneyMatrix money = DoubleMatrixUtil.instantiateAnonymous(a1020, unitUSD, StorageType.DENSE);
156 assertEquals("Money", 10.0, money.getSI(0, 0), 0.0001d);
157 money = DoubleMatrixUtil.instantiateAnonymous(a12h, unitEUR, StorageType.DENSE);
158 assertEquals("Money", 100.0, money.getSI(0, 0), 0.001d);
159 money = DoubleMatrixUtil.instantiateAnonymousSI(a1020, unitEUR, StorageType.DENSE);
160 assertEquals("Money", 10.0, money.getSI(0, 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 MoneyPerAreaMatrix moneyPerArea = DoubleMatrixUtil.instantiateAnonymous(a1020, unitUSDm2, StorageType.DENSE);
166 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0, 0), 0.0001d);
167 moneyPerArea = DoubleMatrixUtil.instantiateAnonymous(a12k10, unitEURha, StorageType.DENSE);
168 assertEquals("MoneyPerArea", 1.0, moneyPerArea.getSI(0, 0), 0.001d);
169 moneyPerArea = DoubleMatrixUtil.instantiateAnonymousSI(a1020, unitEURha, StorageType.DENSE);
170 assertEquals("MoneyPerArea", 10.0, moneyPerArea.getSI(0, 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 MoneyPerEnergyMatrix moneyPerEnergy = DoubleMatrixUtil.instantiateAnonymous(a1020, unitUSDJ, StorageType.DENSE);
176 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0, 0), 0.0001d);
177 moneyPerEnergy = DoubleMatrixUtil.instantiateAnonymous(a12k, unitEURKJ, StorageType.DENSE);
178 assertEquals("MoneyPerEnerg", 1.0, moneyPerEnergy.getSI(0, 0), 0.001d);
179 moneyPerEnergy = DoubleMatrixUtil.instantiateAnonymousSI(a1020, unitEURKJ, StorageType.DENSE);
180 assertEquals("MoneyPerEnerg", 10.0, moneyPerEnergy.getSI(0, 0), 0.0001d);
181 assertSame("MoneyPerEnerg", unitEURKJ, moneyPerEnergy.getUnit());
182
183 }
184 }