// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.layer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.awt.Color; import java.io.File; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.preferences.AbstractProperty; import org.openstreetmap.josm.data.preferences.ColorProperty; import org.openstreetmap.josm.testutils.JOSMTestRules; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** * Test of the base {@link Layer} class * @author Michael Zangl */ public class LayerTest { /** * We need projection */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules().preferences().projection(); private Layer testLayer; /** * Create test layer */ @Before public void setUp() { testLayer = new LayerManagerTest.TestLayer(); } /** * Test {@link Layer#getColorProperty()} */ @Test public void testGetColorProperty() { assertEquals(null, testLayer.getColorProperty()); AbstractProperty<Color> color = new LayerManagerTest.TestLayer() { @Override protected ColorProperty getBaseColorProperty() { return new ColorProperty("x", Color.BLACK); } }.getColorProperty(); assertEquals(Color.BLACK, color.get()); assertEquals(Color.BLACK, color.getDefaultValue()); assertEquals("color.layer.test.layer", color.getKey()); } /** * Test of {@link Layer#isInfoResizable} */ @Test public void testIsInfoResizable() { assertFalse(testLayer.isInfoResizable()); } /** * Test of {@link Layer#getAssociatedFile()} and {@link Layer#setAssociatedFile(java.io.File)} */ @Test public void testAssociatedFile() { assertNull(testLayer.getAssociatedFile()); File file = new File("test"); testLayer.setAssociatedFile(file); assertEquals(file, testLayer.getAssociatedFile()); } /** * Test {@link Layer#getName()} */ @Test public void testGetName() { assertEquals("Test Layer", testLayer.getName()); } /** * Test {@link Layer#setName(String)} */ @Test public void testSetName() { testLayer.setName("Test Layer2"); assertEquals("Test Layer2", testLayer.getName()); testLayer = new LayerManagerTest.TestLayer() { @Override public AbstractProperty<Color> getColorProperty() { return new ColorProperty("test", Color.RED); } }; testLayer.setName("Test Layer2"); testLayer.setName(null); assertEquals("", testLayer.getName()); testLayer.setName("Test Layer3"); assertEquals("Test Layer3", testLayer.getName()); } /** * Test {@link Layer#rename(String)} and {@link Layer#isRenamed()} */ @Test public void testRename() { assertFalse(testLayer.isRenamed()); testLayer.rename("Test Layer2"); assertEquals("Test Layer2", testLayer.getName()); assertTrue(testLayer.isRenamed()); } /** * Test {@link Layer#isBackgroundLayer()} and {@link Layer#setBackgroundLayer(boolean)} */ @Test public void testBackgroundLayer() { assertFalse(testLayer.isBackgroundLayer()); testLayer.setBackgroundLayer(true); assertTrue(testLayer.isBackgroundLayer()); } /** * Test {@link Layer#isVisible()} and {@link Layer#setVisible(boolean)} */ @Test public void testVisible() { assertTrue(testLayer.isVisible()); testLayer.setVisible(false); assertFalse(testLayer.isVisible()); testLayer.setVisible(true); assertTrue(testLayer.isVisible()); } /** * Test {@link Layer#toggleVisible()} */ @Test public void testToggleVisible() { assertTrue(testLayer.isVisible()); testLayer.toggleVisible(); assertFalse(testLayer.isVisible()); testLayer.toggleVisible(); assertTrue(testLayer.isVisible()); } /** * Test {@link Layer#setOpacity(double)} and {@link Layer#getOpacity()} */ @Test public void testOpacity() { assertEquals(1, testLayer.getOpacity(), 1e-3); testLayer.setOpacity(0.5); assertEquals(0.5, testLayer.getOpacity(), 1e-3); testLayer.setOpacity(0); assertFalse(testLayer.isVisible()); testLayer.setVisible(true); assertTrue(testLayer.isVisible()); assertEquals(1, testLayer.getOpacity(), 1e-3); } /** * Test {@link Layer#isProjectionSupported(org.openstreetmap.josm.data.projection.Projection)} */ @Test public void testIsProjectionSupported() { assertFalse(testLayer.isProjectionSupported(null)); assertTrue(testLayer.isProjectionSupported(Main.getProjection())); } /** * Test {@link Layer#nameSupportedProjections()} */ @Test public void testNameSupportedProjections() { assertNotNull(testLayer.nameSupportedProjections()); } /** * Test {@link Layer#isSavable()} */ @Test public void testIsSavable() { assertFalse(testLayer.isSavable()); } /** * Test {@link Layer#checkSaveConditions()} */ @Test public void testCheckSaveConditions() { assertTrue(testLayer.checkSaveConditions()); } }