aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--subprojects/language-semantics/build.gradle.kts1
-rw-r--r--subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java42
2 files changed, 33 insertions, 10 deletions
diff --git a/subprojects/language-semantics/build.gradle.kts b/subprojects/language-semantics/build.gradle.kts
index 777ef993..689f621e 100644
--- a/subprojects/language-semantics/build.gradle.kts
+++ b/subprojects/language-semantics/build.gradle.kts
@@ -16,7 +16,6 @@ dependencies {
16 api(project(":refinery-store-reasoning")) 16 api(project(":refinery-store-reasoning"))
17 implementation(project(":refinery-store-reasoning-scope")) 17 implementation(project(":refinery-store-reasoning-scope"))
18 runtimeOnly(libs.eclipseCollections) 18 runtimeOnly(libs.eclipseCollections)
19 testImplementation(project(":refinery-generator"))
20 testImplementation(project(":refinery-store-dse-visualization")) 19 testImplementation(project(":refinery-store-dse-visualization"))
21 testImplementation(project(":refinery-store-query-interpreter")) 20 testImplementation(project(":refinery-store-query-interpreter"))
22 testImplementation(testFixtures(project(":refinery-language"))) 21 testImplementation(testFixtures(project(":refinery-language")))
diff --git a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
index 2d759c86..8ef449b0 100644
--- a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
+++ b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
@@ -6,19 +6,29 @@
6package tools.refinery.language.semantics; 6package tools.refinery.language.semantics;
7 7
8import com.google.inject.Inject; 8import com.google.inject.Inject;
9import com.google.inject.Provider;
9import org.eclipse.xtext.testing.InjectWith; 10import org.eclipse.xtext.testing.InjectWith;
10import org.eclipse.xtext.testing.extensions.InjectionExtension; 11import org.eclipse.xtext.testing.extensions.InjectionExtension;
11import org.junit.jupiter.api.extension.ExtendWith; 12import org.junit.jupiter.api.extension.ExtendWith;
12import org.junit.jupiter.params.ParameterizedTest; 13import org.junit.jupiter.params.ParameterizedTest;
13import org.junit.jupiter.params.provider.Arguments; 14import org.junit.jupiter.params.provider.Arguments;
14import org.junit.jupiter.params.provider.MethodSource; 15import org.junit.jupiter.params.provider.MethodSource;
15import tools.refinery.generator.ModelGeneratorFactory; 16import tools.refinery.language.model.tests.utils.ProblemParseHelper;
16import tools.refinery.generator.ProblemLoader;
17import tools.refinery.language.tests.ProblemInjectorProvider; 17import tools.refinery.language.tests.ProblemInjectorProvider;
18import tools.refinery.store.dse.propagation.PropagationAdapter;
19import tools.refinery.store.dse.strategy.BestFirstStoreManager;
20import tools.refinery.store.dse.transition.DesignSpaceExplorationAdapter;
21import tools.refinery.store.model.ModelStore;
22import tools.refinery.store.query.interpreter.QueryInterpreterAdapter;
23import tools.refinery.store.reasoning.ReasoningAdapter;
24import tools.refinery.store.reasoning.ReasoningStoreAdapter;
25import tools.refinery.store.reasoning.literal.Concreteness;
26import tools.refinery.store.statecoding.StateCoderAdapter;
18 27
19import java.io.ByteArrayOutputStream; 28import java.io.ByteArrayOutputStream;
20import java.io.IOException; 29import java.io.IOException;
21import java.util.Map; 30import java.util.Map;
31import java.util.Set;
22import java.util.stream.Stream; 32import java.util.stream.Stream;
23 33
24import static org.hamcrest.MatcherAssert.assertThat; 34import static org.hamcrest.MatcherAssert.assertThat;
@@ -28,21 +38,35 @@ import static org.hamcrest.Matchers.is;
28@InjectWith(ProblemInjectorProvider.class) 38@InjectWith(ProblemInjectorProvider.class)
29class SolutionSerializerTest { 39class SolutionSerializerTest {
30 @Inject 40 @Inject
31 ProblemLoader loader; 41 private ProblemParseHelper parseHelper;
32 42
33 @Inject 43 @Inject
34 ModelGeneratorFactory generatorFactory; 44 private Provider<ModelInitializer> initializerProvider;
35 45
36 @Inject 46 @Inject
37 SolutionSerializer serializer; 47 private Provider<SolutionSerializer> serializerProvider;
38 48
39 @ParameterizedTest 49 @ParameterizedTest
40 @MethodSource 50 @MethodSource
41 void solutionSerializerTest(String prefix, String input, String expectedOutput) throws IOException { 51 void solutionSerializerTest(String prefix, String input, String expectedOutput) throws IOException {
42 var problem = loader.loadString(prefix + "\n" + input); 52 var problem = parseHelper.parse(prefix + "\n" + input).problem();
43 var generator = generatorFactory.createGenerator(problem); 53 var storeBuilder = ModelStore.builder()
44 generator.generate(); 54 .with(QueryInterpreterAdapter.builder())
45 var solution = serializer.serializeSolution(generator.getProblemTrace(), generator.getModel()); 55 .with(PropagationAdapter.builder())
56 .with(StateCoderAdapter.builder())
57 .with(DesignSpaceExplorationAdapter.builder())
58 .with(ReasoningAdapter.builder()
59 .requiredInterpretations(Set.of(Concreteness.CANDIDATE)));
60 var initializer = initializerProvider.get();
61 var modelSeed = initializer.createModel(problem, storeBuilder);
62 var store = storeBuilder.build();
63 var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed);
64 var initialVersion = model.commit();
65 var bestFirst = new BestFirstStoreManager(store, 1);
66 bestFirst.startExploration(initialVersion, 0);
67 model.restore(bestFirst.getSolutionStore().getSolutions().getFirst().version());
68 var serializer = serializerProvider.get();
69 var solution = serializer.serializeSolution(initializer.getProblemTrace(), model);
46 String actualOutput; 70 String actualOutput;
47 try (var outputStream = new ByteArrayOutputStream()) { 71 try (var outputStream = new ByteArrayOutputStream()) {
48 solution.eResource().save(outputStream, Map.of()); 72 solution.eResource().save(outputStream, Map.of());