diff options
author | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-17 15:38:18 +0200 |
---|---|---|
committer | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-17 15:38:18 +0200 |
commit | 4fcc8c0b07a733b63aa25b8b48e9980acbe6846f (patch) | |
tree | dfe605a9bd3e2065d708a9fa4e40421e0d960523 /Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse | |
parent | Caching immutable nodes (diff) | |
download | VIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.tar.gz VIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.tar.zst VIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.zip |
parametric testing and permutaters
Diffstat (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse')
2 files changed, 139 insertions, 29 deletions
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java index 76d40e3c..cf3b8d5e 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java | |||
@@ -3,9 +3,12 @@ package org.eclipse.viatra.solver.data.map; | |||
3 | import static org.junit.Assert.fail; | 3 | import static org.junit.Assert.fail; |
4 | 4 | ||
5 | import java.util.Random; | 5 | import java.util.Random; |
6 | import java.util.stream.Stream; | ||
6 | 7 | ||
7 | import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl; | 8 | import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl; |
8 | import org.junit.jupiter.api.Test; | 9 | import org.junit.jupiter.params.ParameterizedTest; |
10 | import org.junit.jupiter.params.provider.Arguments; | ||
11 | import org.junit.jupiter.params.provider.MethodSource; | ||
9 | 12 | ||
10 | public class SmokeTest1Mutable { | 13 | public class SmokeTest1Mutable { |
11 | 14 | ||
@@ -86,34 +89,51 @@ public class SmokeTest1Mutable { | |||
86 | } | 89 | } |
87 | } | 90 | } |
88 | 91 | ||
89 | @Test | 92 | @ParameterizedTest(name = "Mutable Smoke {index}/{0} Steps={1} Keys={2} Values={3} seed={4}") |
90 | void MiniSmokeK3V2v1() { | 93 | @MethodSource |
91 | runSmokeTest("MiniSmokeK3V2v1",0, 1000, 3, 2); | 94 | void parametrizedSmoke(int test, int steps, int noKeys, int noValues, int seed) { |
95 | runSmokeTest("Smoke"+test+"S"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues); | ||
92 | } | 96 | } |
93 | @Test | 97 | |
94 | void MiniSmokeK3V2v2() { | 98 | private static Stream<Arguments> parametrizedSmoke(){ |
95 | runSmokeTest("MiniSmokeK3V2v2",1, 1000, 3, 2); | 99 | return TestPermuter.permutationWithSize( |
96 | } | 100 | new Object[] {1000,32*32*32*32}, |
97 | @Test | 101 | new Object[] {3,32, 32*32, 32*32*32*32}, |
98 | void MiniSmokeK3V2v3() { | 102 | new Object[] {2,3}, |
99 | runSmokeTest("MiniSmokeK3V2v3",3, 1000, 3, 2); | 103 | new Object[] {1,2,3} |
100 | } | 104 | ); |
101 | @Test | ||
102 | void MediumSmokeK3V2v1() { | ||
103 | runSmokeTest("MediumSmokeK3V2v1",1, 1000, 32, 2); | ||
104 | } | ||
105 | @Test | ||
106 | void MediumSmokeK3V2v2() { | ||
107 | runSmokeTest("MediumSmokeK3V2v2",2, 1000, 32, 2); | ||
108 | } | ||
109 | @Test | ||
110 | void MediumSmokeK3V2v3() { | ||
111 | runSmokeTest("MediumSmokeK3V2v3",3, 1000, 32, 2); | ||
112 | } | ||
113 | @Test | ||
114 | void SmokeLarge() { | ||
115 | var milis = System.currentTimeMillis(); | ||
116 | runSmokeTest("SmokeLarge",0, 32*32*32*32, 32*32-1, 2); | ||
117 | System.out.println(System.currentTimeMillis()-milis); | ||
118 | } | 105 | } |
106 | |||
107 | |||
108 | |||
109 | // @Test | ||
110 | // void MiniSmokeK3V2v1() { | ||
111 | // runSmokeTest("MiniSmokeK3V2v1",0, 1000, 3, 2); | ||
112 | // } | ||
113 | // @Test | ||
114 | // void MiniSmokeK3V2v2() { | ||
115 | // runSmokeTest("MiniSmokeK3V2v2",1, 1000, 3, 2); | ||
116 | // } | ||
117 | // @Test | ||
118 | // void MiniSmokeK3V2v3() { | ||
119 | // runSmokeTest("MiniSmokeK3V2v3",3, 1000, 3, 2); | ||
120 | // } | ||
121 | // @Test | ||
122 | // void MediumSmokeK3V2v1() { | ||
123 | // runSmokeTest("MediumSmokeK3V2v1",1, 1000, 32, 2); | ||
124 | // } | ||
125 | // @Test | ||
126 | // void MediumSmokeK3V2v2() { | ||
127 | // runSmokeTest("MediumSmokeK3V2v2",2, 1000, 32, 2); | ||
128 | // } | ||
129 | // @Test | ||
130 | // void MediumSmokeK3V2v3() { | ||
131 | // runSmokeTest("MediumSmokeK3V2v3",3, 1000, 32, 2); | ||
132 | // } | ||
133 | // @Test | ||
134 | // void SmokeLarge() { | ||
135 | // var milis = System.currentTimeMillis(); | ||
136 | // runSmokeTest("SmokeLarge",0, 32*32*32*32, 32*32-1, 2); | ||
137 | // System.out.println(System.currentTimeMillis()-milis); | ||
138 | // } | ||
119 | } | 139 | } |
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/TestPermuter.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/TestPermuter.java new file mode 100644 index 00000000..db97cdf5 --- /dev/null +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/TestPermuter.java | |||
@@ -0,0 +1,90 @@ | |||
1 | package org.eclipse.viatra.solver.data.map; | ||
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 | } | ||