diff --git a/src/main/java/com/onthegomap/planetiler/basemap/Generate.java b/src/main/java/com/onthegomap/planetiler/basemap/Generate.java index 0235005..9366af4 100644 --- a/src/main/java/com/onthegomap/planetiler/basemap/Generate.java +++ b/src/main/java/com/onthegomap/planetiler/basemap/Generate.java @@ -431,7 +431,7 @@ public class Generate { /** Imposm3 "mapping" to filter OSM elements that should appear in this "table". */ public static final Expression MAPPING = %s; """.formatted( - mappingExpression + mappingExpression.generateJavaCode() ); String tableName = "osm_" + key; String className = lowerUnderscoreToUpperCamel(tableName); @@ -652,7 +652,7 @@ public class Generate { /** Returns java code that will recreate an {@link MultiExpression} identical to {@code mapping}. */ private static String generateJavaCode(MultiExpression mapping) { return "MultiExpression.of(List.of(" + mapping.expressions().stream() - .map(s -> "MultiExpression.entry(%s, %s)".formatted(Format.quote(s.result()), s.expression())) + .map(s -> "MultiExpression.entry(%s, %s)".formatted(Format.quote(s.result()), s.expression().generateJavaCode())) .collect(joining(", ")) + "))"; } diff --git a/src/test/java/com/onthegomap/planetiler/basemap/layers/AbstractLayerTest.java b/src/test/java/com/onthegomap/planetiler/basemap/layers/AbstractLayerTest.java index 87a2978..581af6b 100644 --- a/src/test/java/com/onthegomap/planetiler/basemap/layers/AbstractLayerTest.java +++ b/src/test/java/com/onthegomap/planetiler/basemap/layers/AbstractLayerTest.java @@ -5,6 +5,7 @@ import static com.onthegomap.planetiler.TestUtils.newLineString; import static com.onthegomap.planetiler.TestUtils.newPoint; import static com.onthegomap.planetiler.TestUtils.rectangle; import static com.onthegomap.planetiler.basemap.BasemapProfile.OSM_SOURCE; +import static com.onthegomap.planetiler.basemap.util.Utils.coalesce; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -23,6 +24,7 @@ import com.onthegomap.planetiler.stats.Stats; import com.onthegomap.planetiler.util.Translations; import com.onthegomap.planetiler.util.Wikidata; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,10 +43,15 @@ public abstract class AbstractLayerTest { final FeatureCollector.Factory featureCollectorFactory = new FeatureCollector.Factory(params, stats); static void assertFeatures(int zoom, List> expected, Iterable actual) { - List actualList = StreamSupport.stream(actual.spliterator(), false).toList(); - assertEquals(expected.size(), actualList.size(), () -> "size: " + actualList); - for (int i = 0; i < expected.size(); i++) { - assertSubmap(expected.get(i), TestUtils.toMap(actualList.get(i), zoom)); + // ensure both are sorted by layer + var expectedList = + expected.stream().sorted(Comparator.comparing(d -> coalesce(d.get("_layer"), "").toString())).toList(); + var actualList = StreamSupport.stream(actual.spliterator(), false) + .sorted(Comparator.comparing(FeatureCollector.Feature::getLayer)) + .toList(); + assertEquals(expectedList.size(), actualList.size(), () -> "size: " + actualList); + for (int i = 0; i < expectedList.size(); i++) { + assertSubmap(expectedList.get(i), TestUtils.toMap(actualList.get(i), zoom)); } } diff --git a/src/test/java/com/onthegomap/planetiler/basemap/layers/WaterTest.java b/src/test/java/com/onthegomap/planetiler/basemap/layers/WaterTest.java index 78cd60c..2347a3f 100644 --- a/src/test/java/com/onthegomap/planetiler/basemap/layers/WaterTest.java +++ b/src/test/java/com/onthegomap/planetiler/basemap/layers/WaterTest.java @@ -164,7 +164,7 @@ class WaterTest extends AbstractLayerTest { } @Test - void testRiverk() { + void testRiver() { assertFeatures(11, List.of(Map.of( "class", "river", "_layer", "water",