// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.actions;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
import org.openstreetmap.josm.testutils.JOSMTestRules;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Unit tests for class {@link MergeLayerAction}.
*/
public class MergeLayerActionTest {
/**
* Setup test.
*/
@Rule
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public JOSMTestRules test = new JOSMTestRules().platform().commands();
private MergeLayerAction action;
/**
* Setup test.
*/
@Before
public void setUp() {
if (action == null) {
action = new MergeLayerAction();
}
for (TestLayer testLayer : Main.getLayerManager().getLayersOfType(TestLayer.class)) {
Main.getLayerManager().removeLayer(testLayer);
}
}
/**
* Tests that no error occurs when no source layer exists.
*/
@Test
public void testMergeNoSourceLayer() {
assertNull(Main.getLayerManager().getActiveLayer());
action.actionPerformed(null);
assertEquals(0, Main.getLayerManager().getLayers().size());
}
/**
* Tests that no error occurs when no target layer exists.
*/
@Test
public void testMergeNoTargetLayer() {
OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
Main.getLayerManager().addLayer(layer);
assertEquals(1, Main.getLayerManager().getLayers().size());
assertNull(action.merge(layer));
assertEquals(1, Main.getLayerManager().getLayers().size());
}
/**
* Tests that the merge is done with two empty layers.
* @throws Exception if any error occurs
*/
@Test
public void testMergeTwoEmptyLayers() throws Exception {
OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "1", null);
OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "2", null);
Main.getLayerManager().addLayer(layer1);
Main.getLayerManager().addLayer(layer2);
assertEquals(2, Main.getLayerManager().getLayers().size());
action.merge(layer2).get();
assertEquals(1, Main.getLayerManager().getLayers().size());
}
}