From e058e1427ac5bb76ac7477ef295e14964e74cb06 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 14:39:19 -0700 Subject: [PATCH 01/14] test both advanced and non-advanced paths equally --- java/src/test/java/com/mlt/TestUtils.java | 168 ++++++++---------- .../java/com/mlt/decoder/MltDecoderTest.java | 167 +++++++++++------ 2 files changed, 184 insertions(+), 151 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index f1f37c25..b04747c6 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -3,123 +3,101 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import com.mlt.converter.mvt.MapboxVectorTile; +import com.mlt.data.Feature; import com.mlt.data.MapLibreTile; import com.mlt.vector.FeatureTable; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; public class TestUtils { + + private static int compareFeatures( + List mltFeatures, List mvtFeatures, boolean isFeatureTableSorted) { + int numErrors = 0; + for (var j = 0; j < mltFeatures.size(); j++) { + var mltFeature = mltFeatures.get(j); + var mvtFeature = + isFeatureTableSorted + ? mvtFeatures.stream().filter(f -> f.id() == mltFeature.id()).findFirst().get() + : mvtFeatures.get(j); + assertEquals(mvtFeature.id(), mltFeature.id()); + var mltGeometry = mltFeature.geometry(); + var mvtGeometry = mvtFeature.geometry(); + if (!mvtGeometry.equalsExact(mltGeometry)) { + System.out.println("Failure comparing geometry for feature: " + mvtFeature.id()); + System.out.println(" mvtGeometry: " + mvtGeometry); + System.out.println(" mltGeometry: " + mltGeometry); + numErrors++; + } + var mltProperties = mltFeature.properties(); + var mvtProperties = mvtFeature.properties(); + for (var mvtProperty : mvtProperties.entrySet()) { + var mvtPropertyKey = mvtProperty.getKey(); + if (mvtPropertyKey.equals("name:ja:rm")) { + System.out.println( + "Skip verification for the name:ja:rm property name since it is currently" + + " not supported in the converter."); + numErrors++; + continue; + } + if (mvtPropertyKey.equals("id")) { + // TODO: Known issue where we discard id as a property + continue; + } + var mltProperty = mltProperties.get(mvtPropertyKey); + if (mltProperty == null) { + System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); + System.out.println(" mvtProperties: " + mvtProperties); + System.out.println(" mltProperties: " + mltProperties); + numErrors++; + } else if (!mltProperty.equals(mvtProperty.getValue())) { + System.out.println( + "Failure comparing property " + + mvtProperty.getKey() + + " for feature: " + + mvtFeature.id()); + System.out.println(" mvtProperty: " + mvtProperty.getValue()); + System.out.println(" mltProperty: " + mltProperty); + numErrors++; + } else { + assertEquals(mvtProperty.getValue(), mltProperty); + } + } + } + return numErrors; + } + public static int compareTilesVectorized( FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { int numErrors = 0; var mvtLayers = mvTile.layers(); + assertEquals(featureTables.length, mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { - var featureTable = featureTables[i]; var mvtLayer = mvtLayers.get(i); - var mvtFeatures = mvtLayer.features(); + var mvtFeatures = mvtLayers.get(i).features(); + var featureTable = featureTables[i]; var featureIterator = featureTable.iterator(); - - for (var j = 0; j < mvtFeatures.size(); j++) { - var mltFeature = featureIterator.next(); - var mvtFeature = - isFeatureTableSorted - ? mvtFeatures.stream().filter(f -> f.id() == mltFeature.id()).findFirst().get() - : mvtFeatures.get(j); - - assertEquals(mvtFeature.id(), mltFeature.id()); - - var mvtGeometry = mvtFeature.geometry(); - var mltGeometry = mltFeature.geometry(); - assertEquals(mvtGeometry, mltGeometry); - - var mltProperties = mltFeature.properties(); - for (var property : mltProperties.entrySet()) { - var mltPropertyKey = property.getKey(); - var mltPropertyValue = property.getValue(); - if (mltPropertyValue instanceof Map) { - /* Handle shared dictionary case -> currently only String is supported - * as nested property in the converter, so only handle this case */ - var mvtProperties = mvtFeature.properties(); - var nestedStringValues = (Map) mltPropertyValue; - var mvtStringProperties = - mvtProperties.entrySet().stream() - .filter( - p -> p.getKey().contains(mltPropertyKey) && p.getValue() instanceof String) - .toList(); - // TODO: verify why mlt seems to have a property more than mvt on the - // name:* column in some tiles - for (var mvtProperty : mvtStringProperties) { - var mvtPropertyKey = mvtProperty.getKey(); - var mvtPropertyValue = mvtProperty.getValue(); - var mltValue = nestedStringValues.get(mvtPropertyKey); - - if (mvtPropertyKey.equals("name:ja:rm")) { - // TODO: fix -> currently the converter can't handle a triple nested property name - System.out.println( - "Skip verification for the name:ja:rm property name since it is currently" - + " not supported in the converter."); - numErrors++; - continue; - } - - assertEquals(mvtPropertyValue, mltValue); - } - } else { - assertEquals(mvtFeature.properties().get(mltPropertyKey), mltPropertyValue); - } - } + var mltFeatures = new ArrayList(); + while (featureIterator.hasNext()) { + mltFeatures.add(featureIterator.next()); } + numErrors += compareFeatures(mltFeatures, mvtFeatures, isFeatureTableSorted); } return numErrors; } - public static int compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile mvTile) { + public static int compareTilesSequential( + MapLibreTile mlTile, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { int numErrors = 0; var mltLayers = mlTile.layers(); var mvtLayers = mvTile.layers(); - + assertEquals(mltLayers.size(), mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { - var mltLayer = mltLayers.get(i); var mvtLayer = mvtLayers.get(i); + var mvtFeatures = mvtLayers.get(i).features(); + var mltLayer = mltLayers.get(i); var mltFeatures = mltLayer.features(); - var mvtFeatures = mvtLayer.features(); - for (com.mlt.data.Feature mvtFeature : mvtFeatures) { - var mltFeature = - mltFeatures.stream().filter(f -> f.id() == mvtFeature.id()).findFirst().get(); - - assertEquals(mvtFeature.id(), mltFeature.id()); - - var mltGeometry = mltFeature.geometry(); - var mvtGeometry = mvtFeature.geometry(); - assertEquals(mvtGeometry, mltGeometry); - - var mltProperties = mltFeature.properties(); - var mvtProperties = mvtFeature.properties(); - for (var mvtProperty : mvtProperties.entrySet()) { - var mvtPropertyKey = mvtProperty.getKey(); - if (mvtPropertyKey.equals("name:ja:rm")) { - System.out.println( - "Skip verification for the name:ja:rm property name since it is currently" - + " not supported in the converter."); - numErrors++; - continue; - } - - var mltProperty = mltProperties.get(mvtProperty.getKey()); - if (mltProperty == null) { - // System.out.println("Failure comparing property " + mvtProperty.getKey() + " for - // feature: " + mvtFeature.id() + " as mltProperty is null"); - numErrors++; - } else if (!mltProperty.equals(mvtProperty.getValue())) { - // System.out.println("Failure comparing property " + mvtProperty.getKey() + " for - // feature: " + mvtFeature.id()); - // System.out.println(" mvtProperty: " + mvtProperty.getValue()); - // System.out.println(" mltProperty: " + mltProperty); - numErrors++; - } else { - assertEquals(mvtProperty.getValue(), mltProperty); - } - } - } + numErrors += compareFeatures(mltFeatures, mvtFeatures, isFeatureTableSorted); } return numErrors; } diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 94c35e9d..3cd49674 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.mlt.TestSettings; import com.mlt.TestUtils; @@ -27,6 +28,22 @@ enum DecoderType { VECTORIZED } +enum EncodingType { + BOTH, + NONADVANCED, + ADVANCED +} + +final class DecodingResult { + public final int numErrors; + public final int numErrorsAdvanced; + + public DecodingResult(int first, int second) { + this.numErrors = first; + this.numErrorsAdvanced = second; + } +} + public class MltDecoderTest { /* Bing Maps tests --------------------------------------------------------- */ @@ -37,34 +54,17 @@ private static Stream bingProvider() { "6-32-23", "6-32-21", "7-65-42", "7-66-42", "7-66-43", "7-66-44"); } - @DisplayName("Decode Bing Tiles (Vectorized)") + @DisplayName("Decode Bing Tiles") @ParameterizedTest @MethodSource("bingProvider") - public void decodeBingTilesVectorized(String tileId) throws IOException { - int numErrors = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false); + public void decodeBingTiles(String tileId) throws IOException { + var result = + testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.BOTH, false); + assertEquals(2, result.numErrors, "Error for " + tileId + "/non-advanced: " + result.numErrors); assertEquals( 0, - numErrors, - "There should be no errors in the Bing tiles for " - + tileId - + " but there were " - + numErrors - + " errors"); - } - - // TODO Currently a lot of property errors are expected in the Bing tiles in SEQUENTIAL mode - // TODO: start testing more tiles once the decoder is fixed - public void decodeBingTilesSequential() throws IOException { - String tileId = "7-66-43"; - int numErrors = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.SEQUENTIAL, false); - assertEquals( - 660, - numErrors, - "There should be no errors in the Bing tiles for " - + tileId - + " but there were " - + numErrors - + " errors"); + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); } @Test @@ -72,24 +72,18 @@ public void currentlyFailingBingDecoding1() throws IOException { var exception = assertThrows( Exception.class, - () -> testTile("5-16-9", TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false)); + () -> + testTile( + "5-16-9", + TestSettings.BING_MVT_PATH, + DecoderType.VECTORIZED, + EncodingType.ADVANCED, + false)); assertEquals( "java.lang.IllegalArgumentException: VectorType not supported yet: CONST", exception.toString()); } - @Test - // Currently fails, need to root cause property decoding difference - public void currentlyFailingBingDecoding3() throws IOException { - var exception = - assertThrows( - org.opentest4j.AssertionFailedError.class, - () -> testTile("5-15-10", TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false)); - assertEquals( - "org.opentest4j.AssertionFailedError: expected: <(U.K.)> but was: ", - exception.toString()); - } - /* OpenMapTiles schema based vector tiles tests --------------------------------------------------------- */ private static Stream omtProvider() { @@ -115,28 +109,74 @@ private static Stream omtProvider() { "14_8299_10748"); } - @DisplayName("Decode OMT Tiles") + @DisplayName("Decode OMT Tiles (advanced encodings)") @ParameterizedTest() @MethodSource("omtProvider") public void decodeOMTTiles(String tileId) throws IOException { - int numErrors = testTile(tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, false); + var result = + testTile(tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, false); if (tileId == "2_2_2") { - // We expect errors currently in OMT tiles where name:ja:rm is present - assertEquals(4, numErrors, "There should be no errors in the OMT tiles: " + tileId); + assertEquals( + 4, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + } else { + assertEquals( + 0, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + } + } + + @DisplayName("Decode OMT Tiles (non-advanced encodings)") + @ParameterizedTest() + @MethodSource("omtProvider") + public void decodeOMTTiles2(String tileId) throws IOException { + if (tileId == "13_4265_5467" || tileId == "14_8298_10748" || tileId == "14_8299_10748") { + // System.out.println("Skipping test for " + tileId + "due to know issues with the + // converter"); + var exception = + assertThrows( + Exception.class, + () -> + testTile( + tileId, + TestSettings.OMT_MVT_PATH, + DecoderType.BOTH, + EncodingType.NONADVANCED, + false)); + assertTrue(exception.toString().contains("ArrayIndexOutOfBoundsException")); } else { - assertEquals(0, numErrors, "There should be no errors in the OMT tiles: " + tileId); + var result = + testTile( + tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); + if (tileId == "2_2_2") { + assertEquals( + 0, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + } else { + assertEquals( + 0, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + } } } /* Test utility functions */ - private int testTile(String tileId, String tileDirectory, DecoderType type, boolean allowSorting) + private DecodingResult testTile( + String tileId, + String tileDirectory, + DecoderType decoder, + EncodingType encoding, + boolean allowSorting) throws IOException { var mvtFilePath = Paths.get(tileDirectory, tileId + ".mvt"); var mvTile = MvtUtils.decodeMvt(mvtFilePath); - var columnMapping = new ColumnMapping("name", ":", true); - var columnMappings = Optional.of(List.of(columnMapping)); + var columnMappings = Optional.>empty(); var tileMetadata = MltConverter.createTilesetMetadata(mvTile, columnMappings, true); var allowIdRegeneration = false; @@ -146,21 +186,36 @@ private int testTile(String tileId, String tileDirectory, DecoderType type, bool TestSettings.OPTIMIZED_MVT_LAYERS.stream() .collect(Collectors.toMap(l -> l, l -> optimization)); var includeIds = true; - var useAdvancedEncodingSchemes = true; var mlTile = MltConverter.convertMvt( - mvTile, - new ConversionConfig(includeIds, useAdvancedEncodingSchemes, optimizations), - tileMetadata); + mvTile, new ConversionConfig(includeIds, false, optimizations), tileMetadata); + var mlTileAdvanced = + MltConverter.convertMvt( + mvTile, new ConversionConfig(includeIds, true, optimizations), tileMetadata); int numErrors = 0; - if (type == DecoderType.SEQUENTIAL || type == DecoderType.BOTH) { - var decoded = MltDecoder.decodeMlTile(mlTile, tileMetadata); - numErrors += TestUtils.compareTilesSequential(decoded, mvTile); + int numErrorsAdvanced = 0; + if (decoder == DecoderType.SEQUENTIAL || decoder == DecoderType.BOTH) { + if (encoding == EncodingType.ADVANCED || encoding == EncodingType.BOTH) { + var decodedAdvanced = MltDecoder.decodeMlTile(mlTileAdvanced, tileMetadata); + numErrorsAdvanced += + TestUtils.compareTilesSequential(decodedAdvanced, mvTile, allowSorting); + } + if (encoding == EncodingType.NONADVANCED || encoding == EncodingType.BOTH) { + var decoded = MltDecoder.decodeMlTile(mlTile, tileMetadata); + numErrors += TestUtils.compareTilesSequential(decoded, mvTile, allowSorting); + } } - if (type == DecoderType.VECTORIZED || type == DecoderType.BOTH) { - var decoded = MltDecoder.decodeMlTileVectorized(mlTile, tileMetadata); - numErrors += TestUtils.compareTilesVectorized(decoded, mvTile, allowSorting); + if (decoder == DecoderType.VECTORIZED || decoder == DecoderType.BOTH) { + if (encoding == EncodingType.ADVANCED || encoding == EncodingType.BOTH) { + var decodedAdvanced = MltDecoder.decodeMlTileVectorized(mlTileAdvanced, tileMetadata); + numErrorsAdvanced += + TestUtils.compareTilesVectorized(decodedAdvanced, mvTile, allowSorting); + } + if (encoding == EncodingType.NONADVANCED || encoding == EncodingType.BOTH) { + var decoded = MltDecoder.decodeMlTileVectorized(mlTile, tileMetadata); + numErrors += TestUtils.compareTilesVectorized(decoded, mvTile, allowSorting); + } } - return numErrors; + return new DecodingResult(numErrors, numErrorsAdvanced); } } From 27b5cd3c57bf5b9a02233c3d5140b74a3a0d80c3 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 14:53:17 -0700 Subject: [PATCH 02/14] Add ticket link to #181 --- java/src/test/java/com/mlt/TestUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index b04747c6..fa7590c2 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -40,8 +40,9 @@ private static int compareFeatures( numErrors++; continue; } + // TODO: remove the below special case once this bug is fixed: + // https://github.com/maplibre/maplibre-tile-spec/issues/181 if (mvtPropertyKey.equals("id")) { - // TODO: Known issue where we discard id as a property continue; } var mltProperty = mltProperties.get(mvtPropertyKey); From 6e66a1d3b730e8bff846c7efac9f75509171747a Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 14:56:17 -0700 Subject: [PATCH 03/14] name:ja:rm special case only needed when nested properties are enabled --- java/src/test/java/com/mlt/TestUtils.java | 33 ++++++++----------- .../java/com/mlt/decoder/MltDecoderTest.java | 30 +++++------------ 2 files changed, 21 insertions(+), 42 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index fa7590c2..43058075 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -24,22 +24,15 @@ private static int compareFeatures( var mltGeometry = mltFeature.geometry(); var mvtGeometry = mvtFeature.geometry(); if (!mvtGeometry.equalsExact(mltGeometry)) { - System.out.println("Failure comparing geometry for feature: " + mvtFeature.id()); - System.out.println(" mvtGeometry: " + mvtGeometry); - System.out.println(" mltGeometry: " + mltGeometry); + // System.out.println("Failure comparing geometry for feature: " + mvtFeature.id()); + // System.out.println(" mvtGeometry: " + mvtGeometry); + // System.out.println(" mltGeometry: " + mltGeometry); numErrors++; } var mltProperties = mltFeature.properties(); var mvtProperties = mvtFeature.properties(); for (var mvtProperty : mvtProperties.entrySet()) { var mvtPropertyKey = mvtProperty.getKey(); - if (mvtPropertyKey.equals("name:ja:rm")) { - System.out.println( - "Skip verification for the name:ja:rm property name since it is currently" - + " not supported in the converter."); - numErrors++; - continue; - } // TODO: remove the below special case once this bug is fixed: // https://github.com/maplibre/maplibre-tile-spec/issues/181 if (mvtPropertyKey.equals("id")) { @@ -47,18 +40,18 @@ private static int compareFeatures( } var mltProperty = mltProperties.get(mvtPropertyKey); if (mltProperty == null) { - System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); - System.out.println(" mvtProperties: " + mvtProperties); - System.out.println(" mltProperties: " + mltProperties); + // System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); + // System.out.println(" mvtProperties: " + mvtProperties); + // System.out.println(" mltProperties: " + mltProperties); numErrors++; } else if (!mltProperty.equals(mvtProperty.getValue())) { - System.out.println( - "Failure comparing property " - + mvtProperty.getKey() - + " for feature: " - + mvtFeature.id()); - System.out.println(" mvtProperty: " + mvtProperty.getValue()); - System.out.println(" mltProperty: " + mltProperty); + // System.out.println( + // "Failure comparing property " + // + mvtProperty.getKey() + // + " for feature: " + // + mvtFeature.id()); + // System.out.println(" mvtProperty: " + mvtProperty.getValue()); + // System.out.println(" mltProperty: " + mltProperty); numErrors++; } else { assertEquals(mvtProperty.getValue(), mltProperty); diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 3cd49674..ebb1ae0b 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -115,17 +115,10 @@ private static Stream omtProvider() { public void decodeOMTTiles(String tileId) throws IOException { var result = testTile(tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, false); - if (tileId == "2_2_2") { - assertEquals( - 4, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); - } else { - assertEquals( - 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); - } + assertEquals( + 0, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); } @DisplayName("Decode OMT Tiles (non-advanced encodings)") @@ -150,17 +143,10 @@ public void decodeOMTTiles2(String tileId) throws IOException { var result = testTile( tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); - if (tileId == "2_2_2") { - assertEquals( - 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); - } else { - assertEquals( - 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); - } + assertEquals( + 0, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); } } From 4db97cd1bfaf2b375886b179407a75178bcb1cde Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:09:43 -0700 Subject: [PATCH 04/14] add a note about #182 --- java/src/test/java/com/mlt/decoder/MltDecoderTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index ebb1ae0b..3345efa7 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -67,6 +67,10 @@ public void decodeBingTiles(String tileId) throws IOException { "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); } + // TODO: + // once https://github.com/maplibre/maplibre-tile-spec/issues/182 is fixed + // add the "5-16-9" tile to the bingProvider + // and remove this test @Test public void currentlyFailingBingDecoding1() throws IOException { var exception = From 06b2cf4dec39c4d4795e531b0aa81876a2296acb Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:14:29 -0700 Subject: [PATCH 05/14] Add a reference to #183 --- java/src/test/java/com/mlt/decoder/MltDecoderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 3345efa7..7719d083 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -130,8 +130,8 @@ public void decodeOMTTiles(String tileId) throws IOException { @MethodSource("omtProvider") public void decodeOMTTiles2(String tileId) throws IOException { if (tileId == "13_4265_5467" || tileId == "14_8298_10748" || tileId == "14_8299_10748") { - // System.out.println("Skipping test for " + tileId + "due to know issues with the - // converter"); + // TODO remove this special case for these 3 tiles once this bug is fixed: + // https://github.com/maplibre/maplibre-tile-spec/issues/183 var exception = assertThrows( Exception.class, From 979ef6bfa31cfa4366e327a5a09b9415fda3762a Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:23:59 -0700 Subject: [PATCH 06/14] add reference to #184 --- java/src/test/java/com/mlt/decoder/MltDecoderTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 7719d083..4237c0fd 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -60,6 +60,8 @@ private static Stream bingProvider() { public void decodeBingTiles(String tileId) throws IOException { var result = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.BOTH, false); + // TODO assert that zero errors are found once + // https://github.com/maplibre/maplibre-tile-spec/issues/184 is fixed assertEquals(2, result.numErrors, "Error for " + tileId + "/non-advanced: " + result.numErrors); assertEquals( 0, From 726e795735ca61053d31776a18dd31234a1c0eb8 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:28:03 -0700 Subject: [PATCH 07/14] enable logging that currently does not trigger given current tests --- java/src/test/java/com/mlt/TestUtils.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index 43058075..fa8ddebf 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -40,18 +40,18 @@ private static int compareFeatures( } var mltProperty = mltProperties.get(mvtPropertyKey); if (mltProperty == null) { - // System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); - // System.out.println(" mvtProperties: " + mvtProperties); - // System.out.println(" mltProperties: " + mltProperties); + System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); + System.out.println(" mvtProperties: " + mvtProperties); + System.out.println(" mltProperties: " + mltProperties); numErrors++; } else if (!mltProperty.equals(mvtProperty.getValue())) { - // System.out.println( - // "Failure comparing property " - // + mvtProperty.getKey() - // + " for feature: " - // + mvtFeature.id()); - // System.out.println(" mvtProperty: " + mvtProperty.getValue()); - // System.out.println(" mltProperty: " + mltProperty); + System.out.println( + "Failure comparing property " + + mvtProperty.getKey() + + " for feature: " + + mvtFeature.id()); + System.out.println(" mvtProperty: " + mvtProperty.getValue()); + System.out.println(" mltProperty: " + mltProperty); numErrors++; } else { assertEquals(mvtProperty.getValue(), mltProperty); From 82afe272eae16100902beb9a3e9b6f00394d5a0c Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:49:00 -0700 Subject: [PATCH 08/14] Reference #185 --- .../java/com/mlt/decoder/MltDecoderTest.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 4237c0fd..5cb5e155 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -92,6 +92,20 @@ public void currentlyFailingBingDecoding1() throws IOException { /* OpenMapTiles schema based vector tiles tests --------------------------------------------------------- */ + // TODO: after https://github.com/maplibre/maplibre-tile-spec/issues/185 is fixed + // remove this test and start testing all the OMT tiles with sorting enabled + @Test + public void decodeOMTTilesSortedFail() throws IOException { + var exception = + assertThrows( + Exception.class, + () -> + testTile("4_8_10", TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, true)); + assertEquals( + "java.lang.IndexOutOfBoundsException", + exception.toString()); + } + private static Stream omtProvider() { return Stream.of( "2_2_2", @@ -115,7 +129,7 @@ private static Stream omtProvider() { "14_8299_10748"); } - @DisplayName("Decode OMT Tiles (advanced encodings)") + @DisplayName("Decode OMT Tiles (advanced encodings, non-sorted)") @ParameterizedTest() @MethodSource("omtProvider") public void decodeOMTTiles(String tileId) throws IOException { @@ -151,8 +165,8 @@ public void decodeOMTTiles2(String tileId) throws IOException { tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); assertEquals( 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + result.numErrors, + "Error for " + tileId + "/advanced: " + result.numErrors); } } @@ -184,27 +198,31 @@ private DecodingResult testTile( var mlTileAdvanced = MltConverter.convertMvt( mvTile, new ConversionConfig(includeIds, true, optimizations), tileMetadata); - int numErrors = 0; - int numErrorsAdvanced = 0; + int numErrors = -1; + int numErrorsAdvanced = -1; if (decoder == DecoderType.SEQUENTIAL || decoder == DecoderType.BOTH) { if (encoding == EncodingType.ADVANCED || encoding == EncodingType.BOTH) { var decodedAdvanced = MltDecoder.decodeMlTile(mlTileAdvanced, tileMetadata); + if (numErrorsAdvanced == -1) numErrorsAdvanced = 0; numErrorsAdvanced += TestUtils.compareTilesSequential(decodedAdvanced, mvTile, allowSorting); } if (encoding == EncodingType.NONADVANCED || encoding == EncodingType.BOTH) { var decoded = MltDecoder.decodeMlTile(mlTile, tileMetadata); + if (numErrors == -1) numErrors = 0; numErrors += TestUtils.compareTilesSequential(decoded, mvTile, allowSorting); } } if (decoder == DecoderType.VECTORIZED || decoder == DecoderType.BOTH) { if (encoding == EncodingType.ADVANCED || encoding == EncodingType.BOTH) { var decodedAdvanced = MltDecoder.decodeMlTileVectorized(mlTileAdvanced, tileMetadata); + if (numErrorsAdvanced == -1) numErrorsAdvanced = 0; numErrorsAdvanced += TestUtils.compareTilesVectorized(decodedAdvanced, mvTile, allowSorting); } if (encoding == EncodingType.NONADVANCED || encoding == EncodingType.BOTH) { var decoded = MltDecoder.decodeMlTileVectorized(mlTile, tileMetadata); + if (numErrors == -1) numErrors = 0; numErrors += TestUtils.compareTilesVectorized(decoded, mvTile, allowSorting); } } From d53271a71f20ef5dac664d9e5359212cef540a79 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 15:56:28 -0700 Subject: [PATCH 09/14] add a test for #186 --- java/src/test/java/com/mlt/TestUtils.java | 20 +++++++++---------- .../java/com/mlt/decoder/MltDecoderTest.java | 13 ++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index fa8ddebf..43058075 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -40,18 +40,18 @@ private static int compareFeatures( } var mltProperty = mltProperties.get(mvtPropertyKey); if (mltProperty == null) { - System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); - System.out.println(" mvtProperties: " + mvtProperties); - System.out.println(" mltProperties: " + mltProperties); + // System.out.println(mvtFeature.id() + " mlt prop missing for " + mvtProperty.getKey()); + // System.out.println(" mvtProperties: " + mvtProperties); + // System.out.println(" mltProperties: " + mltProperties); numErrors++; } else if (!mltProperty.equals(mvtProperty.getValue())) { - System.out.println( - "Failure comparing property " - + mvtProperty.getKey() - + " for feature: " - + mvtFeature.id()); - System.out.println(" mvtProperty: " + mvtProperty.getValue()); - System.out.println(" mltProperty: " + mltProperty); + // System.out.println( + // "Failure comparing property " + // + mvtProperty.getKey() + // + " for feature: " + // + mvtFeature.id()); + // System.out.println(" mvtProperty: " + mvtProperty.getValue()); + // System.out.println(" mltProperty: " + mltProperty); numErrors++; } else { assertEquals(mvtProperty.getValue(), mltProperty); diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 5cb5e155..51020f16 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -48,6 +48,19 @@ public class MltDecoderTest { /* Bing Maps tests --------------------------------------------------------- */ + // TODO: after https://github.com/maplibre/maplibre-tile-spec/issues/186 is fixed + // remove this test and start testing all the Bing tiles with sorting enabled + @Test + public void decodeBingTilesSortedFail() throws IOException { + var tileId = "4-8-5"; + var result = + testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, true); + assertEquals( + 1148, + result.numErrorsAdvanced, + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + } + private static Stream bingProvider() { return Stream.of( "4-8-5", "4-9-5", "4-12-6", "4-13-6", "5-16-11", "5-17-11", "5-17-10", "6-32-22", "6-33-22", From 759983accd396e8948aaced60355d704e50d3fd5 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 16:06:13 -0700 Subject: [PATCH 10/14] lint --- .../java/com/mlt/decoder/MltDecoderTest.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 51020f16..5f014c48 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -56,7 +56,7 @@ public void decodeBingTilesSortedFail() throws IOException { var result = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, true); assertEquals( - 1148, + 1148, result.numErrorsAdvanced, "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); } @@ -110,13 +110,16 @@ public void currentlyFailingBingDecoding1() throws IOException { @Test public void decodeOMTTilesSortedFail() throws IOException { var exception = - assertThrows( - Exception.class, - () -> - testTile("4_8_10", TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, true)); - assertEquals( - "java.lang.IndexOutOfBoundsException", - exception.toString()); + assertThrows( + Exception.class, + () -> + testTile( + "4_8_10", + TestSettings.OMT_MVT_PATH, + DecoderType.BOTH, + EncodingType.ADVANCED, + true)); + assertEquals("java.lang.IndexOutOfBoundsException", exception.toString()); } private static Stream omtProvider() { @@ -176,10 +179,7 @@ public void decodeOMTTiles2(String tileId) throws IOException { var result = testTile( tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); - assertEquals( - 0, - result.numErrors, - "Error for " + tileId + "/advanced: " + result.numErrors); + assertEquals(0, result.numErrors, "Error for " + tileId + "/advanced: " + result.numErrors); } } From 3bdf6085c54684b986f11769d2cc9f05d61dee36 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Mon, 24 Jun 2024 12:17:57 -0700 Subject: [PATCH 11/14] more friendly assert messages --- java/src/test/java/com/mlt/TestUtils.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index 43058075..d2553d0a 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -14,13 +14,14 @@ public class TestUtils { private static int compareFeatures( List mltFeatures, List mvtFeatures, boolean isFeatureTableSorted) { int numErrors = 0; + assertEquals(mvtFeatures.size(), mltFeatures.size(), "mvtFeatures.size()=" + mvtFeatures.size() + " mltFeatures.size()=" + mltFeatures.size()); for (var j = 0; j < mltFeatures.size(); j++) { var mltFeature = mltFeatures.get(j); var mvtFeature = isFeatureTableSorted ? mvtFeatures.stream().filter(f -> f.id() == mltFeature.id()).findFirst().get() : mvtFeatures.get(j); - assertEquals(mvtFeature.id(), mltFeature.id()); + assertEquals(mvtFeature.id(), mltFeature.id(), "mvtFeature.id()=" + mvtFeature.id() + " mltFeature.id()=" + mltFeature.id()); var mltGeometry = mltFeature.geometry(); var mvtGeometry = mvtFeature.geometry(); if (!mvtGeometry.equalsExact(mltGeometry)) { @@ -54,7 +55,7 @@ private static int compareFeatures( // System.out.println(" mltProperty: " + mltProperty); numErrors++; } else { - assertEquals(mvtProperty.getValue(), mltProperty); + assertEquals(mvtProperty.getValue(), mltProperty, "mvtProperty.getValue()=" + mvtProperty.getValue() + " mltProperty=" + mltProperty); } } } @@ -65,7 +66,7 @@ public static int compareTilesVectorized( FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { int numErrors = 0; var mvtLayers = mvTile.layers(); - assertEquals(featureTables.length, mvtLayers.size()); + assertEquals(featureTables.length, mvtLayers.size(), "featureTables.length=" + featureTables.length + " mvtLayers.size()=" + mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { var mvtLayer = mvtLayers.get(i); var mvtFeatures = mvtLayers.get(i).features(); @@ -85,7 +86,7 @@ public static int compareTilesSequential( int numErrors = 0; var mltLayers = mlTile.layers(); var mvtLayers = mvTile.layers(); - assertEquals(mltLayers.size(), mvtLayers.size()); + assertEquals(mltLayers.size(), mvtLayers.size(), "mltLayers.size()=" + mltLayers.size() + " mvtLayers.size()=" + mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { var mvtLayer = mvtLayers.get(i); var mvtFeatures = mvtLayers.get(i).features(); From 1f69099af11c8565c6d0fdb23d89f2594039cbaa Mon Sep 17 00:00:00 2001 From: springmeyer Date: Mon, 24 Jun 2024 12:25:12 -0700 Subject: [PATCH 12/14] use record DecodingResult --- .../java/com/mlt/decoder/MltDecoderTest.java | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 5f014c48..19e9163e 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -34,15 +34,7 @@ enum EncodingType { ADVANCED } -final class DecodingResult { - public final int numErrors; - public final int numErrorsAdvanced; - - public DecodingResult(int first, int second) { - this.numErrors = first; - this.numErrorsAdvanced = second; - } -} +record DecodingResult(int numErrors, int numErrorsAdvanced) {} public class MltDecoderTest { @@ -57,8 +49,8 @@ public void decodeBingTilesSortedFail() throws IOException { testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, true); assertEquals( 1148, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + result.numErrorsAdvanced(), + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced()); } private static Stream bingProvider() { @@ -75,11 +67,11 @@ public void decodeBingTiles(String tileId) throws IOException { testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.BOTH, false); // TODO assert that zero errors are found once // https://github.com/maplibre/maplibre-tile-spec/issues/184 is fixed - assertEquals(2, result.numErrors, "Error for " + tileId + "/non-advanced: " + result.numErrors); + assertEquals(2, result.numErrors(), "Error for " + tileId + "/non-advanced: " + result.numErrors()); assertEquals( 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + result.numErrorsAdvanced(), + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced()); } // TODO: @@ -153,8 +145,8 @@ public void decodeOMTTiles(String tileId) throws IOException { testTile(tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.ADVANCED, false); assertEquals( 0, - result.numErrorsAdvanced, - "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced); + result.numErrorsAdvanced(), + "Error for " + tileId + "/advanced: " + result.numErrorsAdvanced()); } @DisplayName("Decode OMT Tiles (non-advanced encodings)") @@ -179,7 +171,7 @@ public void decodeOMTTiles2(String tileId) throws IOException { var result = testTile( tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); - assertEquals(0, result.numErrors, "Error for " + tileId + "/advanced: " + result.numErrors); + assertEquals(0, result.numErrors(), "Error for " + tileId + "/advanced: " + result.numErrors()); } } From 5c13484266a7a9f157a8c3c11b5efea9e6ceae5a Mon Sep 17 00:00:00 2001 From: springmeyer Date: Mon, 24 Jun 2024 12:27:55 -0700 Subject: [PATCH 13/14] java lint --- java/src/test/java/com/mlt/TestUtils.java | 25 +++++++++++++++---- .../java/com/mlt/decoder/MltDecoderTest.java | 6 +++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index d2553d0a..67a81e0e 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -14,14 +14,20 @@ public class TestUtils { private static int compareFeatures( List mltFeatures, List mvtFeatures, boolean isFeatureTableSorted) { int numErrors = 0; - assertEquals(mvtFeatures.size(), mltFeatures.size(), "mvtFeatures.size()=" + mvtFeatures.size() + " mltFeatures.size()=" + mltFeatures.size()); + assertEquals( + mvtFeatures.size(), + mltFeatures.size(), + "mvtFeatures.size()=" + mvtFeatures.size() + " mltFeatures.size()=" + mltFeatures.size()); for (var j = 0; j < mltFeatures.size(); j++) { var mltFeature = mltFeatures.get(j); var mvtFeature = isFeatureTableSorted ? mvtFeatures.stream().filter(f -> f.id() == mltFeature.id()).findFirst().get() : mvtFeatures.get(j); - assertEquals(mvtFeature.id(), mltFeature.id(), "mvtFeature.id()=" + mvtFeature.id() + " mltFeature.id()=" + mltFeature.id()); + assertEquals( + mvtFeature.id(), + mltFeature.id(), + "mvtFeature.id()=" + mvtFeature.id() + " mltFeature.id()=" + mltFeature.id()); var mltGeometry = mltFeature.geometry(); var mvtGeometry = mvtFeature.geometry(); if (!mvtGeometry.equalsExact(mltGeometry)) { @@ -55,7 +61,10 @@ private static int compareFeatures( // System.out.println(" mltProperty: " + mltProperty); numErrors++; } else { - assertEquals(mvtProperty.getValue(), mltProperty, "mvtProperty.getValue()=" + mvtProperty.getValue() + " mltProperty=" + mltProperty); + assertEquals( + mvtProperty.getValue(), + mltProperty, + "mvtProperty.getValue()=" + mvtProperty.getValue() + " mltProperty=" + mltProperty); } } } @@ -66,7 +75,10 @@ public static int compareTilesVectorized( FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { int numErrors = 0; var mvtLayers = mvTile.layers(); - assertEquals(featureTables.length, mvtLayers.size(), "featureTables.length=" + featureTables.length + " mvtLayers.size()=" + mvtLayers.size()); + assertEquals( + featureTables.length, + mvtLayers.size(), + "featureTables.length=" + featureTables.length + " mvtLayers.size()=" + mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { var mvtLayer = mvtLayers.get(i); var mvtFeatures = mvtLayers.get(i).features(); @@ -86,7 +98,10 @@ public static int compareTilesSequential( int numErrors = 0; var mltLayers = mlTile.layers(); var mvtLayers = mvTile.layers(); - assertEquals(mltLayers.size(), mvtLayers.size(), "mltLayers.size()=" + mltLayers.size() + " mvtLayers.size()=" + mvtLayers.size()); + assertEquals( + mltLayers.size(), + mvtLayers.size(), + "mltLayers.size()=" + mltLayers.size() + " mvtLayers.size()=" + mvtLayers.size()); for (var i = 0; i < mvtLayers.size(); i++) { var mvtLayer = mvtLayers.get(i); var mvtFeatures = mvtLayers.get(i).features(); diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 19e9163e..aa6a8d13 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -67,7 +67,8 @@ public void decodeBingTiles(String tileId) throws IOException { testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.BOTH, false); // TODO assert that zero errors are found once // https://github.com/maplibre/maplibre-tile-spec/issues/184 is fixed - assertEquals(2, result.numErrors(), "Error for " + tileId + "/non-advanced: " + result.numErrors()); + assertEquals( + 2, result.numErrors(), "Error for " + tileId + "/non-advanced: " + result.numErrors()); assertEquals( 0, result.numErrorsAdvanced(), @@ -171,7 +172,8 @@ public void decodeOMTTiles2(String tileId) throws IOException { var result = testTile( tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, EncodingType.NONADVANCED, false); - assertEquals(0, result.numErrors(), "Error for " + tileId + "/advanced: " + result.numErrors()); + assertEquals( + 0, result.numErrors(), "Error for " + tileId + "/advanced: " + result.numErrors()); } } From 71232031d3e2a97e53312857b3d79e888ed87fdb Mon Sep 17 00:00:00 2001 From: springmeyer Date: Tue, 25 Jun 2024 11:20:14 -0700 Subject: [PATCH 14/14] fix test expectation now that #184 is fixed --- java/src/test/java/com/mlt/decoder/MltDecoderTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index aa6a8d13..6b4c0e31 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -65,10 +65,8 @@ private static Stream bingProvider() { public void decodeBingTiles(String tileId) throws IOException { var result = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.BOTH, EncodingType.BOTH, false); - // TODO assert that zero errors are found once - // https://github.com/maplibre/maplibre-tile-spec/issues/184 is fixed assertEquals( - 2, result.numErrors(), "Error for " + tileId + "/non-advanced: " + result.numErrors()); + 0, result.numErrors(), "Error for " + tileId + "/non-advanced: " + result.numErrors()); assertEquals( 0, result.numErrorsAdvanced(),