Ignore:
Timestamp:
2022-10-18T00:43:38+02:00 (2 years ago)
Author:
taylor.smock
Message:

Fix #22404: MVT background layer: Polygons not drawn

This was a two-part problem:

  1. Converting shapes to areas does not always keep the same winding.
  2. MVT styles are minZoom <= showable zooms < maxZoom. We were doing minZoom <= showable zooms <= maxZoom.

This also fixes some sonarlint issues in the modified files.

Location:
trunk/test/unit/org/openstreetmap/josm/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/imagery/vectortile/mapbox/style/LayersTest.java

    r17879 r18578  
    6262    void testFill() {
    6363        // Test a layer without a source (should fail)
    64         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     64        JsonObject emptyFill = Json.createObjectBuilder()
    6565          .add("type", Layers.Type.FILL.name())
    66           .add("id", "Empty Fill").build()));
     66          .add("id", "Empty Fill").build();
     67        assertThrows(NullPointerException.class, () -> new Layers(emptyFill));
    6768
    6869        // Test an empty fill layer
     
    118119    void testLine() {
    119120        // Test a layer without a source (should fail)
    120         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
    121           .add("type", Layers.Type.LINE.name())
    122           .add("id", "Empty Line").build()));
     121        JsonObject emptyLine = Json.createObjectBuilder()
     122          .add("type", Layers.Type.RASTER.name())
     123          .add("id", "Empty Raster").build();
     124        assertThrows(NullPointerException.class, () -> new Layers(emptyLine));
    123125
    124126        JsonObject allLayoutProperties = Json.createObjectBuilder()
     
    173175    void testSymbol() {
    174176        // Test a layer without a source (should fail)
    175         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
    176           .add("type", Layers.Type.SYMBOL.name())
    177           .add("id", "Empty Symbol").build()));
     177        JsonObject emptySymbol = Json.createObjectBuilder()
     178          .add("type", Layers.Type.RASTER.name())
     179          .add("id", "Empty Raster").build();
     180        assertThrows(NullPointerException.class, () -> new Layers(emptySymbol));
    178181
    179182        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    306309    void testRaster() {
    307310        // Test a layer without a source (should fail)
    308         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     311        JsonObject emptyRaster = Json.createObjectBuilder()
    309312          .add("type", Layers.Type.RASTER.name())
    310           .add("id", "Empty Raster").build()));
     313          .add("id", "Empty Raster").build();
     314        assertThrows(NullPointerException.class, () -> new Layers(emptyRaster));
    311315
    312316        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    349353    void testCircle() {
    350354        // Test a layer without a source (should fail)
    351         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     355        JsonObject emptyCircle = Json.createObjectBuilder()
    352356          .add("type", Layers.Type.CIRCLE.name())
    353           .add("id", "Empty Circle").build()));
     357          .add("id", "Empty Circle").build();
     358        assertThrows(NullPointerException.class, () -> new Layers(emptyCircle));
    354359
    355360        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    400405    void testFillExtrusion() {
    401406        // Test a layer without a source (should fail)
    402         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     407        JsonObject emptyFillExtrusion = Json.createObjectBuilder()
    403408          .add("type", Layers.Type.FILL_EXTRUSION.name())
    404           .add("id", "Empty Fill Extrusion").build()));
     409          .add("id", "Empty Fill Extrusion").build();
     410        assertThrows(NullPointerException.class, () -> new Layers(emptyFillExtrusion));
    405411
    406412        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    439445    void testHeatmap() {
    440446        // Test a layer without a source (should fail)
    441         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     447        JsonObject emptyHeatmap = Json.createObjectBuilder()
    442448          .add("type", Layers.Type.HEATMAP.name())
    443           .add("id", "Empty Heatmap").build()));
     449          .add("id", "Empty Heatmap").build();
     450        assertThrows(NullPointerException.class, () -> new Layers(emptyHeatmap));
    444451
    445452        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    476483    void testHillshade() {
    477484        // Test a layer without a source (should fail)
    478         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     485        JsonObject emptyHillshade = Json.createObjectBuilder()
    479486          .add("type", Layers.Type.HILLSHADE.name())
    480           .add("id", "Empty Hillshade").build()));
     487          .add("id", "Empty Hillshade").build();
     488        assertThrows(NullPointerException.class, () -> new Layers(emptyHillshade));
    481489
    482490        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    516524    void testSky() {
    517525        // Test a layer without a source (should fail)
    518         assertThrows(NullPointerException.class, () -> new Layers(Json.createObjectBuilder()
     526        JsonObject emptySky = Json.createObjectBuilder()
    519527          .add("type", Layers.Type.SKY.name())
    520           .add("id", "Empty Sky").build()));
     528          .add("id", "Empty Sky").build();
     529        assertThrows(NullPointerException.class, () -> new Layers(emptySky));
    521530
    522531        JsonObject allPaintProperties = Json.createObjectBuilder()
     
    580589          .add("maxzoom", 24)
    581590          .build());
    582         assertEquals(MessageFormat.format(baseString, "|z-24"), maxZoomLayer.toString());
     591        assertEquals(MessageFormat.format(baseString, "|z-23"), maxZoomLayer.toString());
    583592
    584593        Layers minMaxZoomLayer = new Layers(Json.createObjectBuilder(baseInformation)
    585594          .add("minzoom", 1)
    586           .add("maxzoom", 2)
     595          .add("maxzoom", 3)
    587596          .build());
    588597        assertEquals(MessageFormat.format(baseString, "|z1-2"), minMaxZoomLayer.toString());
     
    593602          .build());
    594603        assertEquals(MessageFormat.format(baseString, "|z2"), sameMinMaxZoomLayer.toString());
     604        Layers zeroMaxZoom = new Layers(Json.createObjectBuilder(baseInformation)
     605                .add("maxzoom", 0)
     606                .build());
     607        assertEquals(MessageFormat.format(baseString, "|z-0"), zeroMaxZoom.toString());
    595608    }
    596609
  • trunk/test/unit/org/openstreetmap/josm/data/vector/VectorWayTest.java

    r18037 r18578  
    8787        assertFalse(way.isClosed());
    8888        assertEquals(OsmPrimitiveType.WAY, way.getType());
     89        assertEquals(OsmPrimitiveType.WAY, way.getDisplayType());
    8990        List<VectorNode> nodes = new ArrayList<>(way.getNodes());
    9091        nodes.add(nodes.get(0));
    9192        way.setNodes(nodes);
    9293        assertTrue(way.isClosed());
    93         assertEquals(OsmPrimitiveType.CLOSEDWAY, way.getType());
     94        assertEquals(OsmPrimitiveType.WAY, way.getType());
     95        assertEquals(OsmPrimitiveType.CLOSEDWAY, way.getDisplayType());
    9496    }
    9597
Note: See TracChangeset for help on using the changeset viewer.