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]);
+        }
+    }
 }