Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/PreferencesTestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/PreferencesTestUtils.java	(revision 9624)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/PreferencesTestUtils.java	(revision 9624)
@@ -0,0 +1,31 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.preferences;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Various utils, useful for preferences unit tests.
+ */
+public final class PreferencesTestUtils {
+
+    private PreferencesTestUtils() {
+        // Hide constructor for utility classes
+    }
+
+    /**
+     * Generic test for {@link PreferenceSetting#addGui(PreferenceTabbedPane)}.
+     * @param factory setting factory to test
+     * @param parentClass optional parent setting, can be {@code null}
+     */
+    public static void testPreferenceSettingAddGui(PreferenceSettingFactory factory, Class<? extends DefaultTabPreferenceSetting> parentClass) {
+        PreferenceSetting setting = factory.createPreferenceSetting();
+        PreferenceTabbedPane tabPane = new PreferenceTabbedPane();
+        tabPane.buildGui();
+        int tabs = parentClass != null ? tabPane.getSetting(parentClass).getTabPane().getTabCount() : -1;
+        setting.addGui(tabPane);
+        if (parentClass != null) {
+            assertEquals(tabs + 1, tabPane.getSetting(parentClass).getTabPane().getTabCount());
+            assertEquals(tabPane.getSetting(parentClass), ((SubPreferenceSetting) setting).getTabPreferenceSetting(tabPane));
+        }
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new AdvancedPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new AdvancedPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/audio/AudioPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new AudioPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new AudioPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/ColorPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/ColorPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/ColorPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ColorPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ColorPreference.Factory(), DisplayPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DisplayPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DisplayPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DisplayPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new DisplayPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new DisplayPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DrawingPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DrawingPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/DrawingPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new DrawingPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new DrawingPreference.Factory(), DisplayPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LafPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LafPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LafPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new LafPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new LafPreference.Factory(), DisplayPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LanguagePreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LanguagePreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/display/LanguagePreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new LanguagePreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new LanguagePreference.Factory(), DisplayPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ImageryPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ImageryPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/BackupPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/BackupPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/BackupPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new BackupPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new BackupPreference.Factory(), MapPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new MapPaintPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new MapPaintPreference.Factory(), MapPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new MapPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new MapPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new TaggingPresetPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new TaggingPresetPreference.Factory(), MapPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferenceTest.java	(revision 9624)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.plugins.PluginDownloadTask;
@@ -89,5 +89,5 @@
     @Test
     public void testAddGui() {
-        new PluginPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new PluginPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreferenceTest.java	(revision 9624)
@@ -7,5 +7,6 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
+import org.openstreetmap.josm.gui.preferences.map.MapPreference;
 
 /**
@@ -35,5 +36,5 @@
     @Test
     public void testAddGui() {
-        new ProjectionPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ProjectionPreference.Factory(), MapPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new RemoteControlPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new RemoteControlPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new AuthenticationPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new AuthenticationPreference.Factory(), ServerAccessPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new OverpassServerPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new OverpassServerPreference.Factory(), ServerAccessPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ProxyPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ProxyPreference.Factory(), ServerAccessPreference.class);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ServerAccessPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ServerAccessPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ShortcutPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ShortcutPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ValidatorPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ValidatorPreference.Factory(), null);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreferenceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreferenceTest.java	(revision 9622)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreferenceTest.java	(revision 9624)
@@ -7,5 +7,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 
 /**
@@ -35,5 +35,5 @@
     @Test
     public void testAddGui() {
-        new ValidatorTestsPreference.Factory().createPreferenceSetting().addGui(new PreferenceTabbedPane());
+        PreferencesTestUtils.testPreferenceSettingAddGui(new ValidatorTestsPreference.Factory(), ValidatorPreference.class);
     }
 }
