Skip to content

Commit a940393

Browse files
Changed precision type to simple integers
1 parent 8bc8377 commit a940393

File tree

3 files changed

+45
-105
lines changed

3 files changed

+45
-105
lines changed

src/main/java/com/mapcode/Mapcode.java

Lines changed: 4 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -271,47 +271,7 @@ public Territory getTerritory() {
271271
@Nonnull
272272
static final Pattern PATTERN_TERRITORY = Pattern.compile('^' + REGEX_TERRITORY + ' ');
273273
@Nonnull
274-
static final Pattern PATTERN_PRECISION = Pattern.compile(REGEX_CODE_PRECISION + '$');
275-
276-
/**
277-
* This enum describes the types of available mapcodes (as returned by {@link #getPrecisionFormat(String)}.
278-
*/
279-
public enum PrecisionFormat {
280-
PRECISION_0,
281-
PRECISION_1,
282-
PRECISION_2,
283-
PRECISION_3,
284-
PRECISION_4,
285-
PRECISION_5,
286-
PRECISION_6,
287-
PRECISION_7,
288-
PRECISION_8;
289-
290-
public static PrecisionFormat fromNumber(final int number) {
291-
switch (number) {
292-
case 0:
293-
return PRECISION_0;
294-
case 1:
295-
return PRECISION_1;
296-
case 2:
297-
return PRECISION_2;
298-
case 3:
299-
return PRECISION_3;
300-
case 4:
301-
return PRECISION_4;
302-
case 5:
303-
return PRECISION_5;
304-
case 6:
305-
return PRECISION_6;
306-
case 7:
307-
return PRECISION_7;
308-
case 8:
309-
return PRECISION_8;
310-
default:
311-
throw new UnknownPrecisionFormatException("Precision must be in [0, 8], is: " + number, number);
312-
}
313-
}
314-
}
274+
static final Pattern PATTERN_PRECISION = Pattern.compile(REGEX_CODE_PRECISION + '$');
315275

316276
/**
317277
* This method return the mapcode type, given a mapcode string. If the mapcode string has an invalid
@@ -325,7 +285,7 @@ public static PrecisionFormat fromNumber(final int number) {
325285
* @throws UnknownPrecisionFormatException If precision format is incorrect.
326286
*/
327287
@Nonnull
328-
public static PrecisionFormat getPrecisionFormat(@Nonnull final String mapcode) throws UnknownPrecisionFormatException {
288+
public static int getPrecisionFormat(@Nonnull final String mapcode) throws UnknownPrecisionFormatException {
329289

330290
// First, decode to ASCII.
331291
final String decodedMapcode = convertStringToPlainAscii(mapcode).toUpperCase();
@@ -339,28 +299,11 @@ public static PrecisionFormat getPrecisionFormat(@Nonnull final String mapcode)
339299
// Precision part should be OK.
340300
final Matcher matcherPrecision = PATTERN_PRECISION.matcher(decodedMapcode);
341301
if (!matcherPrecision.find()) {
342-
return PrecisionFormat.PRECISION_0;
302+
return 0;
343303
}
344304
final int length = matcherPrecision.end() - matcherPrecision.start() - 1;
345305
assert (1 <= length) && (length <= 8);
346-
switch (length) {
347-
case 1:
348-
return PrecisionFormat.PRECISION_1;
349-
case 2:
350-
return PrecisionFormat.PRECISION_2;
351-
case 3:
352-
return PrecisionFormat.PRECISION_3;
353-
case 4:
354-
return PrecisionFormat.PRECISION_4;
355-
case 5:
356-
return PrecisionFormat.PRECISION_5;
357-
case 6:
358-
return PrecisionFormat.PRECISION_6;
359-
case 7:
360-
return PrecisionFormat.PRECISION_7;
361-
default:
362-
return PrecisionFormat.PRECISION_8;
363-
}
306+
return length;
364307
}
365308

366309
/**

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.mapcode;
1818

19-
import com.mapcode.Mapcode.PrecisionFormat;
2019
import org.junit.Test;
2120
import org.slf4j.Logger;
2221
import org.slf4j.LoggerFactory;
@@ -97,9 +96,8 @@ private static void convertCodeInAlphabet(
9796
final int precision) throws Exception {
9897

9998
// Check type.
100-
final PrecisionFormat precisionFormat = PrecisionFormat.fromNumber(precision);
101-
final PrecisionFormat type = Mapcode.getPrecisionFormat(code);
102-
assertEquals("code = " + code + ", type = " + type, precisionFormat, type);
99+
final int type = Mapcode.getPrecisionFormat(code);
100+
assertEquals("code = " + code + ", type = " + type, precision, type);
103101

104102
// Check original code and converted to ASCII point at same location.
105103
final String codeAscii = Mapcode.convertStringToPlainAscii(code);

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

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.mapcode;
1818

19-
import com.mapcode.Mapcode.PrecisionFormat;
2019
import org.junit.Test;
2120
import org.slf4j.Logger;
2221
import org.slf4j.LoggerFactory;
@@ -30,34 +29,34 @@ public class MapcodeTest {
3029
public void checkValidPrecisionFormats() {
3130
LOG.info("checkValidPrecisionFormats");
3231

33-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("P1.B1"));
34-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("p1.B1"));
35-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("00.01"));
36-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PPP.01"));
37-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PPP.BBB"));
38-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PPPP.BBB"));
39-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PPPP.BBBB"));
40-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PPPPP.BBBB"));
41-
assertEquals(PrecisionFormat.PRECISION_1, Mapcode.getPrecisionFormat("PP.PP-0"));
42-
assertEquals(PrecisionFormat.PRECISION_2, Mapcode.getPrecisionFormat("PP.PP-01"));
43-
assertEquals(PrecisionFormat.PRECISION_1, Mapcode.getPrecisionFormat("PP.PP-P"));
44-
assertEquals(PrecisionFormat.PRECISION_2, Mapcode.getPrecisionFormat("PP.PP-PP"));
45-
assertEquals(PrecisionFormat.PRECISION_1, Mapcode.getPrecisionFormat("PP.PP-Y"));
46-
assertEquals(PrecisionFormat.PRECISION_2, Mapcode.getPrecisionFormat("PP.PP-1Y"));
47-
assertEquals(PrecisionFormat.PRECISION_3, Mapcode.getPrecisionFormat("PP.PP-321"));
48-
assertEquals(PrecisionFormat.PRECISION_4, Mapcode.getPrecisionFormat("PP.PP-21PQ"));
49-
assertEquals(PrecisionFormat.PRECISION_5, Mapcode.getPrecisionFormat("PP.PP-321PQ"));
50-
assertEquals(PrecisionFormat.PRECISION_6, Mapcode.getPrecisionFormat("PP.PP-321PQR"));
51-
assertEquals(PrecisionFormat.PRECISION_7, Mapcode.getPrecisionFormat("PP.PP-4321PRS"));
52-
assertEquals(PrecisionFormat.PRECISION_8, Mapcode.getPrecisionFormat("PP.PP-4321PQRS"));
32+
assertEquals(0, Mapcode.getPrecisionFormat("P1.B1"));
33+
assertEquals(0, Mapcode.getPrecisionFormat("p1.B1"));
34+
assertEquals(0, Mapcode.getPrecisionFormat("00.01"));
35+
assertEquals(0, Mapcode.getPrecisionFormat("PPP.01"));
36+
assertEquals(0, Mapcode.getPrecisionFormat("PPP.BBB"));
37+
assertEquals(0, Mapcode.getPrecisionFormat("PPPP.BBB"));
38+
assertEquals(0, Mapcode.getPrecisionFormat("PPPP.BBBB"));
39+
assertEquals(0, Mapcode.getPrecisionFormat("PPPPP.BBBB"));
40+
assertEquals(1, Mapcode.getPrecisionFormat("PP.PP-0"));
41+
assertEquals(2, Mapcode.getPrecisionFormat("PP.PP-01"));
42+
assertEquals(1, Mapcode.getPrecisionFormat("PP.PP-P"));
43+
assertEquals(2, Mapcode.getPrecisionFormat("PP.PP-PP"));
44+
assertEquals(1, Mapcode.getPrecisionFormat("PP.PP-Y"));
45+
assertEquals(2, Mapcode.getPrecisionFormat("PP.PP-1Y"));
46+
assertEquals(3, Mapcode.getPrecisionFormat("PP.PP-321"));
47+
assertEquals(4, Mapcode.getPrecisionFormat("PP.PP-21PQ"));
48+
assertEquals(5, Mapcode.getPrecisionFormat("PP.PP-321PQ"));
49+
assertEquals(6, Mapcode.getPrecisionFormat("PP.PP-321PQR"));
50+
assertEquals(7, Mapcode.getPrecisionFormat("PP.PP-4321PRS"));
51+
assertEquals(8, Mapcode.getPrecisionFormat("PP.PP-4321PQRS"));
5352

5453
// Mapcode may contain correctly formatted (possible incorrect) territory code.
55-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("NLD XX.XX"));
56-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("USA-NLD XX.XX"));
57-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("IN XX.XX"));
58-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("US-IN XX.XX"));
59-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("US_IN XX.XX"));
60-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("RU-IN XX.XX"));
54+
assertEquals(0, Mapcode.getPrecisionFormat("NLD XX.XX"));
55+
assertEquals(0, Mapcode.getPrecisionFormat("USA-NLD XX.XX"));
56+
assertEquals(0, Mapcode.getPrecisionFormat("IN XX.XX"));
57+
assertEquals(0, Mapcode.getPrecisionFormat("US-IN XX.XX"));
58+
assertEquals(0, Mapcode.getPrecisionFormat("US_IN XX.XX"));
59+
assertEquals(0, Mapcode.getPrecisionFormat("RU-IN XX.XX"));
6160
}
6261

6362
@Test
@@ -108,19 +107,19 @@ public void checkInvalidPrecisionFormats() {
108107
public void checkPrecisionFormat1() {
109108
LOG.info("checkPrecisionFormat1");
110109

111-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("PP.QQ"));
112-
assertEquals(PrecisionFormat.PRECISION_1, Mapcode.getPrecisionFormat("PP.QQ-1"));
113-
assertEquals(PrecisionFormat.PRECISION_2, Mapcode.getPrecisionFormat("PP.QQ-12"));
114-
assertEquals(PrecisionFormat.PRECISION_3, Mapcode.getPrecisionFormat("PP.QQ-123"));
115-
assertEquals(PrecisionFormat.PRECISION_4, Mapcode.getPrecisionFormat("PP.QQ-1234"));
116-
assertEquals(PrecisionFormat.PRECISION_5, Mapcode.getPrecisionFormat("PP.QQ-12345"));
117-
assertEquals(PrecisionFormat.PRECISION_6, Mapcode.getPrecisionFormat("PP.QQ-123456"));
118-
assertEquals(PrecisionFormat.PRECISION_7, Mapcode.getPrecisionFormat("PP.QQ-1234567"));
119-
assertEquals(PrecisionFormat.PRECISION_8, Mapcode.getPrecisionFormat("PP.QQ-12345678"));
120-
121-
assertEquals(PrecisionFormat.PRECISION_0, Mapcode.getPrecisionFormat("\u0e9a\u0e97\u0e84 \u0eab\u0ea7\u0e84.\u0ea73\u0eaa"));
122-
assertEquals(PrecisionFormat.PRECISION_1, Mapcode.getPrecisionFormat("\u0f40\u0f64\u0f4c \u0f535\u0f41\u0f42.5\u0f629-\u0f40"));
123-
assertEquals(PrecisionFormat.PRECISION_2, Mapcode.getPrecisionFormat("\u039d\u039b\u0394 \u03a7\u03a6\u0394.\u03a63\u03a9-\u039e7"));
110+
assertEquals(0, Mapcode.getPrecisionFormat("PP.QQ"));
111+
assertEquals(1, Mapcode.getPrecisionFormat("PP.QQ-1"));
112+
assertEquals(2, Mapcode.getPrecisionFormat("PP.QQ-12"));
113+
assertEquals(3, Mapcode.getPrecisionFormat("PP.QQ-123"));
114+
assertEquals(4, Mapcode.getPrecisionFormat("PP.QQ-1234"));
115+
assertEquals(5, Mapcode.getPrecisionFormat("PP.QQ-12345"));
116+
assertEquals(6, Mapcode.getPrecisionFormat("PP.QQ-123456"));
117+
assertEquals(7, Mapcode.getPrecisionFormat("PP.QQ-1234567"));
118+
assertEquals(8, Mapcode.getPrecisionFormat("PP.QQ-12345678"));
119+
120+
assertEquals(0, Mapcode.getPrecisionFormat("\u0e9a\u0e97\u0e84 \u0eab\u0ea7\u0e84.\u0ea73\u0eaa"));
121+
assertEquals(1, Mapcode.getPrecisionFormat("\u0f40\u0f64\u0f4c \u0f535\u0f41\u0f42.5\u0f629-\u0f40"));
122+
assertEquals(2, Mapcode.getPrecisionFormat("\u039d\u039b\u0394 \u03a7\u03a6\u0394.\u03a63\u03a9-\u039e7"));
124123
}
125124

126125
@Test(expected = UnknownPrecisionFormatException.class)

0 commit comments

Comments
 (0)