Ignore:
Timestamp:
2023-11-07T14:21:38+01:00 (8 months ago)
Author:
taylor.smock
Message:

Fix #23057: data layers should be selected next, not non-data layers (patch by gaben, modified)

Modifications are as follows:

  • Fix test pollution uncovered by change in non-obvious determinate order of tests
  • Fix code so that MainLayerManagerTest.testRemoveLayerUnsetsActiveLayer passes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerActionTest.java

    r18839 r18895  
    1111import static org.junit.jupiter.api.Assertions.assertTrue;
    1212
     13import java.util.Collections;
    1314import java.util.Objects;
    1415import java.util.concurrent.atomic.AtomicInteger;
     
    2223import org.openstreetmap.josm.gui.layer.Layer;
    2324import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     25import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
    2426import org.openstreetmap.josm.testutils.annotations.Main;
    2527import org.openstreetmap.josm.testutils.annotations.Projection;
     
    123125    }
    124126
     127    @Test
     128    void testRemoveBottomActiveWithBackgroundLayer() {
     129        GeoImageLayer geoImageLayer = new GeoImageLayer(Collections.emptyList(), null, "imageLayer");
     130        OsmDataLayer osmDataLayer1 = new OsmDataLayer(new DataSet(), "dataLayer1", null);
     131        OsmDataLayer osmDataLayer2 = new OsmDataLayer(new DataSet(), "dataLayer2", null);
     132
     133        // remove all the layers added in BeforeEach()
     134        for (Layer l : MainApplication.getLayerManager().getLayers()) {
     135            MainApplication.getLayerManager().removeLayer(l);
     136        }
     137        MainApplication.getLayerManager().addLayer(geoImageLayer);
     138        MainApplication.getLayerManager().addLayer(osmDataLayer1);
     139        MainApplication.getLayerManager().addLayer(osmDataLayer2);
     140
     141        model.getLayerManager().setActiveLayer(osmDataLayer1);
     142        model.setSelectedLayer(osmDataLayer1);
     143
     144        deleteLayerAction.actionPerformed(null);
     145
     146        assertSame(model.getLayerManager().getActiveLayer(), model.getLayer(0));
     147        assertEquals("dataLayer2", Objects.requireNonNull(model.getLayerManager().getActiveLayer().getName()));
     148        assertAll(model.getLayers().stream().map(layer -> () -> assertNotSame(osmDataLayer1, layer)));
     149    }
     150
     151    @Test
     152    void testRemoveBottomActiveAllHidden() {
     153        hideRange(0, 9);
     154        final Layer toRemove = model.getLayer(9);
     155        assertNotNull(toRemove);
     156        assertFalse(toRemove.isVisible());
     157        assertEquals(0, model.getLayers().stream().filter(Layer::isVisible).count());
     158
     159        model.getLayerManager().setActiveLayer(toRemove);
     160        model.setSelectedLayer(toRemove);
     161        deleteLayerAction.actionPerformed(null);
     162
     163        assertSame(model.getLayerManager().getActiveLayer(), model.getLayer(8));
     164        assertEquals("testActiveLayer1", Objects.requireNonNull(model.getLayer(8)).getName());
     165        assertAll(model.getLayers().stream().map(layer -> () -> assertNotSame(toRemove, layer)));
     166    }
     167
    125168    private void hideRange(int start, int end) {
    126169        model.getSelectionModel().setSelectionInterval(start, end);
Note: See TracChangeset for help on using the changeset viewer.