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
14
15
16
17
18
19
20 public class LengthAdapterTest
21 {
22
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
28 String[] unitStrings = new String[] {"mm", "cm", "dm", "m", "dam", "hm", "km", "mi", "yd", "ft"};
29
30
31
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
67
68
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 }