Skip to content

Commit 35a9bdd

Browse files
committed
Fixed arabic stuff
1 parent fc57bf0 commit 35a9bdd

File tree

7 files changed

+300
-39
lines changed

7 files changed

+300
-39
lines changed

src/main/java/com/mapcode/Alphabet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public enum Alphabet {
4545
ARMENIAN(10),
4646
BENGALI(11),
4747
GURMUKHI(12),
48-
TIBETAN(13);
48+
TIBETAN(13),
49+
ARABIC(14);
4950

5051
/**
5152
* The numeric code is synonym for the alphanumeric code. Used in the decoder.

src/main/java/com/mapcode/DataModel.java

100755100644
File mode changed.

src/main/java/com/mapcode/Decoder.java

100755100644
Lines changed: 224 additions & 19 deletions
Large diffs are not rendered by default.

src/main/java/com/mapcode/Encoder.java

100755100644
File mode changed.

src/main/java/com/mapcode/Territory.java

100755100644
File mode changed.

src/test/java/com/mapcode/AlphabetTest.java

Lines changed: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,80 @@
2828
public class AlphabetTest {
2929
private static final Logger LOG = LoggerFactory.getLogger(AlphabetTest.class);
3030

31+
private static final String[] CODE_TEST_PAIRS = {
32+
"26.53UK", "\u039161.328\u03A5",
33+
"FR.B016", "\u0395\u03A81.0716",
34+
"000.EU", "\u0391\u0030\u0030.23",
35+
"PQ.YZ", "\u03a1\u0398.57\u0396",
36+
"PQ.XYZ", "\u03a1\u0398.56\u03a5\u0396",
37+
"PQR.YZ", "\u03a1\u0398.89\u03a5\u0396",
38+
"PQ.RXYZ", "\u03a1\u03983.\u03a70\u03a5\u0396",
39+
"PQR.XYZ", "\u03a1\u03986.\u03a71\u03a5\u0396",
40+
"PQRX.YZ", "\u03a1\u03989.\u03a72\u03a5\u0396",
41+
"PQR.SXYZ", "\u03a1\u03984.\u03a3\u03a79\u03a5\u0396",
42+
"PQRS.XYZ", "\u03a1\u03988.\u03a3\u03a79\u03a5\u0396",
43+
"PQRS.WXYZ", "\u03a1\u03987\u03a3.8\u03a9\u03a72\u03a5",
44+
"PQRST.WXYZ", "\u03a1\u03987\u03a3\u03a4.8\u03a9\u03a72\u03a5",
45+
"P4.YZ", "\u03a14.\u03a5\u0396",
46+
"PQ.4Z", "\u03a1\u0398.4\u0396",
47+
"PQ.4YZ", "\u03a1\u0398.26\u03a5\u0396",
48+
"PQ4.YZ", "\u03a1\u03984.\u03a5\u0396",
49+
"PQ.46YZ", "\u03a1\u03981.61\u03a5\u0396",
50+
"PQ4.6YZ", "\u03a1\u03984.6\u03a5\u0396",
51+
"PQ46.YZ", "\u03a1\u039846.\u03a5\u0396",
52+
"PQ4.S6YZ", "\u03a1\u03982.\u03a366\u03a5\u0396",
53+
"PQ4S.6YZ", "\u03a1\u03984\u03a3.6\u03a5\u0396",
54+
"PQ4S.W6YZ", "\u03a1\u03984\u03a3.\u03a96\u03a5\u0396",
55+
"PQ4PQ.6YZ9", "\u03a1\u03984\u03a1\u0398.6\u03a5\u03969",
56+
"PQ.YZ-BCD", "\u03a1\u0398.57\u0396-\u0392\u039e\u0394",
57+
"PQ.XYZ-BCD", "\u03a1\u0398.56\u03a5\u0396-\u0392\u039e\u0394",
58+
"PQR.YZ-BCD", "\u03a1\u0398.89\u03a5\u0396-\u0392\u039e\u0394",
59+
"PQ.RXYZ-BCD", "\u03a1\u03983.\u03a70\u03a5\u0396-\u0392\u039e\u0394",
60+
"PQR.XYZ-BCD", "\u03a1\u03986.\u03a71\u03a5\u0396-\u0392\u039e\u0394",
61+
"PQRX.YZ-BCD", "\u03a1\u03989.\u03a72\u03a5\u0396-\u0392\u039e\u0394",
62+
"PQR.SXYZ-BCD", "\u03a1\u03984.\u03a3\u03a79\u03a5\u0396-\u0392\u039e\u0394",
63+
"PQRS.XYZ-BCD", "\u03a1\u03988.\u03a3\u03a79\u03a5\u0396-\u0392\u039e\u0394",
64+
"PQRS.WXYZ-BCD", "\u03a1\u03987\u03a3.8\u03a9\u03a72\u03a5-\u0392\u039e\u0394",
65+
"PQRST.WXYZ-BCD", "\u03a1\u03987\u03a3\u03a4.8\u03a9\u03a72\u03a5-\u0392\u039e\u0394",
66+
"P4.YZ-BCD", "\u03a14.\u03a5\u0396-\u0392\u039e\u0394",
67+
"PQ.4Z-BCD", "\u03a1\u0398.4\u0396-\u0392\u039e\u0394",
68+
"PQ.4YZ-BCD", "\u03a1\u0398.26\u03a5\u0396-\u0392\u039e\u0394",
69+
"PQ4.YZ-BCD", "\u03a1\u03984.\u03a5\u0396-\u0392\u039e\u0394",
70+
"PQ.46YZ-BCD", "\u03a1\u03981.61\u03a5\u0396-\u0392\u039e\u0394",
71+
"PQ4.6YZ-BCD", "\u03a1\u03984.6\u03a5\u0396-\u0392\u039e\u0394",
72+
"PQ46.YZ-BCD", "\u03a1\u039846.\u03a5\u0396-\u0392\u039e\u0394",
73+
"PQ4.S6YZ-BCD", "\u03a1\u03982.\u03a366\u03a5\u0396-\u0392\u039e\u0394",
74+
"PQ4S.6YZ-BCD", "\u03a1\u03984\u03a3.6\u03a5\u0396-\u0392\u039e\u0394",
75+
"PQ4S.W6YZ-BCD", "\u03a1\u03984\u03a3.\u03a96\u03a5\u0396-\u0392\u039e\u0394",
76+
"PQ4PQ.6YZ9-BCD", "\u03a1\u03984\u03a1\u0398.6\u03a5\u03969-\u0392\u039e\u0394",
77+
""
78+
};
79+
3180
@Test
3281
public void testConvertToAlphabet() throws Exception {
82+
3383
LOG.info("testConvertToAlphabet");
34-
convertCodeInAlphabet("\u0397\u03a0.\u03982", Territory.GRC, Alphabet.GREEK, 0);
35-
convertCodeInAlphabet("\u0397\u03a0.\u03982-\u03a62", Territory.GRC, Alphabet.GREEK, 2);
36-
convertCodeInAlphabet("GRC \u0397\u03a0.\u03982-\u03a62", Territory.GRC, Alphabet.GREEK, 2);
37-
38-
String code = "26.53UK";
39-
String codeGreek = Mapcode.convertStringToAlphabet(code, Alphabet.GREEK);
40-
String codeAscii = Mapcode.convertStringToPlainAscii(codeGreek);
41-
LOG.info("code = {}, codeGreek = {}, codeAscii = {}", code, codeGreek, codeAscii);
42-
assertEquals(code, codeAscii);
43-
44-
code = "000.EU";
45-
codeGreek = Mapcode.convertStringToAlphabet(code, Alphabet.GREEK);
46-
codeAscii = Mapcode.convertStringToPlainAscii(codeGreek);
47-
LOG.info("code = {}, codeGreek = {}, codeAscii = {}", code, codeGreek, codeAscii);
48-
assertEquals(codeGreek, "\u0391\u0030\u0030.23");
49-
assertEquals(code, codeAscii);
84+
convertCodeInAlphabet("\u0397\u03a0.22", Territory.GRC, Alphabet.GREEK, 0);
85+
convertCodeInAlphabet("\u0397\u03a0.22-\u03a62", Territory.GRC, Alphabet.GREEK, 2);
86+
convertCodeInAlphabet("GRC \u0397\u03a0.22-\u03a62", Territory.GRC, Alphabet.GREEK, 2);
87+
88+
int i = 0;
89+
while (true) {
90+
final String code = CODE_TEST_PAIRS[i];
91+
if (code.isEmpty()) {
92+
break;
93+
}
94+
final String codeGreek = Mapcode.convertStringToAlphabet(code, Alphabet.GREEK);
95+
LOG.debug("testConvertToAlphabet: code={}, codeGreek={}", code, codeGreek);
96+
final String expect = CODE_TEST_PAIRS[i + 1];
97+
if (!expect.isEmpty()) {
98+
assertEquals(codeGreek, expect);
99+
}
100+
final String codeAscii = Mapcode.convertStringToPlainAscii(codeGreek);
101+
LOG.debug("testConvertToAlphabet: code={}, codeGreek={}, codeAscii={}", code, codeGreek, codeAscii);
102+
assertEquals(code, codeAscii);
103+
i += 2;
104+
}
50105
}
51106

52107
@Test

src/test/java/com/mapcode/MapcodeTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public void checkInvalidPrecisionFormats() {
113113
assertFalse(Mapcode.isValidMapcodeFormat("PP.PP-12345Z"));
114114
assertFalse(Mapcode.isValidMapcodeFormat("PP.PP-123456Z"));
115115
assertFalse(Mapcode.isValidMapcodeFormat("PP.PP-1234567Z"));
116-
assertFalse(Mapcode.isValidMapcodeFormat("PP.PP-123456789")); // more than 8 ePtension characters!
116+
assertFalse(Mapcode.isValidMapcodeFormat("PP.PP-123456789")); // more than 8 extension characters!
117117
assertFalse(Mapcode.isValidMapcodeFormat("P.PPP"));
118118
assertFalse(Mapcode.isValidMapcodeFormat("PPP.P"));
119119
assertFalse(Mapcode.isValidMapcodeFormat("P.PPP-1"));
@@ -137,8 +137,8 @@ public void checkPrecisionFormat1() {
137137
assertEquals(8, Mapcode.getPrecisionFormat("PP.QQ-12345678"));
138138

139139
assertEquals(0, Mapcode.getPrecisionFormat("\u0e9a\u0e97\u0e84 \u0eab\u0ea7\u0e84.\u0ea73\u0eaa"));
140-
assertEquals(1, Mapcode.getPrecisionFormat("\u0f40\u0f64\u0f4c \u0f535\u0f41\u0f42.5\u0f629-\u0f40"));
141-
assertEquals(2, Mapcode.getPrecisionFormat("\u039d\u039b\u0394 \u03a7\u03a6\u0394.\u03a63\u03a9-\u039e7"));
140+
assertEquals(1, Mapcode.getPrecisionFormat("\u0f40\u0f64\u0f55 \u0f535\u0f415.\u0f42\u0f629-\u0f40"));
141+
assertEquals(2, Mapcode.getPrecisionFormat("\u039d\u039b\u0394 \u03a7\u03a68.\u03a63\u03a9-\u039e7"));
142142
}
143143

144144
@Test(expected = UnknownPrecisionFormatException.class)

0 commit comments

Comments
 (0)