View Javadoc
1   package org.opentrafficsim.xml.bindings;
2   
3   import static org.junit.Assert.assertEquals;
4   
5   import javax.xml.bind.JAXBException;
6   
7   import org.djunits.unit.LengthUnit;
8   import org.djunits.value.vdouble.scalar.Length;
9   import org.djutils.exceptions.Try;
10  import org.junit.Test;
11  
12  /**
13   * LengthAdapterTest for Length and SignedLength. <br>
14   * <br>
15   * Copyright (c) 2003-2022 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See
16   * for project information <a href="https://www.simulation.tudelft.nl/" target="_blank">www.simulation.tudelft.nl</a>. The
17   * source code and binary code of this software is proprietary information of Delft University of Technology.
18   * @author <a href="https://www.tudelft.nl/averbraeck" target="_blank">Alexander Verbraeck</a>
19   */
20  public class LengthAdapterTest
21  {
22      /** the allowed units. */
23      LengthUnit[] units = new LengthUnit[] {LengthUnit.MILLIMETER, LengthUnit.CENTIMETER, LengthUnit.DECIMETER, LengthUnit.METER,
24              LengthUnit.DECAMETER, LengthUnit.HECTOMETER, LengthUnit.KILOMETER, LengthUnit.MILE, LengthUnit.YARD,
25              LengthUnit.FOOT};
26  
27      /** the corresponding strings. */
28      String[] unitStrings = new String[] {"mm", "cm", "dm", "m", "dam", "hm", "km", "mi", "yd", "ft"};
29  
30      /**
31       * Test the SignedLengthAdapter
32       */
33      @Test
34      public void testSignedLengthAdapter() throws JAXBException
35      {
36          LengthAdapter lengthAdapter = new LengthAdapter();
37  
38          for (int i = 0; i < this.units.length; i++)
39          {
40              final LengthUnit unit = this.units[i];
41              final String us = this.unitStrings[i];
42  
43              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("2.3 " + us));
44              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("+2.3 " + us));
45              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("2.3" + us));
46              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("+2.3" + us));
47              assertEquals(new Length(-2.3, unit), lengthAdapter.unmarshal("-2.3 " + us));
48              assertEquals(new Length(-2.3, unit), lengthAdapter.unmarshal("-2.3" + us));
49  
50              assertEquals("2.3 " + us, lengthAdapter.marshal(new Length(2.3, unit)));
51              assertEquals("-2.3 " + us, lengthAdapter.marshal(new Length(-2.3, unit)));
52  
53              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("0.0 " + us));
54              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("+0.0 " + us));
55              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("0.0" + us));
56              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("+0.0" + us));
57              assertEquals(new Length(-0.0, unit), lengthAdapter.unmarshal("-0.0 " + us));
58              assertEquals(new Length(-0.0, unit), lengthAdapter.unmarshal("-0.0" + us));
59  
60              assertEquals("0.0 " + us, lengthAdapter.marshal(new Length(0.0, unit)));
61              assertEquals("-0.0 " + us, lengthAdapter.marshal(new Length(-0.0, unit)));
62          }
63      }
64  
65      /**
66       * Test the LengthAdapter
67       */
68      // TODO: Repair @Test
69      public void testLengthAdapter() throws JAXBException
70      {
71          PositiveLengthAdapter lengthAdapter = new PositiveLengthAdapter();
72  
73          for (int i = 0; i < this.units.length; i++)
74          {
75              final LengthUnit unit = this.units[i];
76              final String us = this.unitStrings[i];
77  
78              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("2.3 " + us));
79              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("+2.3 " + us));
80              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("2.3" + us));
81              assertEquals(new Length(2.3, unit), lengthAdapter.unmarshal("+2.3" + us));
82              Try.testFail(() -> lengthAdapter.unmarshal("-2.3 " + us));
83              Try.testFail(() -> lengthAdapter.unmarshal("-2.3" + us));
84  
85              assertEquals("2.3 " + us, lengthAdapter.marshal(new Length(2.3, unit)));
86              Try.testFail(() -> lengthAdapter.marshal(new Length(-2.3, unit)));
87  
88              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("0.0 " + us));
89              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("+0.0 " + us));
90              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("0.0" + us));
91              assertEquals(new Length(0.0, unit), lengthAdapter.unmarshal("+0.0" + us));
92              Try.testFail(() -> lengthAdapter.unmarshal("-0.0 " + us));
93              Try.testFail(() -> lengthAdapter.unmarshal("-0.0" + us));
94  
95              assertEquals("0.0 " + us, lengthAdapter.marshal(new Length(0.0, unit)));
96              Try.testFail(() -> lengthAdapter.marshal(new Length(-0.0, unit)));
97          }
98      }
99  
100 }