aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers
diff options
context:
space:
mode:
authorLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-17 15:38:18 +0200
committerLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-17 15:38:18 +0200
commit4fcc8c0b07a733b63aa25b8b48e9980acbe6846f (patch)
treedfe605a9bd3e2065d708a9fa4e40421e0d960523 /Solvers
parentCaching immutable nodes (diff)
downloadVIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.tar.gz
VIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.tar.zst
VIATRA-Generator-4fcc8c0b07a733b63aa25b8b48e9980acbe6846f.zip
parametric testing and permutaters
Diffstat (limited to 'Solvers')
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java78
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/TestPermuter.java90
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;
3import static org.junit.Assert.fail; 3import static org.junit.Assert.fail;
4 4
5import java.util.Random; 5import java.util.Random;
6import java.util.stream.Stream;
6 7
7import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl; 8import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl;
8import org.junit.jupiter.api.Test; 9import org.junit.jupiter.params.ParameterizedTest;
10import org.junit.jupiter.params.provider.Arguments;
11import org.junit.jupiter.params.provider.MethodSource;
9 12
10public class SmokeTest1Mutable { 13public 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 @@
1package org.eclipse.viatra.solver.data.map;
2
3import static org.junit.Assert.assertTrue;
4import static org.junit.jupiter.api.Assertions.assertEquals;
5
6import java.util.LinkedList;
7import java.util.List;
8import java.util.stream.Stream;
9
10import org.junit.jupiter.api.Test;
11import org.junit.jupiter.params.provider.Arguments;
12
13public 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}