Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Fedorov2020-04-03 17:11:11 +0000
committerAlexander Fedorov2020-04-17 10:19:38 +0000
commite452e6967894c493e3dba238047e3c73b22fc79b (patch)
tree370d362fabf5595bb9d1c4157e6f73530b831217 /bundles/org.eclipse.equinox.preferences.tests/src
parentda72c7f3e8bfb24ff622838a492cc56a91a66186 (diff)
downloadrt.equinox.bundles-e452e6967894c493e3dba238047e3c73b22fc79b.tar.gz
rt.equinox.bundles-e452e6967894c493e3dba238047e3c73b22fc79b.tar.xz
rt.equinox.bundles-e452e6967894c493e3dba238047e3c73b22fc79b.zip
Bug 561749 - Provide metadata-based Equinox Preferences API
Metadata-based Preference API and implementation Javadoc and unit-tests Change-Id: Ifd1b6fc7bfdf98709fb24691721a9c4feadf1f0d Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
Diffstat (limited to 'bundles/org.eclipse.equinox.preferences.tests/src')
-rw-r--r--bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/OsgiPreferenceMetadataStoreTest.java203
-rw-r--r--bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/PreferenceMetadataTest.java59
2 files changed, 262 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/OsgiPreferenceMetadataStoreTest.java b/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/OsgiPreferenceMetadataStoreTest.java
new file mode 100644
index 000000000..b5db3d02c
--- /dev/null
+++ b/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/OsgiPreferenceMetadataStoreTest.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.preferences.tests;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.OsgiPreferenceMetadataStore;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.junit.Test;
+
+public class OsgiPreferenceMetadataStoreTest {
+
+ private final PreferenceMetadata<Object> unknown = new PreferenceMetadata<>(Object.class, "unknown", "", "Unknown",
+ "An option with unclear semantic, i.e. typical one");
+ private final PreferenceMetadata<String> string2020 = new PreferenceMetadata<>(String.class, "string2020", "2020",
+ "String 2020");
+ private final PreferenceMetadata<Boolean> negative = new PreferenceMetadata<>(Boolean.class, "negative", false,
+ "Negative");
+ private final PreferenceMetadata<Boolean> positive = new PreferenceMetadata<>(Boolean.class, "positive", true,
+ "Positive");
+ private final PreferenceMetadata<byte[]> bytes2020 = new PreferenceMetadata<>(byte[].class, "bytes2020",
+ new byte[] { 20, 20 }, "Bytes 2020");
+ private final PreferenceMetadata<Double> double2020 = new PreferenceMetadata<>(Double.class, "double2020", 2020d,
+ "Double 2020");
+ private final PreferenceMetadata<Float> float2020 = new PreferenceMetadata<>(Float.class, "float2020", 2020f,
+ "Float 2020");
+ private final PreferenceMetadata<Integer> int2020 = new PreferenceMetadata<>(Integer.class, "int2020", 2020,
+ "Int 2020");
+ private final PreferenceMetadata<Long> long2020 = new PreferenceMetadata<>(Long.class, "long2020", 2020l,
+ "Long 2020");
+
+ @Test(expected = NullPointerException.class)
+ public void testNullPreferences() {
+ new OsgiPreferenceMetadataStore(null);
+ }
+
+ @Test
+ public void testConsumable() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ assertFalse(storage.handles(Object.class));
+ assertTrue(storage.handles(String.class));
+ assertTrue(storage.handles(Boolean.class));
+ assertTrue(storage.handles(byte[].class));
+ assertFalse(storage.handles(Byte[].class));
+ assertTrue(storage.handles(Double.class));
+ assertTrue(storage.handles(Float.class));
+ assertTrue(storage.handles(Integer.class));
+ assertTrue(storage.handles(Long.class));
+ }
+
+ @Test
+ public void testLoadString() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.put(string2020.identifer(), "2002");
+ assertEquals("2002", storage.load(string2020));
+ }
+
+ @Test
+ public void testLoadBoolean() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putBoolean(negative.identifer(), true);
+ assertEquals(true, storage.load(negative));
+ preferences.putBoolean(positive.identifer(), false);
+ assertEquals(false, storage.load(positive));
+ }
+
+ @Test
+ public void testLoadByteArray() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putByteArray(bytes2020.identifer(), new byte[] { 20, 02 });
+ assertArrayEquals(new byte[] { 20, 02 }, storage.load(bytes2020));
+ }
+
+ @Test
+ public void testLoadDouble() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putDouble(double2020.identifer(), 2002d);
+ assertEquals(2002d, storage.load(double2020), 0);
+ }
+
+ @Test
+ public void testLoadFloat() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putFloat(float2020.identifer(), 2002f);
+ assertEquals(2002f, storage.load(float2020), 0);
+ }
+
+ @Test
+ public void testLoadInt() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putLong(int2020.identifer(), 2002l);
+ assertEquals(2002l, (long) storage.load(int2020));
+ }
+
+ @Test
+ public void testLoadLong() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ preferences.putLong(long2020.identifer(), 2002l);
+ assertEquals(2002l, (long) storage.load(long2020));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testLoadUnknown() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ assertEquals(new Object(), storage.load(unknown));
+ }
+
+ @Test
+ public void testSaveString() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save("2002", string2020);
+ assertEquals("2002", preferences.get(string2020.identifer(), string2020.defaultValue()));
+ }
+
+ @Test
+ public void testSaveBoolean() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(true, negative);
+ assertEquals(true, preferences.getBoolean(negative.identifer(), negative.defaultValue()));
+ storage.save(false, positive);
+ assertEquals(false, preferences.getBoolean(positive.identifer(), positive.defaultValue()));
+ }
+
+ @Test
+ public void testSaveByteArray() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(new byte[] { 20, 02 }, bytes2020);
+ assertArrayEquals(new byte[] { 20, 02 },
+ preferences.getByteArray(bytes2020.identifer(), bytes2020.defaultValue()));
+ }
+
+ @Test
+ public void testSaveDouble() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(2002d, double2020);
+ assertEquals(2002d, preferences.getDouble(double2020.identifer(), double2020.defaultValue()), 0);
+ }
+
+ @Test
+ public void testSaveFloat() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(2002f, float2020);
+ assertEquals(2002f, preferences.getDouble(float2020.identifer(), float2020.defaultValue()), 0);
+ }
+
+ @Test
+ public void testSaveInt() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(2002, int2020);
+ assertEquals(2002, preferences.getInt(int2020.identifer(), int2020.defaultValue()));
+ }
+
+ @Test
+ public void testSaveLong() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(2002l, long2020);
+ assertEquals(2002l, preferences.getLong(long2020.identifer(), long2020.defaultValue()));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testSaveUnknown() {
+ IEclipsePreferences preferences = anyPreferences();
+ OsgiPreferenceMetadataStore storage = new OsgiPreferenceMetadataStore(preferences);
+ storage.save(new Object(), unknown);
+ }
+
+ @SuppressWarnings("restriction")
+ private IEclipsePreferences anyPreferences() {
+ return new org.eclipse.core.internal.preferences.EclipsePreferences();
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/PreferenceMetadataTest.java b/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/PreferenceMetadataTest.java
new file mode 100644
index 000000000..1922c416b
--- /dev/null
+++ b/bundles/org.eclipse.equinox.preferences.tests/src/org/eclipse/equinox/preferences/tests/PreferenceMetadataTest.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.preferences.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.junit.Test;
+
+public class PreferenceMetadataTest {
+
+ @Test
+ public void testPreferenceMetadata() {
+ PreferenceMetadata<String> option = new PreferenceMetadata<>(String.class, "identifier", "default", "name",
+ "description");
+ assertEquals("identifier", option.identifer());
+ assertEquals("default", option.defaultValue());
+ assertEquals("name", option.name());
+ assertEquals("description", option.description());
+ assertEquals(String.class, option.valueClass());
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testPreferenceMetadataNullValueType() {
+ new PreferenceMetadata<>(null, "identifier", "default", "name", "description");
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testPreferenceMetadataNullIdentifier() {
+ new PreferenceMetadata<>(Object.class, null, "default", "name", "description");
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testPreferenceMetadataNullDefaultValue() {
+ new PreferenceMetadata<>(Object.class, "identifier", null, "name", "description");
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testPreferenceMetadataNullName() {
+ new PreferenceMetadata<>(Object.class, "identifier", "default", null, "description");
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testPreferenceMetadataNullDescription() {
+ new PreferenceMetadata<>(Object.class, "identifier", "default", "name", null);
+ }
+
+}

Back to the top