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() {