Author: gnodet
Date: Wed Sep  6 11:37:53 2017
New Revision: 1807470

URL: http://svn.apache.org/viewvc?rev=1807470&view=rev
Log:
Fix sorting in some cases

Modified:
    
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Expander.java
    
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/ExpanderTest.java

Modified: 
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Expander.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Expander.java?rev=1807470&r1=1807469&r2=1807470&view=diff
==============================================================================
--- 
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Expander.java
 (original)
+++ 
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Expander.java
 Wed Sep  6 11:37:53 2017
@@ -32,6 +32,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.EnumSet;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -1702,7 +1703,7 @@ public class Expander extends BaseTokeni
                 val = toCollection.apply(val);
                 if (val instanceof Collection)
                 {
-                    val = new ArrayList<>(new HashSet<>(asCollection(val)));
+                    val = new ArrayList<>(new 
LinkedHashSet<>(asCollection(val)));
                 }
             }
 

Modified: 
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/ExpanderTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/ExpanderTest.java?rev=1807470&r1=1807469&r2=1807470&view=diff
==============================================================================
--- 
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/ExpanderTest.java
 (original)
+++ 
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/ExpanderTest.java
 Wed Sep  6 11:37:53 2017
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Arrays;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
@@ -59,6 +60,52 @@ public class ExpanderTest {
     }
 
     @Test
+    public void testSortingFlags() throws Exception {
+        Evaluate evaluate = new Evaluate() {
+            @Override
+            public Object eval(Token t) throws Exception {
+                return null;
+            }
+            @Override
+            public Object get(String key) {
+                switch (key) {
+                    case "a":
+                        return Arrays.asList(5, 3, 4, 2, 1, 3);
+                    case "b":
+                        return Arrays.asList(5, 3, 4, 2, 1, 31);
+                    case "c":
+                        return Arrays.asList("foo1", "foo02", "foo2", "foo3", 
"foo20", "foo23");
+                    case "d":
+                        return Arrays.asList("foo1", "foo02", "Foo2", "Foo3", 
"foo20", "foo23");
+                }
+                return null;
+            }
+            @Override
+            public Object put(String key, Object value) {
+                return null;
+            }
+            @Override
+            public Object expr(Token t) {
+                return null;
+            }
+            @Override
+            public Path currentDir() {
+                return null;
+            }
+        };
+
+        assertEquals("5 3 4 2 1 3", Expander.expand("${(j: :)a}", evaluate));
+        assertEquals("5 3 4 2 1", Expander.expand("${(j: :)${(u)a}}", 
evaluate));
+        assertEquals("3 1 2 4 3 5", Expander.expand("${(j: :)${(Oa)a}}", 
evaluate));
+        assertEquals("1 2 3 31 4 5", Expander.expand("${(j: :)${(i)b}}", 
evaluate));
+        assertEquals("1 2 3 4 5 31", Expander.expand("${(j: :)${(n)b}}", 
evaluate));
+        assertEquals("foo1 foo02 foo2 foo3 foo20 foo23", 
Expander.expand("${(j: :)${(n)c}}", evaluate));
+        assertEquals("foo23 foo20 foo3 foo2 foo02 foo1", 
Expander.expand("${(j: :)${(On)c}}", evaluate));
+        assertEquals("Foo2 Foo3 foo1 foo02 foo20 foo23", 
Expander.expand("${(j: :)${(n)d}}", evaluate));
+        assertEquals("foo1 foo02 Foo2 Foo3 foo20 foo23", 
Expander.expand("${(j: :)${(ni)d}}", evaluate));
+    }
+
+    @Test
     public void testGenerateFiles() throws IOException {
         final Path testdir = 
Paths.get(".").toAbsolutePath().resolve("target/testdir").normalize();
         Evaluate evaluate = new Evaluate() {


Reply via email to