diff --git a/engine/src/test/jme3test/app/TestCustomAppSettings.java b/engine/src/test/jme3test/app/TestCustomAppSettings.java new file mode 100644 index 000000000..55ffe0278 --- /dev/null +++ b/engine/src/test/jme3test/app/TestCustomAppSettings.java @@ -0,0 +1,88 @@ +package jme3test.app; + +import com.jme3.scene.Mesh; +import com.jme3.system.AppSettings; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.prefs.BackingStoreException; + +public class TestCustomAppSettings { + + private static final String APPSETTINGS_KEY = "JME_AppSettingsTest"; + + private static void assertEqual(Object a, Object b) { + if (!a.equals(b)){ + throw new AssertionError(); + } + } + + /** + * Tests preference based AppSettings. + */ + private static void testPreferenceSettings() { + AppSettings settings = new AppSettings(false); + settings.putBoolean("TestBool", true); + settings.putInteger("TestInt", 123); + settings.putString("TestStr", "HelloWorld"); + settings.putFloat("TestFloat", 123.567f); + settings.put("TestObj", new Mesh()); // Objects not supported by preferences + + try { + settings.save(APPSETTINGS_KEY); + } catch (BackingStoreException ex) { + ex.printStackTrace(); + } + + AppSettings loadedSettings = new AppSettings(false); + try { + loadedSettings.load(APPSETTINGS_KEY); + } catch (BackingStoreException ex) { + ex.printStackTrace(); + } + + assertEqual(loadedSettings.getBoolean("TestBool"), true); + assertEqual(loadedSettings.getInteger("TestInt"), 123); + assertEqual(loadedSettings.getString("TestStr"), "HelloWorld"); + assertEqual(loadedSettings.get("TestFloat"), 123.567f); + } + + /** + * Test Java properties file based AppSettings. + */ + private static void testFileSettings() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + AppSettings settings = new AppSettings(false); + settings.putBoolean("TestBool", true); + settings.putInteger("TestInt", 123); + settings.putString("TestStr", "HelloWorld"); + settings.putFloat("TestFloat", 123.567f); + settings.put("TestObj", new Mesh()); // Objects not supported by file settings + + try { + settings.save(baos); + } catch (IOException ex) { + ex.printStackTrace(); + } + + AppSettings loadedSettings = new AppSettings(false); + try { + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + loadedSettings.load(bais); + } catch (IOException ex) { + ex.printStackTrace(); + } + + assertEqual(loadedSettings.getBoolean("TestBool"), true); + assertEqual(loadedSettings.getInteger("TestInt"), 123); + assertEqual(loadedSettings.getString("TestStr"), "HelloWorld"); + assertEqual(loadedSettings.get("TestFloat"), 123.567f); + } + + public static void main(String[] args){ + testPreferenceSettings(); + testFileSettings(); + System.out.println("All OK"); + } +}