diff options
author | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-26 15:01:23 +0200 |
---|---|---|
committer | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-26 15:01:23 +0200 |
commit | 1527e27f36762a5e3a1cdbb84467f67322cb7cba (patch) | |
tree | c076fb8117180a15989535743bd3bab32db01c71 /Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java | |
parent | better progress logging in smoke tests (diff) | |
download | VIATRA-Generator-1527e27f36762a5e3a1cdbb84467f67322cb7cba.tar.gz VIATRA-Generator-1527e27f36762a5e3a1cdbb84467f67322cb7cba.tar.zst VIATRA-Generator-1527e27f36762a5e3a1cdbb84467f67322cb7cba.zip |
Smoketest refactor splitting fast and slow smoke tests
Diffstat (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java')
-rw-r--r-- | Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java new file mode 100644 index 00000000..d9e50508 --- /dev/null +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/TestPermuter.java | |||
@@ -0,0 +1,90 @@ | |||
1 | package org.eclipse.viatra.solver.data.map.test.smoke; | ||
2 | |||
3 | import static org.junit.Assert.assertTrue; | ||
4 | import static org.junit.jupiter.api.Assertions.assertEquals; | ||
5 | |||
6 | import java.util.LinkedList; | ||
7 | import java.util.List; | ||
8 | import java.util.stream.Stream; | ||
9 | |||
10 | import org.junit.jupiter.api.Test; | ||
11 | import org.junit.jupiter.params.provider.Arguments; | ||
12 | |||
13 | public class TestPermuter { | ||
14 | private static List<List<Object>> permutation_internal(int from, Object[]... valueOption) { | ||
15 | if(valueOption.length == from) { | ||
16 | return List.of(List.of()); // empty list | ||
17 | } else { | ||
18 | Object[] permuteThis = valueOption[from]; | ||
19 | List<List<Object>> otherCombination = permutation_internal(from+1,valueOption); | ||
20 | |||
21 | List<List<Object>> result = new LinkedList<>(); | ||
22 | for(Object permuteThisElement : permuteThis) { | ||
23 | for(List<Object> otherCombinationList : otherCombination) { | ||
24 | List<Object> newResult = new LinkedList<>(); | ||
25 | newResult.add(permuteThisElement); | ||
26 | newResult.addAll(otherCombinationList); | ||
27 | result.add(newResult); | ||
28 | } | ||
29 | } | ||
30 | return result; | ||
31 | } | ||
32 | } | ||
33 | public static Stream<Arguments> permutation(Object[]... valueOption) { | ||
34 | List<List<Object>> permutations = permutation_internal(0, valueOption); | ||
35 | return permutations.stream().map(x -> Arguments.of(x.toArray())); | ||
36 | } | ||
37 | public static Stream<Arguments> permutationWithSize(Object[]... valueOption) { | ||
38 | int size = 1; | ||
39 | for(int i = 0; i< valueOption.length; i++) { | ||
40 | size *= valueOption[i].length; | ||
41 | } | ||
42 | Object[][] newValueOption = new Object[valueOption.length+1][]; | ||
43 | newValueOption[0] = new Object[] {size}; | ||
44 | for(int i = 1; i<newValueOption.length; i++) { | ||
45 | newValueOption[i]=valueOption[i-1]; | ||
46 | } | ||
47 | return permutation(newValueOption); | ||
48 | } | ||
49 | |||
50 | @Test | ||
51 | public void permutation_internalTest() { | ||
52 | List<List<Object>> res = permutation_internal(0, | ||
53 | new Object[]{1,2,3}, | ||
54 | new Object[]{'a','b','c'}, | ||
55 | new Object[]{"alpha","beta","gamma","delta"} | ||
56 | ); | ||
57 | // for(var permutation : res) { | ||
58 | // System.out.print("["); | ||
59 | // for(int index = 0; index<permutation.size(); index++) { | ||
60 | // if(index!=0) System.out.print(","); | ||
61 | // System.out.print(permutation.get(index)); | ||
62 | // } | ||
63 | // System.out.println("]"); | ||
64 | // } | ||
65 | assertTrue(res.size()==3*3*4); | ||
66 | } | ||
67 | |||
68 | @Test | ||
69 | public void permutationTest1() { | ||
70 | var res = permutation( | ||
71 | new Object[]{1,2,3}, | ||
72 | new Object[]{'a','b','c'}, | ||
73 | new Object[]{"alpha","beta","gamma","delta"} | ||
74 | ); | ||
75 | assertTrue(res.count()==3*3*4); | ||
76 | } | ||
77 | @Test | ||
78 | public void permutationTest2() { | ||
79 | var res = permutation( | ||
80 | new Object[]{1,2,3}, | ||
81 | new Object[]{'a','b','c'}, | ||
82 | new Object[]{"alpha","beta","gamma","delta"} | ||
83 | ); | ||
84 | var arguments = res.findFirst().get().get(); | ||
85 | assertEquals(arguments[0], 1); | ||
86 | assertEquals(arguments[1], 'a'); | ||
87 | assertEquals(arguments[2], "alpha"); | ||
88 | System.out.println(arguments[0]); | ||
89 | } | ||
90 | } | ||