You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2013/12/28 19:29:42 UTC

svn commit: r1553885 - /felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java

Author: fmeschbe
Date: Sat Dec 28 18:29:42 2013
New Revision: 1553885

URL: http://svn.apache.org/r1553885
Log:
FELIX-4360 Add a test case ensuring value order of Collection properties

Modified:
    felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java

Modified: felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java?rev=1553885&r1=1553884&r2=1553885&view=diff
==============================================================================
--- felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java (original)
+++ felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java Sat Dec 28 18:29:42 2013
@@ -20,8 +20,13 @@ package org.apache.felix.cm.integration;
 
 
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Dictionary;
 import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
 
 import junit.framework.TestCase;
 
@@ -1257,4 +1262,65 @@ public class ConfigurationBaseTest exten
             getConfigurationAdmin().getConfiguration( pid, null ).delete();
         }
     }
+
+   @Test
+    public void test_collection_property_order() throws IOException, BundleException
+    {
+        final String pid = "test_collection_property_order";
+        final String[] value = new String[]
+            { "a", "b", "c" };
+        final Bundle cmBundle = getCmBundle();
+        try
+        {
+            final Vector v = new Vector( Arrays.asList( value ) );
+            getConfigurationAdmin().getConfiguration( pid ).update( new Hashtable()
+            {
+                {
+                    put( "v", v );
+                }
+            } );
+            assertOrder( value, getConfigurationAdmin().getConfiguration( pid ).getProperties().get( "v" ) );
+
+            cmBundle.stop();
+            cmBundle.start();
+
+            assertOrder( value, getConfigurationAdmin().getConfiguration( pid ).getProperties().get( "v" ) );
+            getConfigurationAdmin().getConfiguration( pid, null ).delete();
+
+            final List l = Arrays.asList( value );
+            getConfigurationAdmin().getConfiguration( pid ).update( new Hashtable()
+            {
+                {
+                    put( "v", l );
+                }
+            } );
+            assertOrder( value, getConfigurationAdmin().getConfiguration( pid ).getProperties().get( "v" ) );
+
+            cmBundle.stop();
+            cmBundle.start();
+
+            assertOrder( value, getConfigurationAdmin().getConfiguration( pid ).getProperties().get( "v" ) );
+            getConfigurationAdmin().getConfiguration( pid, null ).delete();
+        }
+        finally
+        {
+            // make sure no configuration survives ...
+            getConfigurationAdmin().getConfiguration( pid, null ).delete();
+        }
+    }
+
+
+    private void assertOrder( final String[] expected, final Object actual )
+    {
+        TestCase.assertTrue( "Actual value must be a collection", actual instanceof Collection );
+        TestCase.assertEquals( "Collection must have " + expected.length + " entries", expected.length,
+            ( ( Collection ) actual ).size() );
+
+        final Iterator actualI = ( ( Collection ) actual ).iterator();
+        for ( int i = 0; i < expected.length; i++ )
+        {
+            String string = expected[i];
+            TestCase.assertEquals( i + "th element must be " + string, string, actualI.next() );
+        }
+    }
 }