package gui; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import gui.settings.Settings; import java.io.File; import java.io.IOException; import java.util.Locale; import org.junit.Test; public class SettingsTest { @Test public void testInstance() { Settings instance1 = Settings.getInstance(); Settings instance2 = Settings.getInstance(); assertTrue(null != instance1); assertEquals(instance1, instance2); } @Test public void testLanuage() { String key = "histplot"; // test supported Langues assertTrue(Settings.getInstance().getSupportedLanguages() != null); assertTrue(Settings.getInstance().getSupportedLanguages().length > 0); // test standard language (English) assertEquals(Locale.ENGLISH, Settings.getInstance().getLanguage()); assertEquals("Histogram", Settings.getInstance().getResourceBundle().getString(key)); // test other language (German) Settings.getInstance().setLanguage(Locale.GERMAN); assertEquals(Locale.GERMAN, Settings.getInstance().getLanguage()); assertEquals("Histogramm", Settings.getInstance().getResourceBundle().getString(key)); // test wrong language try { Settings.getInstance().setLanguage(Locale.TRADITIONAL_CHINESE); fail("Set unsupported language."); } catch (IllegalArgumentException e) { // ok } } @Test public void testSaveResetLoad() { Settings.getInstance().reset(); Locale[] langs = Settings.getInstance().getSupportedLanguages(); String testDir = System.getProperty("java.io.tmpdir") + "/bsv_test"; String settingsFile = testDir + "/settings.ini"; (new File(testDir)).mkdirs(); // set new language Locale current = Settings.getInstance().getLanguage(); Locale next = langs[0]; if (next == current) { next = langs[1]; } Settings.getInstance().setLanguage(next); // store changes try { Settings.getInstance().store(settingsFile); } catch (IOException ex) { fail("Got IO exception: " + ex.getMessage()); } // reset Settings.getInstance().reset(); assertEquals("Reset does not affect language.", current, Settings.getInstance().getLanguage()); // load try { Settings.getInstance().load(settingsFile); } catch (IOException ex) { fail("Got IO exception: " + ex.getMessage()); } assertEquals("Setting does not work for language.", next, Settings.getInstance().getLanguage()); } @Test public void testDefaultSettingsFile() { //store old settings File defFile = new File(Settings.getDefaultFile()); File renFile = new File(defFile.getAbsolutePath() + "_old"); if (defFile.exists()) { defFile.renameTo(renFile); } //test String defaultSettingsPath = Settings.getDefaultFile(); Settings.getInstance().reset(); Locale[] langs = Settings.getInstance().getSupportedLanguages(); // set new language Locale current = Settings.getInstance().getLanguage(); Locale next = langs[0]; if (next == current) { next = langs[1]; } Settings.getInstance().setLanguage(next); try { Settings.getInstance().store(null); } catch (IOException ex) { fail("Got IO exception: " + ex.getMessage()); } assertTrue((new File(defaultSettingsPath)).exists()); try { Settings.getInstance().load(defaultSettingsPath); } catch (IOException ex) { fail("Got IO exception: " + ex.getMessage()); } assertEquals("Setting does not work for language.", next, Settings.getInstance().getLanguage()); //restore old settings if (defFile.exists()) { defFile.delete(); } renFile.renameTo(defFile); } }