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.opentrafficsim.xml.bindings.types.LengthBeginEnd;
11  
12  /**
13   * LengthBeginEndAdapterTest for LengthBeginEnd. <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 LengthBeginEndAdapterTest
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 LengthBeginEndAdapter
32       */
33      // TODO: repair @Test
34      public void testLengthBeginEndAdapter() throws JAXBException
35      {
36          LengthBeginEndAdapter lbeAdapter = new LengthBeginEndAdapter();
37  
38          LengthBeginEnd lbeBegin = new LengthBeginEnd(true, Length.ZERO);
39          LengthBeginEnd lbeEnd = new LengthBeginEnd(false, Length.ZERO);
40  
41          assertEquals(lbeBegin, lbeAdapter.unmarshal("BEGIN"));
42          assertEquals(lbeEnd, lbeAdapter.unmarshal("END"));
43  
44          assertEquals("BEGIN", lbeAdapter.marshal(lbeBegin));
45          assertEquals("END", lbeAdapter.marshal(lbeEnd));
46  
47          LengthBeginEnd lbeFraction00 = new LengthBeginEnd(0.0);
48          LengthBeginEnd lbeFraction05 = new LengthBeginEnd(0.5);
49          LengthBeginEnd lbeFraction10 = new LengthBeginEnd(1.0);
50  
51          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.0"));
52          assertEquals(lbeFraction00, lbeAdapter.unmarshal(".0"));
53          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0"));
54          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.00"));
55  
56          assertEquals(lbeFraction05, lbeAdapter.unmarshal("0.5"));
57          assertEquals(lbeFraction05, lbeAdapter.unmarshal(".5"));
58          assertEquals(lbeFraction05, lbeAdapter.unmarshal("0.50"));
59  
60          assertEquals(lbeFraction10, lbeAdapter.unmarshal("1.0"));
61          assertEquals(lbeFraction10, lbeAdapter.unmarshal("1"));
62          assertEquals(lbeFraction10, lbeAdapter.unmarshal("1.00"));
63  
64          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.0%"));
65          assertEquals(lbeFraction00, lbeAdapter.unmarshal(".0%"));
66          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0%"));
67          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.00%"));
68  
69          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.0 %"));
70          assertEquals(lbeFraction00, lbeAdapter.unmarshal(".0 %"));
71          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0 %"));
72          assertEquals(lbeFraction00, lbeAdapter.unmarshal("0.00 %"));
73  
74          assertEquals(lbeFraction05, lbeAdapter.unmarshal("50%"));
75          assertEquals(lbeFraction05, lbeAdapter.unmarshal("50.0%"));
76  
77          assertEquals(lbeFraction05, lbeAdapter.unmarshal("50 %"));
78          assertEquals(lbeFraction05, lbeAdapter.unmarshal("50.0 %"));
79  
80          assertEquals(lbeFraction10, lbeAdapter.unmarshal("100%"));
81          assertEquals(lbeFraction10, lbeAdapter.unmarshal("100.0%"));
82  
83          assertEquals(lbeFraction10, lbeAdapter.unmarshal("100 %"));
84          assertEquals(lbeFraction10, lbeAdapter.unmarshal("100.0 %"));
85  
86          assertEquals("0.0", lbeAdapter.marshal(lbeFraction00));
87          assertEquals("0.5", lbeAdapter.marshal(lbeFraction05));
88          assertEquals("1.0", lbeAdapter.marshal(lbeFraction10));
89  
90          Try.testFail(() -> lbeAdapter.unmarshal("XYZ"));
91          Try.testFail(() -> lbeAdapter.unmarshal("BEGIN XYZ"));
92          Try.testFail(() -> lbeAdapter.unmarshal("END XYZ"));
93          Try.testFail(() -> lbeAdapter.unmarshal("END-XYZ"));
94          Try.testFail(() -> lbeAdapter.unmarshal("END-100"));
95          Try.testFail(() -> lbeAdapter.unmarshal("-0.5"));
96          Try.testFail(() -> lbeAdapter.unmarshal("-50%"));
97          Try.testFail(() -> lbeAdapter.unmarshal("END+10m"));
98  
99          for (boolean begin : new boolean[] {false, true})
100         {
101             System.out.println(begin);
102             for (int i = 0; i < this.units.length; i++)
103             {
104                 final LengthUnit unit = this.units[i];
105                 final String us = this.unitStrings[i];
106                 final String prefix = begin ? "" : "END-";
107                 final LengthBeginEnd lbe23 = new LengthBeginEnd(begin, new Length(2.3, unit));
108                 final LengthBeginEnd lbe00 = new LengthBeginEnd(begin, new Length(0.0, unit));
109 
110                 assertEquals(lbe23, lbeAdapter.unmarshal(prefix + "2.3 " + us));
111                 assertEquals(lbe23, lbeAdapter.unmarshal(prefix + "2.3" + us));
112                 Try.testFail(() -> lbeAdapter.unmarshal(prefix + "-2.3 " + us));
113                 Try.testFail(() -> lbeAdapter.unmarshal(prefix + "-2.3" + us));
114 
115                 assertEquals(prefix + "2.3 " + us, lbeAdapter.marshal(lbe23));
116                 Try.testFail(() -> lbeAdapter.marshal(new LengthBeginEnd(begin, new Length(-2.3, unit))));
117 
118                 assertEquals(lbe00, lbeAdapter.unmarshal(prefix + "0.0 " + us));
119                 assertEquals(lbe00, lbeAdapter.unmarshal(prefix + "0.0" + us));
120                 Try.testFail(() -> lbeAdapter.unmarshal(prefix + "-0.0 " + us));
121                 Try.testFail(() -> lbeAdapter.unmarshal(prefix + "-0.0" + us));
122 
123                 assertEquals(begin ? "BEGIN" : "END", lbeAdapter.marshal(lbe00));
124                 Try.testFail(() -> lbeAdapter.marshal(new LengthBeginEnd(begin, new Length(-0.0, unit))));
125             }
126         }
127     }
128 
129 }