View Javadoc
1   package org.djunits.value.vdouble.scalar;
2   
3   import static org.junit.Assert.assertEquals;
4   
5   import org.djunits.unit.AccelerationUnit;
6   import org.djunits.unit.AngleUnit;
7   import org.djunits.unit.AreaUnit;
8   import org.djunits.unit.DimensionlessUnit;
9   import org.djunits.unit.DirectionUnit;
10  import org.djunits.unit.LengthUnit;
11  import org.djunits.unit.SolidAngleUnit;
12  import org.djunits.unit.Unit;
13  import org.djunits.value.vdouble.scalar.base.DoubleScalar;
14  import org.junit.Test;
15  
16  /**
17   * Test the instantiation utility functions.
18   * <p>
19   * Copyright (c) 2013-2017 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
20   * BSD-style license. See <a href="https://opentrafficsim.org/docs/current/license.html">OpenTrafficSim License</a>.
21   * </p>
22   * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
23   * @author <a href="https://www.tudelft.nl/staff/p.knoppers/">Peter Knoppers</a>
24   * @author <a href="https://www.transport.citg.tudelft.nl">Wouter Schakel</a>
25   */
26  public class DoubleScalarInstantiateTest
27  {
28      /**
29       * Test the instantiation utility function of classes.
30       */
31      @Test
32      public final void instantiateTest()
33      {
34          Dimensionless dimensionless = DoubleScalar.instantiate(10.0, DimensionlessUnit.SI);
35          assertEquals("Dimensionless", 10.0, dimensionless.getSI(), 0.0001d);
36  
37          Acceleration acceleration = DoubleScalar.instantiate(10.0, AccelerationUnit.SI);
38          assertEquals("Acceleration", 10.0, acceleration.getSI(), 0.0001d);
39          acceleration = DoubleScalar.instantiate(12960.0, AccelerationUnit.KM_PER_HOUR_2);
40          assertEquals("Acceleration", 1.0, acceleration.getSI(), 0.001d);
41  
42          SolidAngle angleSolid = DoubleScalar.instantiate(10.0, SolidAngleUnit.SI);
43          assertEquals("SolidAngle", 10.0, angleSolid.getSI(), 0.0001d);
44          angleSolid = DoubleScalar.instantiate(1.0, SolidAngleUnit.SQUARE_DEGREE);
45          assertEquals("SolidAngle", (Math.PI / 180.0) * (Math.PI / 180.0), angleSolid.getSI(), 0.001d);
46  
47          Angle angle = DoubleScalar.instantiate(10.0, AngleUnit.SI);
48          assertEquals("Angle", 10.0, angle.getSI(), 0.0001d);
49          angle = DoubleScalar.instantiate(1.0, AngleUnit.DEGREE);
50          assertEquals("Angle", Math.PI / 180.0, angle.getSI(), 0.001d);
51  
52          Direction direction = DoubleScalar.instantiate(10.0, DirectionUnit.DEFAULT);
53          assertEquals("Direction", 10.0, direction.getSI(), 0.0001d);
54          direction = DoubleScalar.instantiate(1.0, DirectionUnit.EAST_DEGREE);
55          assertEquals("Direction", Math.PI / 180.0, direction.getSI(), 0.001d);
56  
57          Area area = DoubleScalar.instantiate(10.0, AreaUnit.SI);
58          assertEquals("Area", 10.0, area.getSI(), 0.0001d);
59          area = DoubleScalar.instantiate(1.0, AreaUnit.HECTARE);
60          assertEquals("Area", 10000.0, area.getSI(), 0.001d);
61  
62          // TODO: other base units
63  
64      }
65  
66      /**
67       * Test the instantiation utility function of classes for anonymous units, also for the compiler.
68       */
69      @Test
70      public final void anonymousUnitTest()
71      {
72          Unit<?> unitSI = LengthUnit.SI;
73          Unit<?> unitKM = LengthUnit.KILOMETER;
74          Length length = DoubleScalar.instantiateAnonymous(10.0, unitSI);
75          assertEquals("Length", 10.0, length.getSI(), 0.0001d);
76          length = DoubleScalar.instantiateAnonymous(1.0, unitKM);
77          assertEquals("Length", 1000.0, length.getSI(), 0.001d);
78  
79          // TODO: other base units
80  
81      }
82  }