aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-01-31 00:04:48 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-01-31 00:04:48 +0100
commitfc58236a564c024ebe7fda5496c1b09f815c9c20 (patch)
treea5745e0fa2f16a212f318d2a8a010569cdb57929 /subprojects
parentchore(deps): bump dependencies (diff)
downloadrefinery-fc58236a564c024ebe7fda5496c1b09f815c9c20.tar.gz
refinery-fc58236a564c024ebe7fda5496c1b09f815c9c20.tar.zst
refinery-fc58236a564c024ebe7fda5496c1b09f815c9c20.zip
fix(build): avoid cyclic dependency
IntelliJ can handle dependencies between test configurations going in the reverse direction compared to dependencies between main configurations, but Eclipse can't. Manually copy some code over to break the reverse dependency.
Diffstat (limited to 'subprojects')
-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());