Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java	(revision 10513)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java	(revision 10547)
@@ -2,9 +2,13 @@
 package org.openstreetmap.josm.gui.layer;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -14,22 +18,19 @@
 
     /**
-     * Setup tests
+     * For creating layers
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
-     * Unit test of {@link ImageryLayer.ColorfulImageProcessor#toString}
-     *          and {@link ImageryLayer.GammaImageProcessor#toString()}.
-     *          and {@link ImageryLayer.SharpenImageProcessor#toString()}.
+     * Unit test of {@link ImageryLayer#getFilterSettings()}
      */
     @Test
-    public void testToString() {
+    public void testHasSettings() {
         ImageryLayer layer = TMSLayerTest.createTmsLayer();
-        assertEquals("ColorfulImageProcessor [colorfulness=1.0]", layer.collorfulnessImageProcessor.toString());
-        assertEquals("GammaImageProcessor [gamma=1.0]", layer.gammaImageProcessor.toString());
-        assertEquals("SharpenImageProcessor [sharpenLevel=1.0]", layer.sharpenImageProcessor.toString());
+        ImageryFilterSettings settings = layer.getFilterSettings();
+        assertNotNull(settings);
+        assertSame(settings, layer.getFilterSettings());
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java	(revision 10547)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java	(revision 10547)
@@ -0,0 +1,155 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link ColorfulImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class ColorfulImageProcessorTest {
+
+    private static final int TEST_IMAGE_SIZE = 5;
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link ColorfulImageProcessor#setColorfulness(double)} and {@link ColorfulImageProcessor#getColorfulness()}
+     */
+    @Test
+    public void testSetGet() {
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+
+        assertEquals(1, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(2);
+        assertEquals(2, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(0);
+        assertEquals(0, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(0.78);
+        assertEquals(0.78, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(1);
+        assertEquals(1, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(-1);
+        assertEquals(0, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(5);
+        assertEquals(5, processor.getColorfulness(), 0.001);
+    }
+
+    /**
+     *
+     */
+    @Test
+    public void testProcessing() {
+        for (ConversionData data : new ConversionData[] {
+                new ConversionData(Color.BLACK, 1.5, Color.BLACK),
+                new ConversionData(Color.WHITE, 0.5, Color.WHITE),
+                new ConversionData(Color.GRAY, 0, Color.GRAY),
+                new ConversionData(Color.GREEN, 1, Color.GREEN),
+                new ConversionData(Color.RED, 1, Color.RED),
+                new ConversionData(Color.BLUE, 1, Color.BLUE),
+                new ConversionData(0x908050, 0, 0x808080),
+                new ConversionData(0x908070, 1, 0x908070),
+                new ConversionData(0x908070, 2, 0x9c7c5c),
+                new ConversionData(0x908070, 2, 0x9c7c5c),
+                new ConversionData(0xf02080, 2, 0xff00ac),
+        }) {
+            for (int type : new int[] {
+                    BufferedImage.TYPE_3BYTE_BGR,
+                    BufferedImage.TYPE_4BYTE_ABGR,
+                    BufferedImage.TYPE_4BYTE_ABGR_PRE }) {
+                assertTrue(runProcessing(data, type));
+            }
+        }
+    }
+
+    private boolean runProcessing(ConversionData data, int type) {
+        BufferedImage image = createImage(data.getOldColor(), type);
+
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+        processor.setColorfulness(data.getFactor());
+        image = processor.process(image);
+
+        for (int x = 0; x < TEST_IMAGE_SIZE; x++) {
+            for (int y = 0; y < TEST_IMAGE_SIZE; y++) {
+                Color color = new Color(image.getRGB(x, y));
+                assertEquals(data + ":" + type + ": red", data.getExpectedColor().getRed(), color.getRed(), 1.05);
+                assertEquals(data + ":" + type + ": green", data.getExpectedColor().getGreen(), color.getGreen(), 1.05);
+                assertEquals(data + ":" + type + ": blue", data.getExpectedColor().getBlue(), color.getBlue(), 1.05);
+            }
+        }
+        return true;
+    }
+
+    private BufferedImage createImage(Color color, int type) {
+        BufferedImage image = new BufferedImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, type);
+        Graphics2D graphics = image.createGraphics();
+        graphics.setColor(color);
+        graphics.fillRect(0, 0, TEST_IMAGE_SIZE, TEST_IMAGE_SIZE);
+        return image;
+    }
+
+    private static class ConversionData {
+        private final Color oldColor;
+        private final double factor;
+        private final Color expectedColor;
+
+        ConversionData(Color oldColor, double factor, Color expectedColor) {
+            super();
+            this.oldColor = oldColor;
+            this.factor = factor;
+            this.expectedColor = expectedColor;
+        }
+
+        ConversionData(int oldColor, double factor, int expectedColor) {
+            this(new Color(oldColor), factor, new Color(expectedColor));
+        }
+
+        Color getOldColor() {
+            return oldColor;
+        }
+
+        double getFactor() {
+            return factor;
+        }
+
+        Color getExpectedColor() {
+            return expectedColor;
+        }
+
+        @Override
+        public String toString() {
+            return "ConversionData [oldColor=" + oldColor + ", factor=" + factor + "]";
+        }
+    }
+
+    /**
+     * Test {@link ColorfulImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+        assertEquals("ColorfulImageProcessor [colorfulness=1.0]", processor.toString());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java	(revision 10547)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java	(revision 10547)
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link GammaImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class GammaImageProcessorTest {
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link GammaImageProcessor#setGamma(double)} and {@link GammaImageProcessor#getGamma()}
+     */
+    @Test
+    public void testSetGet() {
+        GammaImageProcessor processor = new GammaImageProcessor();
+
+        assertEquals(1, processor.getGamma(), 0.001);
+
+        processor.setGamma(2);
+        assertEquals(2, processor.getGamma(), 0.001);
+
+        processor.setGamma(0);
+        assertEquals(0, processor.getGamma(), 0.001);
+
+        processor.setGamma(0.78);
+        assertEquals(0.78, processor.getGamma(), 0.001);
+
+        processor.setGamma(1);
+        assertEquals(1, processor.getGamma(), 0.001);
+
+        processor.setGamma(-1);
+        assertEquals(-1, processor.getGamma(), 0.001);
+
+        processor.setGamma(5);
+        assertEquals(5, processor.getGamma(), 0.001);
+    }
+
+    /**
+     * Test {@link GammaImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        GammaImageProcessor processor = new GammaImageProcessor();
+        assertEquals("GammaImageProcessor [gamma=1.0]", processor.toString());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java	(revision 10547)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java	(revision 10547)
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link SharpenImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class SharpenImageProcessorTest {
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link SharpenImageProcessor#setSharpenLevel(float)} and {@link SharpenImageProcessor#getSharpenLevel()}
+     */
+    @Test
+    public void testSetGet() {
+        SharpenImageProcessor processor = new SharpenImageProcessor();
+
+        assertEquals(1, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(2);
+        assertEquals(2, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(0);
+        assertEquals(0, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(0.78f);
+        assertEquals(0.78, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(1);
+        assertEquals(1, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(-1);
+        assertEquals(-1, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(5);
+        assertEquals(5, processor.getSharpenLevel(), 0.001);
+    }
+
+    /**
+     * Test {@link SharpenImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        SharpenImageProcessor processor = new SharpenImageProcessor();
+        assertEquals("SharpenImageProcessor [gamma=1.0]", processor.toString());
+    }
+}
