From d4e726d4c9b814f542d0a472783427e2026a75f1 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Thu, 20 Jun 2024 07:41:03 -0700 Subject: [PATCH 1/5] improve error type when const vector is encountered --- .../com/mlt/decoder/vectorized/VectorizedPropertyDecoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/main/java/com/mlt/decoder/vectorized/VectorizedPropertyDecoder.java b/java/src/main/java/com/mlt/decoder/vectorized/VectorizedPropertyDecoder.java index 25667397..0e8a6481 100644 --- a/java/src/main/java/com/mlt/decoder/vectorized/VectorizedPropertyDecoder.java +++ b/java/src/main/java/com/mlt/decoder/vectorized/VectorizedPropertyDecoder.java @@ -166,7 +166,7 @@ public static Vector decodeToRandomAccessFormat( return new BooleanFlatVector(column.getName(), nullabilityBuffer, dataVector); } else { // TODO: handle const - throw new IllegalArgumentException("ConstBooleanVector ist not supported yet."); + throw new IllegalArgumentException("VectorType not supported yet: " + vectorType); } } case UINT_32: From c98801e78d6cec5e7342a8f32650b986a72a6db2 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Thu, 20 Jun 2024 08:48:59 -0700 Subject: [PATCH 2/5] remove no longer relevant TODO --- .../main/java/com/mlt/converter/encodings/GeometryEncoder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/src/main/java/com/mlt/converter/encodings/GeometryEncoder.java b/java/src/main/java/com/mlt/converter/encodings/GeometryEncoder.java index 1aa2f368..9b391db3 100644 --- a/java/src/main/java/com/mlt/converter/encodings/GeometryEncoder.java +++ b/java/src/main/java/com/mlt/converter/encodings/GeometryEncoder.java @@ -246,7 +246,6 @@ public static EncodedGeometryColumn encodeGeometryColumn( if (plainVertexBufferSize <= dictionaryEncodedSize && plainVertexBufferSize <= mortonDictionaryEncodedSize) { // TODO: get rid of extra conversion - // TODO: refactor to use sorted points vertex buffer var encodedVertexBufferStream = encodeVertexBuffer( Arrays.stream(zigZagDeltaVertexBuffer).boxed().collect(Collectors.toList()), From bc0898d3a958c5379e1fffceeb9d16a13946a3d2 Mon Sep 17 00:00:00 2001 From: springmeyer Date: Thu, 20 Jun 2024 08:50:37 -0700 Subject: [PATCH 3/5] refactor the decoder tests --- java/src/test/java/com/mlt/TestUtils.java | 49 ++++- .../java/com/mlt/decoder/MltDecoderTest.java | 190 +++++++++--------- 2 files changed, 137 insertions(+), 102 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index 766565a2..1825d06e 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -1,6 +1,8 @@ package com.mlt; 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.converter.mvt.MapboxVectorTile; import com.mlt.data.MapLibreTile; @@ -8,14 +10,15 @@ import java.util.Map; public class TestUtils { - public static void compareTilesVectorized( - FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { + public static int compareTilesVectorized(FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { + int numErrors = 0; var mvtLayers = mvTile.layers(); for (var i = 0; i < mvtLayers.size(); i++) { var featureTable = featureTables[i]; var mvtLayer = mvtLayers.get(i); var mvtFeatures = mvtLayer.features(); var featureIterator = featureTable.iterator(); + for (var j = 0; j < mvtFeatures.size(); j++) { var mltFeature = featureIterator.next(); var mvtFeature = @@ -54,7 +57,8 @@ public static void compareTilesVectorized( // 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."); + + " not supported in the converter."); + numErrors++; continue; } @@ -66,9 +70,11 @@ public static void compareTilesVectorized( } } } + return numErrors; } - public static void compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile mvTile) { + public static int compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile mvTile) { + int numErrors = 0; var mltLayers = mlTile.layers(); var mvtLayers = mvTile.layers(); @@ -80,24 +86,47 @@ public static void compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile 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); + if (!mvtGeometry.toString().equals(mltGeometry.toString())) { + // System.out.println("Failure comparing geometries for feature: " + mvtFeature.id()); + // System.out.println(" mvtGeometry: " + mvtGeometry); + // System.out.println(" mltGeometry: " + mltGeometry); + numErrors++; + } else { + assertEquals(mvtGeometry, mltGeometry); + } var mltProperties = mltFeature.properties(); var mvtProperties = mvtFeature.properties(); for (var mvtProperty : mvtProperties.entrySet()) { - /*if(mvtProperty.getKey().contains("name:ja:rm")){ - System.out.println(mvtProperty.getKey() + " " + mvtProperty.getValue() + " " + mltProperties.get(mvtProperty.getKey()) + " " + j + " " + i); - continue; - }*/ + 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()); - assertEquals(mvtProperty.getValue(), mltProperty); + 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); + } } } } + 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 25696626..09be786a 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -1,131 +1,125 @@ package com.mlt.decoder; + +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; import com.mlt.converter.ConversionConfig; import com.mlt.converter.FeatureTableOptimizations; import com.mlt.converter.MltConverter; import com.mlt.converter.mvt.ColumnMapping; -import com.mlt.converter.mvt.MapboxVectorTile; import com.mlt.converter.mvt.MvtUtils; -import com.mlt.metadata.tileset.MltTilesetMetadata; import java.io.IOException; import java.nio.file.Paths; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.commons.lang3.tuple.Triple; + +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -@FunctionalInterface -interface TriConsumer { - void apply(A a, B b, C c) throws IOException; +enum DecoderType { + BOTH, + SEQUENTIAL, + VECTORIZED } -public class MltDecoderTest { +public class MltDecoderTest2 { - private static Stream> bingMapsTileIdProvider() { + /* Bing Maps tests --------------------------------------------------------- */ + + private static Stream bingProvider() { return Stream.of( - Triple.of(4, 8, 5), Triple.of(5, 16, 11), Triple.of(6, 32, 22), Triple.of(7, 65, 42)); + "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", "6-32-23", "6-32-21", "7-65-42", "7-66-42", "7-66-43", "7-66-44"); } - @DisplayName("Decode unsorted Bing Maps based vector tiles") + @DisplayName("Decode Bing Tiles (Vectorized)") @ParameterizedTest - @MethodSource("bingMapsTileIdProvider") - public void decodeMlTileVectorized_UnsortedBingMaps(Triple tileId) - throws IOException { - // TODO: fix -> 5-15-10, 5-17-10, 5-17-11, 7-65-42, 9-259-176 - var id = String.format("%s-%s-%s", tileId.getLeft(), tileId.getMiddle(), tileId.getRight()); - testTileVectorized(id, TestSettings.BING_MVT_PATH, false); + @MethodSource("bingProvider") + public void decodeBingTilesVectorized(String tileId) throws IOException { + int numErrors = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false); + assertEquals(0, numErrors, "There should be no errors in the Bing tiles for " + tileId + " but there were " + numErrors + " errors"); } - private static Stream> omtTileIdProvider() { - return Stream.of( - Triple.of(2, 2, 2), - Triple.of(3, 4, 5), - Triple.of(4, 8, 10), - Triple.of(5, 16, 21), - Triple.of(6, 32, 41), - Triple.of(7, 66, 84), - Triple.of(8, 134, 171), - Triple.of(9, 265, 341), - Triple.of(10, 532, 682), - Triple.of(11, 1064, 1367), - Triple.of(12, 2132, 2734), - Triple.of(13, 4265, 5467), - Triple.of(14, 8298, 10748)); + // 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"); } - /* Decode tiles in an in-memory format optimized for random access */ - - @DisplayName("Decode unsorted OpenMapTiles schema based vector tiles") - @ParameterizedTest - @MethodSource("omtTileIdProvider") - public void decodeMlTileVectorized_UnsortedOMT(Triple tileId) - throws IOException { - var id = String.format("%s_%s_%s", tileId.getLeft(), tileId.getMiddle(), tileId.getRight()); - testTileVectorized(id, TestSettings.OMT_MVT_PATH, false); + @Test + public void currentlyFailingBingDecoding1() throws IOException { + var exception = + assertThrows( + Exception.class, + () -> testTile("5-16-9", TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false)); + assertEquals( + "java.lang.IllegalArgumentException: VectorType not supported yet: CONST", + exception.toString()); } - @DisplayName("Decode sorted OpenMapTiles schema based vector tiles") - @ParameterizedTest - @MethodSource("omtTileIdProvider") - public void decodeMlTileVectorized_SortedOMT(Triple tileId) - throws IOException { - // TODO: fix 10_531_683 - var id = String.format("%s_%s_%s", tileId.getLeft(), tileId.getMiddle(), tileId.getRight()); - testTileVectorized(id, TestSettings.OMT_MVT_PATH, true); + @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()); } - /* Decode tiles in an in-memory format optimized for sequential access */ - - @DisplayName("Decode scalar unsorted OpenMapTiles schema based vector tiles") - @ParameterizedTest - @MethodSource("omtTileIdProvider") - public void decodeMlTile_UnsortedOMT(Triple tileId) - throws IOException { - // TODO: fix -> 2_2_2 - if (tileId.getLeft() == 2) { - return; - } + /* OpenMapTiles schema based vector tiles tests --------------------------------------------------------- */ - var id = String.format("%s_%s_%s", tileId.getLeft(), tileId.getMiddle(), tileId.getRight()); - ; - testTileSequential(id, TestSettings.OMT_MVT_PATH); + private static Stream omtProvider() { + return Stream.of( + "2_2_2", + "3_4_5", + "4_8_10", + "4_3_9", + "5_16_21", + "5_16_20", + "6_32_41", + "6_33_42", + "7_66_84", + "7_66_85", + "8_134_171", + "8_132_170", + "9_265_341", + "10_532_682", + "11_1064_1367", + "12_2132_2734", + "13_4265_5467", + "14_8298_10748", + "14_8299_10748"); } - private void testTileVectorized(String tileId, String tileDirectory, boolean allowSorting) - throws IOException { - testTile( - tileId, - tileDirectory, - (mlTile, tileMetadata, mvTile) -> { - var decodedTile = MltDecoder.decodeMlTileVectorized(mlTile, tileMetadata); - TestUtils.compareTilesVectorized(decodedTile, mvTile, allowSorting); - }, - allowSorting); + @DisplayName("Decode OMT Tiles") + @ParameterizedTest() + @MethodSource("omtProvider") + public void decodeOMTTiles(String tileId) throws IOException { + int numErrors = testTile(tileId, TestSettings.OMT_MVT_PATH, DecoderType.BOTH, 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); + } else { + assertEquals(0, numErrors, "There should be no errors in the OMT tiles: " + tileId); + } } - private void testTileSequential(String tileId, String tileDirectory) throws IOException { - testTile( - tileId, - tileDirectory, - (mlTile, tileMetadata, mvTile) -> { - var decodedTile = MltDecoder.decodeMlTile(mlTile, tileMetadata); - TestUtils.compareTilesSequential(decodedTile, mvTile); - }, - false); - } + /* Test utility functions */ - private void testTile( - String tileId, - String tileDirectory, - TriConsumer decodeAndCompare, - boolean allowSorting) - throws IOException { + private int testTile(String tileId, String tileDirectory, DecoderType type, boolean allowSorting) throws IOException { var mvtFilePath = Paths.get(tileDirectory, tileId + ".mvt"); var mvTile = MvtUtils.decodeMvt(mvtFilePath); @@ -136,14 +130,26 @@ private void testTile( var allowIdRegeneration = false; var optimization = new FeatureTableOptimizations(allowSorting, allowIdRegeneration, columnMappings); + // TODO: fix -> either add columMappings per layer or global like when creating the scheme var optimizations = 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(true, true, optimizations), tileMetadata); - - decodeAndCompare.apply(mlTile, tileMetadata, mvTile); + mvTile, + new ConversionConfig(includeIds, useAdvancedEncodingSchemes, optimizations), + tileMetadata); + int numErrors = 0; + if (type == DecoderType.SEQUENTIAL || type == DecoderType.BOTH) { + var decoded = MltDecoder.decodeMlTile(mlTile, tileMetadata); + numErrors += TestUtils.compareTilesSequential(decoded, mvTile); + } + if (type == DecoderType.VECTORIZED || type == DecoderType.BOTH) { + var decoded = MltDecoder.decodeMlTileVectorized(mlTile, tileMetadata); + numErrors += TestUtils.compareTilesVectorized(decoded, mvTile, allowSorting); + } + return numErrors; } } From 92218548061a3103100fd31fcc90d18922ff1b8d Mon Sep 17 00:00:00 2001 From: springmeyer Date: Thu, 20 Jun 2024 09:05:38 -0700 Subject: [PATCH 4/5] lint + cleanups --- java/src/test/java/com/mlt/TestUtils.java | 11 +-- .../java/com/mlt/decoder/MltDecoderTest.java | 71 +++++++++++-------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index 1825d06e..b8f2623c 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -1,8 +1,6 @@ package com.mlt; 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.converter.mvt.MapboxVectorTile; import com.mlt.data.MapLibreTile; @@ -10,7 +8,8 @@ import java.util.Map; public class TestUtils { - public static int compareTilesVectorized(FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { + public static int compareTilesVectorized( + FeatureTable[] featureTables, MapboxVectorTile mvTile, boolean isFeatureTableSorted) { int numErrors = 0; var mvtLayers = mvTile.layers(); for (var i = 0; i < mvtLayers.size(); i++) { @@ -114,10 +113,12 @@ public static int compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile m 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"); + // 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("Failure comparing property " + mvtProperty.getKey() + " for + // feature: " + mvtFeature.id()); // System.out.println(" mvtProperty: " + mvtProperty.getValue()); // System.out.println(" mltProperty: " + mltProperty); numErrors++; diff --git a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java index 09be786a..94c35e9d 100644 --- a/java/src/test/java/com/mlt/decoder/MltDecoderTest.java +++ b/java/src/test/java/com/mlt/decoder/MltDecoderTest.java @@ -1,9 +1,7 @@ package com.mlt.decoder; - 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; @@ -18,9 +16,8 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; - -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -30,14 +27,14 @@ enum DecoderType { VECTORIZED } -public class MltDecoderTest2 { +public class MltDecoderTest { /* Bing Maps tests --------------------------------------------------------- */ 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", "6-32-23", "6-32-21", "7-65-42", "7-66-42", "7-66-43", "7-66-44"); + "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", + "6-32-23", "6-32-21", "7-65-42", "7-66-42", "7-66-43", "7-66-44"); } @DisplayName("Decode Bing Tiles (Vectorized)") @@ -45,7 +42,14 @@ private static Stream bingProvider() { @MethodSource("bingProvider") public void decodeBingTilesVectorized(String tileId) throws IOException { int numErrors = testTile(tileId, TestSettings.BING_MVT_PATH, DecoderType.VECTORIZED, false); - assertEquals(0, numErrors, "There should be no errors in the Bing tiles for " + tileId + " but there were " + numErrors + " errors"); + 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 @@ -53,7 +57,14 @@ public void decodeBingTilesVectorized(String tileId) throws IOException { 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"); + assertEquals( + 660, + numErrors, + "There should be no errors in the Bing tiles for " + + tileId + + " but there were " + + numErrors + + " errors"); } @Test @@ -83,25 +94,25 @@ public void currentlyFailingBingDecoding3() throws IOException { private static Stream omtProvider() { return Stream.of( - "2_2_2", - "3_4_5", - "4_8_10", - "4_3_9", - "5_16_21", - "5_16_20", - "6_32_41", - "6_33_42", - "7_66_84", - "7_66_85", - "8_134_171", - "8_132_170", - "9_265_341", - "10_532_682", - "11_1064_1367", - "12_2132_2734", - "13_4265_5467", - "14_8298_10748", - "14_8299_10748"); + "2_2_2", + "3_4_5", + "4_8_10", + "4_3_9", + "5_16_21", + "5_16_20", + "6_32_41", + "6_33_42", + "7_66_84", + "7_66_85", + "8_134_171", + "8_132_170", + "9_265_341", + "10_532_682", + "11_1064_1367", + "12_2132_2734", + "13_4265_5467", + "14_8298_10748", + "14_8299_10748"); } @DisplayName("Decode OMT Tiles") @@ -119,7 +130,8 @@ public void decodeOMTTiles(String tileId) throws IOException { /* Test utility functions */ - private int testTile(String tileId, String tileDirectory, DecoderType type, boolean allowSorting) throws IOException { + private int testTile(String tileId, String tileDirectory, DecoderType type, boolean allowSorting) + throws IOException { var mvtFilePath = Paths.get(tileDirectory, tileId + ".mvt"); var mvTile = MvtUtils.decodeMvt(mvtFilePath); @@ -130,7 +142,6 @@ private int testTile(String tileId, String tileDirectory, DecoderType type, bool var allowIdRegeneration = false; var optimization = new FeatureTableOptimizations(allowSorting, allowIdRegeneration, columnMappings); - // TODO: fix -> either add columMappings per layer or global like when creating the scheme var optimizations = TestSettings.OPTIMIZED_MVT_LAYERS.stream() .collect(Collectors.toMap(l -> l, l -> optimization)); From cb75bdc075ceec0d37dcfdf227177c657d41c42e Mon Sep 17 00:00:00 2001 From: springmeyer Date: Fri, 21 Jun 2024 08:42:26 -0700 Subject: [PATCH 5/5] move back to just assertEquals(mvtGeometry, mltGeometry) for now --- java/src/test/java/com/mlt/TestUtils.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/java/src/test/java/com/mlt/TestUtils.java b/java/src/test/java/com/mlt/TestUtils.java index b8f2623c..f1f37c25 100644 --- a/java/src/test/java/com/mlt/TestUtils.java +++ b/java/src/test/java/com/mlt/TestUtils.java @@ -90,14 +90,7 @@ public static int compareTilesSequential(MapLibreTile mlTile, MapboxVectorTile m var mltGeometry = mltFeature.geometry(); var mvtGeometry = mvtFeature.geometry(); - if (!mvtGeometry.toString().equals(mltGeometry.toString())) { - // System.out.println("Failure comparing geometries for feature: " + mvtFeature.id()); - // System.out.println(" mvtGeometry: " + mvtGeometry); - // System.out.println(" mltGeometry: " + mltGeometry); - numErrors++; - } else { - assertEquals(mvtGeometry, mltGeometry); - } + assertEquals(mvtGeometry, mltGeometry); var mltProperties = mltFeature.properties(); var mvtProperties = mvtFeature.properties();