Skip to content

Commit 987272d

Browse files
committed
Added -e2 and -e8 tests, corrected tests
1 parent 71bf51e commit 987272d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+4396931
-1850293
lines changed

src/main/java/com/mapcode/Boundary.java

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
* This class handles the territory rectangles for mapcodes.
2727
*/
2828
class Boundary {
29-
private int minX;
30-
private int maxX;
31-
private int minY;
32-
private int maxY;
29+
private int lonMicroDegMin;
30+
private int lonMicroDegMax;
31+
private int latMicroDegMin;
32+
private int latMicroDegMax;
3333

3434
private Boundary() {
3535
// Disabled.
@@ -39,60 +39,60 @@ private Boundary() {
3939
@Nonnull
4040
static Boundary createFromTerritoryRecord(final int territoryRecord) {
4141
Boundary boundary = new Boundary();
42-
boundary.minX = DataAccess.getMinX(territoryRecord);
43-
boundary.minY = DataAccess.getMinY(territoryRecord);
44-
boundary.maxX = DataAccess.getMaxX(territoryRecord);
45-
boundary.maxY = DataAccess.getMaxY(territoryRecord);
42+
boundary.lonMicroDegMin = DataAccess.getLonMicroDegMin(territoryRecord);
43+
boundary.latMicroDegMin = DataAccess.getLatMicroDegMin(territoryRecord);
44+
boundary.lonMicroDegMax = DataAccess.getLonMicroDegMax(territoryRecord);
45+
boundary.latMicroDegMax = DataAccess.getLatMicroDegMax(territoryRecord);
4646
return boundary;
4747
}
4848

49-
int getMinX() {
50-
return minX;
49+
int getLonMicroDegMin() {
50+
return lonMicroDegMin;
5151
}
5252

53-
int getMinY() {
54-
return minY;
53+
int getLatMicroDegMin() {
54+
return latMicroDegMin;
5555
}
5656

57-
int getMaxX() {
58-
return maxX;
57+
int getLonMicroDegMax() {
58+
return lonMicroDegMax;
5959
}
6060

61-
int getMaxY() {
62-
return maxY;
61+
int getLatMicroDegMax() {
62+
return latMicroDegMax;
6363
}
6464

6565
@Nonnull
66-
Boundary extendBoundary(final int xExtension, final int yExtension) {
67-
minX -= xExtension;
68-
minY -= yExtension;
69-
maxX += xExtension;
70-
maxY += yExtension;
66+
Boundary extendBoundary(final int latMicroDegExtension, final int lonMicroDegExtension) {
67+
lonMicroDegMin -= lonMicroDegExtension;
68+
latMicroDegMin -= latMicroDegExtension;
69+
lonMicroDegMax += lonMicroDegExtension;
70+
latMicroDegMax += latMicroDegExtension;
7171
return this;
7272
}
7373

7474
boolean containsPoint(@Nonnull final Point p) {
7575
if (!p.isDefined()) {
7676
return false;
7777
}
78-
final int y = p.getLatMicroDeg();
79-
if ((minY > y) || (y >= maxY)) {
78+
final int latMicroDeg = p.getLatMicroDeg();
79+
if ((latMicroDegMin > latMicroDeg) || (latMicroDeg >= latMicroDegMax)) {
8080
return false;
8181
}
82-
final int x = p.getLonMicroDeg();
82+
final int lonMicroDeg = p.getLonMicroDeg();
8383
// longitude boundaries can extend (slightly) outside the [-180,180) range
84-
if (x < minX) {
85-
return (minX <= (x + 360000000)) && ((x + 360000000) < maxX);
84+
if (lonMicroDeg < lonMicroDegMin) {
85+
return (lonMicroDegMin <= (lonMicroDeg + 360000000)) && ((lonMicroDeg + 360000000) < lonMicroDegMax);
8686
}
87-
if (x >= maxX) {
88-
return (minX <= (x - 360000000)) && ((x - 360000000) < maxX);
87+
if (lonMicroDeg >= lonMicroDegMax) {
88+
return (lonMicroDegMin <= (lonMicroDeg - 360000000)) && ((lonMicroDeg - 360000000) < lonMicroDegMax);
8989
}
9090
return true;
9191
}
9292

9393
@Nonnull
9494
public String toString() {
95-
return "[" + (minY / 1000000.0) + ", " + (maxY / 1000000.0) +
96-
"), [" + (minX / 1000000.0) + ", " + (maxX / 1000000.0) + ')';
95+
return "[" + (latMicroDegMin / 1000000.0) + ", " + (latMicroDegMax / 1000000.0) +
96+
"), [" + (lonMicroDegMin / 1000000.0) + ", " + (lonMicroDegMax / 1000000.0) + ')';
9797
}
9898
}

src/main/java/com/mapcode/DataAccess.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,19 @@ private DataAccess() {
111111
// Empty.
112112
}
113113

114-
static int getMinX(final int territoryRecord) {
114+
static int getLonMicroDegMin(final int territoryRecord) {
115115
return FILE_DATA[territoryRecord * 5];
116116
}
117117

118-
static int getMinY(final int territoryRecord) {
118+
static int getLatMicroDegMin(final int territoryRecord) {
119119
return FILE_DATA[(territoryRecord * 5) + 1];
120120
}
121121

122-
static int getMaxX(final int territoryRecord) {
122+
static int getLonMicroDegMax(final int territoryRecord) {
123123
return FILE_DATA[(territoryRecord * 5) + 2];
124124
}
125125

126-
static int getMaxY(final int territoryRecord) {
126+
static int getLatMicroDegMax(final int territoryRecord) {
127127
return FILE_DATA[(territoryRecord * 5) + 3];
128128
}
129129

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

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ static Point decode(@Nonnull final String argMapcode,
106106
if ((codexi == incodex) || ((incodex == 22) && (codexi == 21))) {
107107

108108
mapcodeZone = decodeGrid(mapcode,
109-
boundary.getMinX(), boundary.getMinY(),
110-
boundary.getMaxX(), boundary.getMaxY(),
109+
boundary.getLonMicroDegMin(), boundary.getLatMicroDegMin(),
110+
boundary.getLonMicroDegMax(), boundary.getLatMicroDegMax(),
111111
territoryRecord, extrapostfix);
112112

113113
// first of all, make sure the zone fits the country
@@ -161,8 +161,8 @@ static Point decode(@Nonnull final String argMapcode,
161161
// i = grid with headerletter
162162
if ((incodex == (codexi + 10)) && (Data.headerLetter(territoryRecord).charAt(0) == mapcode.charAt(0))) {
163163
mapcodeZone = decodeGrid(mapcode.substring(1),
164-
boundary.getMinX(), boundary.getMinY(),
165-
boundary.getMaxX(), boundary.getMaxY(),
164+
boundary.getLonMicroDegMin(), boundary.getLatMicroDegMin(),
165+
boundary.getLonMicroDegMax(), boundary.getLatMicroDegMax(),
166166
territoryRecord, extrapostfix);
167167
break;
168168
}
@@ -438,10 +438,10 @@ private static MapcodeZone decodeNameless(final String str, final int firstrec,
438438
int xSIDE = side;
439439

440440
Boundary boundary = createFromTerritoryRecord(territoryRecord);
441-
final int maxx = boundary.getMaxX();
442-
final int maxy = boundary.getMaxY();
443-
final int minx = boundary.getMinX();
444-
final int miny = boundary.getMinY();
441+
final int maxx = boundary.getLonMicroDegMax();
442+
final int maxy = boundary.getLatMicroDegMax();
443+
final int minx = boundary.getLonMicroDegMin();
444+
final int miny = boundary.getLatMicroDegMin();
445445

446446
final int dx;
447447
final int dy;
@@ -493,10 +493,10 @@ private static MapcodeZone decodeAutoHeader(final String input, final int m, fin
493493
return MapcodeZone.empty(); // return undefined
494494
}
495495

496-
final int maxx = createFromTerritoryRecord(i).getMaxX();
497-
final int maxy = createFromTerritoryRecord(i).getMaxY();
498-
final int minx = createFromTerritoryRecord(i).getMinX();
499-
final int miny = createFromTerritoryRecord(i).getMinY();
496+
final int maxx = createFromTerritoryRecord(i).getLonMicroDegMax();
497+
final int maxy = createFromTerritoryRecord(i).getLatMicroDegMax();
498+
final int minx = createFromTerritoryRecord(i).getLonMicroDegMin();
499+
final int miny = createFromTerritoryRecord(i).getLatMicroDegMin();
500500

501501
int h = ((maxy - miny) + 89) / 90;
502502
final int xdiv = Common.xDivider(miny, maxy);
@@ -805,16 +805,16 @@ private static MapcodeZone decodeExtension(final int y, final int x, final int d
805805
} // not odd
806806

807807
// FORCE_RECODE - restrict the coordinate range to the extremes that were provided
808-
if (mapcodeZone.getFractionMaxX() > (maxLonMicroDeg * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR)) {
809-
mapcodeZone.setFractionMaxX(maxLonMicroDeg * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
808+
if (mapcodeZone.getLonFractionMax() > (maxLonMicroDeg * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR)) {
809+
mapcodeZone.setLonFractionMax(maxLonMicroDeg * Point.LON_MICRODEG_TO_FRACTIONS_FACTOR);
810810
}
811811
if (dividery >= 0) {
812-
if (mapcodeZone.getFractionMaxY() > (extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR)) {
813-
mapcodeZone.setFractionMaxY(extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR);
812+
if (mapcodeZone.getLatFractionMax() > (extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR)) {
813+
mapcodeZone.setLatFractionMax(extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR);
814814
}
815815
} else {
816-
if (mapcodeZone.getFractionMinY() < (extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR)) {
817-
mapcodeZone.setFractionMinY(extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR);
816+
if (mapcodeZone.getLatFractionMin() < (extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR)) {
817+
mapcodeZone.setLatFractionMin(extremeLatMicroDeg * Point.LAT_MICRODEG_TO_FRACTIONS_FACTOR);
818818
}
819819
}
820820
return mapcodeZone;

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,10 @@ private static String encodeGrid(final int m, final Point pointToEncode) {
186186
divx = nc[prelen] / divy;
187187
}
188188

189-
final int minx = createFromTerritoryRecord(m).getMinX();
190-
final int miny = createFromTerritoryRecord(m).getMinY();
191-
final int maxx = createFromTerritoryRecord(m).getMaxX();
192-
final int maxy = createFromTerritoryRecord(m).getMaxY();
189+
final int minx = createFromTerritoryRecord(m).getLonMicroDegMin();
190+
final int miny = createFromTerritoryRecord(m).getLatMicroDegMin();
191+
final int maxx = createFromTerritoryRecord(m).getLonMicroDegMax();
192+
final int maxy = createFromTerritoryRecord(m).getLatMicroDegMax();
193193

194194
final int ygridsize = (((maxy - miny) + divy) - 1) / divy;
195195
int rely = pointToEncode.getLatMicroDeg() - miny;
@@ -278,10 +278,10 @@ private static String encodeAutoHeader(final Point pointToEncode, final int this
278278
int i = firstindex;
279279
while (true) {
280280

281-
final int maxx = createFromTerritoryRecord(i).getMaxX();
282-
final int maxy = createFromTerritoryRecord(i).getMaxY();
283-
final int minx = createFromTerritoryRecord(i).getMinX();
284-
final int miny = createFromTerritoryRecord(i).getMinY();
281+
final int maxx = createFromTerritoryRecord(i).getLonMicroDegMax();
282+
final int maxy = createFromTerritoryRecord(i).getLatMicroDegMax();
283+
final int minx = createFromTerritoryRecord(i).getLonMicroDegMin();
284+
final int miny = createFromTerritoryRecord(i).getLatMicroDegMin();
285285

286286
int h = ((maxy - miny) + 89) / 90;
287287
final int xdiv = xDivider(miny, maxy);
@@ -371,9 +371,9 @@ private static String encodeNameless(final Point pointToEncode, final int index,
371371
final int orgSide = side;
372372
int xSide = side;
373373

374-
final int maxy = createFromTerritoryRecord(index).getMaxY();
375-
final int minx = createFromTerritoryRecord(index).getMinX();
376-
final int miny = createFromTerritoryRecord(index).getMinY();
374+
final int maxy = createFromTerritoryRecord(index).getLatMicroDegMax();
375+
final int minx = createFromTerritoryRecord(index).getLonMicroDegMin();
376+
final int miny = createFromTerritoryRecord(index).getLatMicroDegMin();
377377

378378
final int dividerx4 = xDivider(miny, maxy);
379379
final int xFracture = pointToEncode.getLonFraction() / 810000;

src/main/java/com/mapcode/MapcodeCodec.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ public static boolean isNearMultipleBorders(@Nonnull final Point point, @Nonnull
285285
for (int territoryRecord = uptoTerritoryRecord; territoryRecord >= fromTerritoryRecord; territoryRecord--) {
286286
if (!Data.isRestricted(territoryRecord)) {
287287
final Boundary boundary = Boundary.createFromTerritoryRecord(territoryRecord);
288-
final int xdiv8 = Common.xDivider(boundary.getMinY(), boundary.getMaxY()) / 4;
289-
if (boundary.extendBoundary(xdiv8, 60).containsPoint(point)) {
290-
if (!boundary.extendBoundary(-xdiv8, -60).containsPoint(point)) {
288+
final int xdiv8 = Common.xDivider(boundary.getLatMicroDegMin(), boundary.getLatMicroDegMax()) / 4;
289+
if (boundary.extendBoundary(60, xdiv8).containsPoint(point)) {
290+
if (!boundary.extendBoundary(-60, -xdiv8).containsPoint(point)) {
291291
nrFound++;
292292
if (nrFound > 1) {
293293
return true;

0 commit comments

Comments
 (0)