|
16 | 16 |
|
17 | 17 | package com.mapcode; |
18 | 18 |
|
| 19 | +import com.mapcode.Mapcode.FormatType; |
19 | 20 | import org.junit.Test; |
20 | 21 | import org.slf4j.Logger; |
21 | 22 | import org.slf4j.LoggerFactory; |
22 | 23 |
|
| 24 | +import javax.annotation.Nonnull; |
| 25 | + |
23 | 26 | import static org.junit.Assert.assertEquals; |
24 | 27 |
|
25 | 28 | @SuppressWarnings({"OverlyBroadThrowsClause", "ProhibitedExceptionDeclared"}) |
26 | 29 | public class AlphabetTest { |
27 | 30 | private static final Logger LOG = LoggerFactory.getLogger(AlphabetTest.class); |
28 | 31 |
|
| 32 | + @SuppressWarnings("JUnitTestMethodWithNoAssertions") |
29 | 33 | @Test |
30 | | - public void convertGreek1() throws Exception { |
31 | | - LOG.info("convertGreek1"); |
32 | | - final String a1 = "\u0397\u03a0.\u03982"; |
33 | | - LOG.info("type = {}", Mapcode.getMapcodeFormatType(a1)); |
34 | | - final String x1 = Mapcode.convertToAscii(a1); |
35 | | - final Point p1 = MapcodeCodec.decode(x1, Territory.GRC); |
36 | | - final String y1 = MapcodeCodec.encodeToShortest(p1).getMapcode(); |
37 | | - final String b1 = Mapcode.convertToAlphabet(y1, Alphabet.GREEK); |
38 | | - LOG.info("a1 = {}, b1 = {}, x1 = {}, y1 = {}, p1 = {}", a1, b1, x1, y1, p1); |
39 | | - assertEquals(a1, b1); |
40 | | - assertEquals(x1, y1); |
| 34 | + public void testConvertToAlphabet() throws Exception { |
| 35 | + LOG.info("testConvertToAlphabet"); |
| 36 | + convertCodeInAlphabet("\u0397\u03a0.\u03982", Territory.GRC, Alphabet.GREEK, 0); |
| 37 | + convertCodeInAlphabet("\u0397\u03a0.\u03982-\u03a62", Territory.GRC, Alphabet.GREEK, 2); |
| 38 | + convertCodeInAlphabet("GRC \u0397\u03a0.\u03982-\u03a62", Territory.GRC, Alphabet.GREEK, 2); |
41 | 39 |
|
42 | | - final String a2 = "\u0397\u03a0.\u03982-\u03a62"; |
43 | | - LOG.info("type = {}", Mapcode.getMapcodeFormatType(a2)); |
44 | | - final String x2 = Mapcode.convertToAscii(a2); |
45 | | - final Point p2 = MapcodeCodec.decode(x2, Territory.GRC); |
46 | | - final String y2 = MapcodeCodec.encodeToShortest(p2).getMapcodePrecision(2); |
47 | | - final String b2 = Mapcode.convertToAlphabet(y2, Alphabet.GREEK); |
48 | | - LOG.info("a2 = {}, b2 = {}, x2 = {}, y2 = {}, p2 = {}", a2, b2, x2, y2, p2); |
49 | | - assertEquals(a2, b2); |
50 | | - assertEquals(x2, y2); |
| 40 | + convertCodeInAlphabet("XX.XX", Territory.NLD, Alphabet.GREEK, 0); |
| 41 | + convertCodeInAlphabet("XX.XX-12", Territory.NLD, Alphabet.GREEK, 2); |
51 | 42 |
|
52 | | - final String a3 = "GRC \u0397\u03a0.\u03982-\u03a62"; |
53 | | - LOG.info("type = {}", Mapcode.getMapcodeFormatType(a3)); |
54 | | - final String x3 = Mapcode.convertToAscii(a3); |
55 | | - final Point p3 = MapcodeCodec.decode(x3); |
56 | | - final String y3 = MapcodeCodec.encodeToShortest(p3).getMapcodePrecision(2); |
57 | | - final String b3 = Mapcode.convertToAlphabet(y3, Alphabet.GREEK); |
58 | | - LOG.info("a3 = {}, b3 = {}, x3 = {}, y3 = {}, p3 = {}", a3, b3, x3, y3, p3); |
59 | | - assertEquals(a3, Territory.GRC.toString() + ' ' + b3); |
60 | | - assertEquals(x3, Territory.GRC.toString() + ' ' + y3); |
61 | | - } |
| 43 | + convertCodeInAlphabet("NLD XX.XX", Territory.USA, Alphabet.GREEK, 0); |
| 44 | + convertCodeInAlphabet("NLD XX.XX-12", Territory.USA, Alphabet.GREEK, 2); |
62 | 45 |
|
63 | | - @Test |
64 | | - public void convertGreek2() throws Exception { |
65 | | - LOG.info("convertGreek2"); |
66 | | - final String a1 = "36128.92UW"; |
67 | | - final Point p1 = MapcodeCodec.decode(a1); |
68 | | - final String y1 = MapcodeCodec.encodeToShortest(p1).getMapcodePrecision(0); |
69 | | - final String b1 = Mapcode.convertToAlphabet(y1, Alphabet.GREEK); |
70 | | - final String c1 = Mapcode.convertToAscii(b1); |
71 | | - final String d1 = Mapcode.convertToAlphabet(b1, Alphabet.ROMAN); |
72 | | - LOG.info("a1 = {}, b1 = {}, c1 = {}, d1 = {}, y1 = {}, p1 = {}", a1, b1, c1, d1, y1, p1); |
73 | | - assertEquals(a1, y1); |
74 | | - assertEquals(a1, c1); |
75 | | - assertEquals(a1, d1); |
| 46 | + convertCodeInAlphabet("36128.92UW", Territory.GRC, Alphabet.GREEK, 0); |
| 47 | + convertCodeInAlphabet("36228.92UW-TK", Territory.GRC, Alphabet.GREEK, 2); |
76 | 48 | } |
77 | 49 |
|
78 | | - @Test |
79 | | - public void convertGreek3() throws Exception { |
80 | | - LOG.info("convertGreek3"); |
81 | | - final String a2 = "36228.92UW-TK"; |
82 | | - final Point p2 = MapcodeCodec.decode(a2); |
83 | | - final String y2 = MapcodeCodec.encodeToShortest(p2).getMapcodePrecision(2); |
84 | | - final String b2 = Mapcode.convertToAlphabet(y2, Alphabet.GREEK); |
85 | | - final String c2 = Mapcode.convertToAscii(b2); |
86 | | - final String d2 = Mapcode.convertToAlphabet(b2, Alphabet.ROMAN); |
87 | | - LOG.info("a2 = {}, b2 = {}, c2 = {}, d2 = {}, y2 = {}, p2 = {}", a2, b2, c2, d2, y2, p2); |
88 | | - assertEquals(a2, y2); |
89 | | - assertEquals(a2, c2); |
90 | | - assertEquals(a2, d2); |
| 50 | + private static void convertCodeInAlphabet( |
| 51 | + @Nonnull final String code, |
| 52 | + @Nonnull final Territory territory, @Nonnull final Alphabet alphabet, |
| 53 | + final int precision) throws Exception { |
| 54 | + |
| 55 | + // Check type. |
| 56 | + final FormatType formatType = FormatType.fromPrecision(precision); |
| 57 | + final FormatType type = Mapcode.getMapcodeFormatType(code); |
| 58 | + assertEquals("code = " + code + ", type = " + type, formatType, type); |
| 59 | + |
| 60 | + // Check original code and converted to ASCII point at same location. |
| 61 | + final String codeAscii = Mapcode.convertMapcodeToPlainAscii(code); |
| 62 | + final Point pointCode = MapcodeCodec.decode(code, territory); |
| 63 | + final Point pointAscii = MapcodeCodec.decode(codeAscii, territory); |
| 64 | + assertEquals("code = " + code + ", pointCode = " + pointCode + ", pointAscii = " + pointAscii, |
| 65 | + pointCode, pointAscii); |
| 66 | + |
| 67 | + // Check if it re-encodes to the same mapcode codes. |
| 68 | + final Mapcode mapcode = MapcodeCodec.encodeToShortest(pointCode); |
| 69 | + final String codeRoman; |
| 70 | + final String codeAlphabet; |
| 71 | + if (Mapcode.containsTerritory(code)) { |
| 72 | + codeRoman = mapcode.getCodeWithTerritory(precision); |
| 73 | + codeAlphabet = mapcode.getCodeWithTerritory(precision, alphabet); |
| 74 | + } else { |
| 75 | + codeRoman = mapcode.getCode(precision); |
| 76 | + codeAlphabet = mapcode.getCode(precision, alphabet); |
| 77 | + } |
| 78 | + LOG.info("code = {}, codeAlphabet = {}, codeAscii = {}, codeRoman = {}", code, codeAlphabet, codeAscii, codeRoman); |
| 79 | + assertEquals(codeAscii, codeRoman); |
| 80 | + assertEquals(code, codeAlphabet); |
91 | 81 | } |
92 | 82 | } |
0 commit comments