FELIX-3884 : Default value and options - adding tests
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1519772 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/metatype/src/test/java/org/apache/felix/metatype/ADTest.java b/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
index 00cbc27..6f475c8 100644
--- a/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
+++ b/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
@@ -18,6 +18,9 @@
*/
package org.apache.felix.metatype;
+import java.util.HashMap;
+import java.util.Map;
+
import junit.framework.TestCase;
import org.osgi.service.metatype.AttributeDefinition;
@@ -149,9 +152,9 @@
}
/**
- * FELIX-3757: if an AD has only its 'required' property set, but no
- * min/max or option values defined, the validation still should detect
- * empty values.
+ * FELIX-3757: if an AD has only its 'required' property set, but no
+ * min/max or option values defined, the validation still should detect
+ * empty values.
*/
public void testValidateRequiredValueWithMinimalOptions()
{
@@ -188,4 +191,39 @@
assertEquals("", ad.validate("1,2"));
}
+
+ /**
+ * FELIX-3884 : if an AD has options, default values must be in the option
+ * values.
+ */
+ public void testOptionsAndDefaultValues()
+ {
+ final AD ad = new AD();
+ ad.setType("String");
+ final Map options = new HashMap();
+ options.put("A", "L-A");
+ options.put("B", "L-B");
+ ad.setOptions(options);
+
+ ad.setDefaultValue(new String[] {"A", "B"});
+ equalsArray(new String[] {"A", "B"}, ad.getDefaultValue());
+
+ ad.setDefaultValue(new String[] {"A", "B", "C"});
+ equalsArray(new String[] {"A", "B"}, ad.getDefaultValue());
+
+ ad.setDefaultValue(new String[] {"X", "Y", "B"});
+ equalsArray(new String[] {"B"}, ad.getDefaultValue());
+
+ ad.setDefaultValue(new String[] {"X", "Y", "Z"});
+ assertNull(ad.getDefaultValue());
+ }
+
+ private void equalsArray(String[] a, String[] b)
+ {
+ assertEquals(a.length, b.length);
+ for(int i=0; i<a.length;i++)
+ {
+ assertEquals(a[i], b[i]);
+ }
+ }
}