// 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 doTestPreferenceSettingAddGui(
PreferenceSettingFactory factory, Class<? extends DefaultTabPreferenceSetting> parentClass) {
doTestPreferenceSettingAddGui(factory, parentClass, 1);
}
/**
* Generic test for {@link PreferenceSetting#addGui(PreferenceTabbedPane)}.
* @param factory setting factory to test
* @param parentClass optional parent setting, can be {@code null}
* @param increment expected tab number increment
*/
public static void doTestPreferenceSettingAddGui(
PreferenceSettingFactory factory, Class<? extends DefaultTabPreferenceSetting> parentClass, int increment) {
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 + increment, tabPane.getSetting(parentClass).getTabPane().getTabCount());
assertEquals(tabPane.getSetting(parentClass), ((SubPreferenceSetting) setting).getTabPreferenceSetting(tabPane));
}
setting.ok();
}
}