Mercurial > hg > graal-jvmci-8
changeset 11464:e55e24cc3e7b
Truffle-DSL: added permutation util functions to the TestHelper.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 29 Aug 2013 14:28:32 +0200 |
parents | 5fbd1ba4a5f3 |
children | 3d618420a4b6 |
files | graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java |
diffstat | 1 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java Wed Aug 28 18:45:32 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java Thu Aug 29 14:28:32 2013 +0200 @@ -75,4 +75,44 @@ return createCallTarget(node).call(new TestArguments(values)); } + static Object array(Object... val) { + return val; + } + + static <E> List<List<E>> permutations(List<E> list) { + return permutations(new ArrayList<E>(), list, new ArrayList<List<E>>()); + } + + static Object[][] permutations(Object... list) { + List<List<Object>> permutations = permutations(Arrays.asList(list)); + + Object[][] a = new Object[permutations.size()][]; + int index = 0; + for (List<Object> p : permutations) { + a[index] = p.toArray(new Object[p.size()]); + index++; + } + + return a; + } + + static <E> List<List<E>> permutations(List<E> prefix, List<E> suffix, List<List<E>> output) { + if (suffix.size() == 1) { + ArrayList<E> newElement = new ArrayList<>(prefix); + newElement.addAll(suffix); + output.add(newElement); + return output; + } + + for (int i = 0; i < suffix.size(); i++) { + List<E> newPrefix = new ArrayList<>(prefix); + newPrefix.add(suffix.get(i)); + List<E> newSuffix = new ArrayList<>(suffix); + newSuffix.remove(i); + permutations(newPrefix, newSuffix, output); + } + + return output; + } + }