aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-semantics
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language-semantics')
-rw-r--r--subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/CountPropagationTest.java11
-rw-r--r--subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/ModelGenerationTest.java91
2 files changed, 83 insertions, 19 deletions
diff --git a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/CountPropagationTest.java b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/CountPropagationTest.java
index a383d043..eee2c4ae 100644
--- a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/CountPropagationTest.java
+++ b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/CountPropagationTest.java
@@ -67,15 +67,12 @@ class CountPropagationTest {
67 .put(Tuple.of(3), TruthValue.TRUE)) 67 .put(Tuple.of(3), TruthValue.TRUE))
68 .build(); 68 .build();
69 69
70 var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed); 70 var initialModel = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed);
71 var initialState = initialModel.commit();
72
73 var model = store.createModelForState(initialState);
71 var reasoningAdapter = model.getAdapter(ReasoningAdapter.class); 74 var reasoningAdapter = model.getAdapter(ReasoningAdapter.class);
72 var propagationAdapter = model.getAdapter(PropagationAdapter.class); 75 var propagationAdapter = model.getAdapter(PropagationAdapter.class);
73 model.commit();
74
75 reasoningAdapter.split(0);
76 assertThat(propagationAdapter.propagate(), is(PropagationResult.UNCHANGED));
77 model.commit();
78
79 reasoningAdapter.split(0); 76 reasoningAdapter.split(0);
80 assertThat(propagationAdapter.propagate(), is(PropagationResult.UNCHANGED)); 77 assertThat(propagationAdapter.propagate(), is(PropagationResult.UNCHANGED));
81 } 78 }
diff --git a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/ModelGenerationTest.java b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/ModelGenerationTest.java
index 779e18ab..ecd5d39c 100644
--- a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/ModelGenerationTest.java
+++ b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/ModelGenerationTest.java
@@ -122,30 +122,30 @@ class ModelGenerationTest {
122 122
123 abstract class Vertex { 123 abstract class Vertex {
124 container Region[0..1] region opposite vertices 124 container Region[0..1] region opposite vertices
125 Transition[] outgoingTransition opposite source 125 contains Transition[] outgoingTransition opposite source
126 Transition[] incomingTransition opposite target 126 Transition[] incomingTransition opposite target
127 } 127 }
128 128
129 class Transition { 129 class Transition {
130 Vertex source opposite outgoingTransition 130 container Vertex[0..1] source opposite outgoingTransition
131 Vertex target opposite incomingTransition 131 Vertex target opposite incomingTransition
132 } 132 }
133 133
134 abstract class Pseudostate extends Vertex {} 134 abstract class Pseudostate extends Vertex.
135 135
136 abstract class RegularState extends Vertex {} 136 abstract class RegularState extends Vertex.
137 137
138 class Entry extends Pseudostate {} 138 class Entry extends Pseudostate.
139 139
140 class Exit extends Pseudostate {} 140 class Exit extends Pseudostate.
141 141
142 class Choice extends Pseudostate {} 142 class Choice extends Pseudostate.
143 143
144 class FinalState extends RegularState {} 144 class FinalState extends RegularState.
145 145
146 class State extends RegularState, CompositeElement {} 146 class State extends RegularState, CompositeElement.
147 147
148 class Statechart extends CompositeElement {} 148 class Statechart extends CompositeElement.
149 149
150 // Constraints 150 // Constraints
151 151
@@ -209,7 +209,74 @@ class ModelGenerationTest {
209 error choiceHasNoIncoming(Choice c) <-> 209 error choiceHasNoIncoming(Choice c) <->
210 !target(_, c). 210 !target(_, c).
211 211
212 scope node = 50..60, Statechart = 1. 212 scope node = 50..60, Region = 5..10, Statechart = 1.
213 """);
214 assertThat(parsedProblem.errors(), empty());
215 var problem = parsedProblem.problem();
216
217 var storeBuilder = ModelStore.builder()
218 .with(ViatraModelQueryAdapter.builder())
219// .with(ModelVisualizerAdapter.builder()
220// .withOutputPath("test_output")
221// .withFormat(FileFormat.DOT)
222// .withFormat(FileFormat.SVG)
223// .saveStates()
224// .saveDesignSpace())
225 .with(PropagationAdapter.builder())
226 .with(StateCoderAdapter.builder())
227 .with(DesignSpaceExplorationAdapter.builder())
228 .with(ReasoningAdapter.builder());
229
230 var modelSeed = modelInitializer.createModel(problem, storeBuilder);
231
232 var store = storeBuilder.build();
233
234 var initialModel = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed);
235
236 var initialVersion = initialModel.commit();
237
238 var bestFirst = new BestFirstStoreManager(store, 1);
239 bestFirst.startExploration(initialVersion);
240 var resultStore = bestFirst.getSolutionStore();
241 System.out.println("states size: " + resultStore.getSolutions().size());
242
243 var model = store.createModelForState(resultStore.getSolutions().get(0).version());
244 var interpretation = model.getAdapter(ReasoningAdapter.class)
245 .getPartialInterpretation(Concreteness.CANDIDATE, ReasoningAdapter.EXISTS_SYMBOL);
246 var cursor = interpretation.getAll();
247 int max = -1;
248 var types = new LinkedHashMap<PartialRelation, Integer>();
249 var typeInterpretation = model.getInterpretation(TypeHierarchyTranslator.TYPE_SYMBOL);
250 while (cursor.move()) {
251 max = Math.max(max, cursor.getKey().get(0));
252 var type = typeInterpretation.get(cursor.getKey());
253 if (type != null) {
254 types.compute(type.candidateType(), (ignoredKey, oldValue) -> oldValue == null ? 1 : oldValue + 1);
255 }
256 }
257 System.out.println("Model size: " + (max + 1));
258 System.out.println(types);
259// initialModel.getAdapter(ModelVisualizerAdapter.class).visualize(bestFirst.getVisualizationStore());
260 }
261
262 @Test
263 void filesystemTest() {
264 var parsedProblem = parseHelper.parse("""
265 class Filesystem {
266 contains Entry root
267 }
268
269 abstract class Entry.
270
271 class Directory extends Entry {
272 contains Entry[] entries
273 }
274
275 class File extends Entry.
276
277 Filesystem(fs).
278
279 scope Filesystem += 0, Entry = 100.
213 """); 280 """);
214 assertThat(parsedProblem.errors(), empty()); 281 assertThat(parsedProblem.errors(), empty());
215 var problem = parsedProblem.problem(); 282 var problem = parsedProblem.problem();
@@ -265,7 +332,7 @@ class ModelGenerationTest {
265 var test = injector.getInstance(ModelGenerationTest.class); 332 var test = injector.getInstance(ModelGenerationTest.class);
266 try { 333 try {
267 test.statechartTest(); 334 test.statechartTest();
268 } catch (AssertionError e) { 335 } catch (Throwable e) {
269 e.printStackTrace(); 336 e.printStackTrace();
270 } 337 }
271 } 338 }