diff --git a/inez.model.tests/.classpath b/inez.model.tests/.classpath index 030981d..b0fcce7 100644 --- a/inez.model.tests/.classpath +++ b/inez.model.tests/.classpath @@ -3,6 +3,7 @@ + diff --git a/inez.model.tests/pom.xml b/inez.model.tests/pom.xml index f6a0d7b..c2fe960 100644 --- a/inez.model.tests/pom.xml +++ b/inez.model.tests/pom.xml @@ -53,6 +53,7 @@ org.eclipse.tycho tycho-surefire-plugin + ${version.tycho} true diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/BridiTestDataGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/BridiTestDataGenerator.java new file mode 100644 index 0000000..35db835 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/BridiTestDataGenerator.java @@ -0,0 +1,25 @@ +package io.github.magwas.inez; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class BridiTestDataGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate( + BRIDI_TEST_DATA_HEADER, "IdTestData", "ReferenceTestData"); + String bridies = TestUtil.loadResourceAsString("bridies"); + GeneratorUtil.mapToCode(bridies, + line -> MessageFormat.format(BRIDI_TEST_DATA_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA, 4)), + builder); + return GeneratorUtil.testDataTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/GeneratorPatternConstants.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/GeneratorPatternConstants.java new file mode 100644 index 0000000..8252cc2 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/GeneratorPatternConstants.java @@ -0,0 +1,47 @@ +package io.github.magwas.inez; + +public interface GeneratorPatternConstants { + String GET_RELATIVE_FOR_BRIDI_ELEMENT_PATTERN = "\twhen(mock.apply({0}_ID, {1}_ID, {2}, {3})).thenReturn(Stream.of({4}_ID));\n"; + String BRIDI_TEST_DATA_PATTERN = "\tBridi {0} = new Bridi({1}, {2},{3});\n"; + String BRIDI_TEST_DATA_HEADER = """ + import java.util.List; + import io.github.magwas.inez.parse.IdTestData; + import io.github.magwas.inez.parse.IdUtil; + import io.github.magwas.inez.parse.ParserConstants; + import io.github.magwas.inez.parse.ReferenceTestData; + + """; + String SUMTI_REPOSITORY_STUB_PATTERN = "\twhen(mock.findById({0}_ID)).thenReturn(Optional.of({0}_SUMTI));\n"; + String SUMTI_REPOSITORY_STUB_EXTRA = "\twhen(mock.findAllByRepresentation(GO_REPR)).thenReturn(Set.of(GO_SUMTI, GO2_SUMTI));\n"; + String SUMTI_REPOSITORY_STUB_HEADER = """ + import java.util.Set; + import java.util.Optional; + import io.github.magwas.inez.storage.model.SumtiTestData; + """; + String SUMTI_TESTDATA_PATTERN = "\tSumti {0}_SUMTI = new Sumti({1}, {2});\n"; + String BRIDI_REFERENCE_PATTERN = """ + BridiReference {0}_REFERENCE_0 = new BridiReference( + IdUtil.createID({0}_ID+0), {0}_ID, {1}_ID, 0, {1}_ID); + BridiReference {0}_REFERENCE_1 = new BridiReference( + IdUtil.createID({0}_ID+1), {0}_ID, {1}_ID, 1, {2}_ID); + BridiReference {0}_REFERENCE_2 = new BridiReference( + IdUtil.createID({0}_ID+2), {0}_ID, {1}_ID, 2, {3}_ID); + List {0}_REFERENCELIST = List.of( + {0}_REFERENCE_0, {0}_REFERENCE_1, + {0}_REFERENCE_2); + """; + String BRIDI_REFERENCE_HEADER = """ + import io.github.magwas.inez.parse.IdTestData; + import io.github.magwas.inez.parse.IdUtil; + import java.util.List; + """; + String FIND_ALL_BY_REPRESENTATION_STUB_HEADER = """ + import java.util.stream.Stream; + + import io.github.magwas.inez.BridiTestData; + import io.github.magwas.inez.parse.ParserConstants; + """; + String FIND_ALL_ID_BY_REPRESENTATION_STUB_PATTERN = "\t\twhen(mock.apply({0})).thenAnswer((args) -> Stream.of({1}));\n"; + String FIND_ALL_BY_REPRESENTATION_STUB_PATTERN = "\t\twhen(mock.apply({0})).thenAnswer((args) -> Stream.of({1}));\n"; + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStubGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStubGenerator.java new file mode 100644 index 0000000..5c597e3 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStubGenerator.java @@ -0,0 +1,27 @@ +package io.github.magwas.inez.element; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class GetRelativeForBridiElementServiceStubGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.stubBoilerPlate(""" + import java.util.stream.Stream; + """, "BridiElementTestData"); + String relatives = TestUtil.loadResourceAsString("relatives"); + GeneratorUtil.mapToCode(relatives, + line -> MessageFormat.format(GET_RELATIVE_FOR_BRIDI_ELEMENT_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA)), + builder); + return GeneratorUtil.stubTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStubGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStubGenerator.java new file mode 100644 index 0000000..d67ff57 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStubGenerator.java @@ -0,0 +1,26 @@ +package io.github.magwas.inez.storage; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class FindAllByRepresentationServiceStubGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.stubBoilerPlate( + FIND_ALL_BY_REPRESENTATION_STUB_HEADER, "BridiTestData"); + String sumties = TestUtil.loadResourceAsString("byrepresentation"); + GeneratorUtil.mapToCode(sumties, line -> { + return MessageFormat.format(FIND_ALL_BY_REPRESENTATION_STUB_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA, 2)); + }, builder); + return GeneratorUtil.stubTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStubGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStubGenerator.java new file mode 100644 index 0000000..2937fec --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStubGenerator.java @@ -0,0 +1,28 @@ +package io.github.magwas.inez.storage; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class FindAllIdByRepresentationServiceStubGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.stubBoilerPlate( + FIND_ALL_BY_REPRESENTATION_STUB_HEADER, "BridiTestData"); + String sumties = TestUtil.loadResourceAsString("byrepresentation"); + GeneratorUtil.mapToCode(sumties, line -> { + String[] parts = line.split(RuntimeConstants.COMMA, 2); + String[] rest = parts[1].split(RuntimeConstants.COMMA); + return MessageFormat.format(FIND_ALL_ID_BY_REPRESENTATION_STUB_PATTERN, + parts[0], parts[1].replaceAll(",", "_ID,").replaceAll("$", "_ID")); + }, builder); + return GeneratorUtil.stubTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java new file mode 100644 index 0000000..1127ad8 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java @@ -0,0 +1,26 @@ +package io.github.magwas.inez.storage.model; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class BridiReferenceTestDataGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil + .testDataBoilerPlate(BRIDI_REFERENCE_HEADER, "IdTestData"); + String bridireferences = TestUtil.loadResourceAsString("bridireferences"); + GeneratorUtil.mapToCode(bridireferences, + line -> MessageFormat.format(BRIDI_REFERENCE_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA)), + builder); + return GeneratorUtil.testDataTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestDataGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestDataGenerator.java new file mode 100644 index 0000000..166ba7f --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestDataGenerator.java @@ -0,0 +1,26 @@ +package io.github.magwas.inez.storage.model; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class SumtiTestDataGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate( + "import io.github.magwas.inez.parse.IdTestData;", "IdTestData"); + String sumties = TestUtil.loadResourceAsString("sumties"); + GeneratorUtil.mapToCode(sumties, + line -> MessageFormat.format(SUMTI_TESTDATA_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA)), + builder); + return GeneratorUtil.testDataTail(builder); + } + +} diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/repository/SumtiRepositoryStubGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/repository/SumtiRepositoryStubGenerator.java new file mode 100644 index 0000000..568a0e0 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/repository/SumtiRepositoryStubGenerator.java @@ -0,0 +1,27 @@ +package io.github.magwas.inez.storage.repository; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.inez.GeneratorPatternConstants; +import io.github.magwas.runtime.GeneratorUtil; +import io.github.magwas.runtime.RuntimeConstants; +import io.github.magwas.testing.TestUtil; + +public class SumtiRepositoryStubGenerator + implements Supplier, GeneratorPatternConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil + .stubBoilerPlate(SUMTI_REPOSITORY_STUB_HEADER, "SumtiTestData"); + String sumties = TestUtil.loadResourceAsString("sumties"); + GeneratorUtil.mapToCode(sumties, + line -> MessageFormat.format(SUMTI_REPOSITORY_STUB_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA)), + builder); + builder.append(SUMTI_REPOSITORY_STUB_EXTRA); + return GeneratorUtil.stubTail(builder); + } + +} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/BridiTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/BridiTestData.java deleted file mode 100644 index 59bfab2..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/BridiTestData.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.magwas.inez; - -import java.util.List; -import java.util.Set; - -import io.github.magwas.inez.element.BridiElementTestData; -import io.github.magwas.inez.parse.IdUtil; -import io.github.magwas.inez.parse.ParserConstants; - -public interface BridiTestData extends BridiElementTestData { - - Bridi ALICE = new Bridi(IdUtil.createID(ALICE_REPR), ALICE_REPR, List.of()); - - Bridi GO1 = new Bridi(GO1_ID, GO_REPRESENTATION, null); - Bridi GO2 = new Bridi(GO2_ID, GO_REPRESENTATION, null); - Bridi SUMTI_IS_A_THING_IS_A_THING = new Bridi( - SUMTI_IS_A_THING_IS_A_THING_ID, - SUMTI_IS_A_THING_IS_A_THING_REPR_NOREFERENCE, - SUMTI_IS_A_THING_IS_A_THING_REFERENCES); - Bridi TAUTOLOGY_IS_A_THING = - new Bridi(TAUTOLOGY_IS_A_THING_ID, TAUTOLOGY_IS_A_THING_REPR, SUMTI_IS_A_THING_IS_A_THING_REFERENCES); - Bridi THING = new Bridi(THING_ID, THING_REPR, null); - Bridi THING_CHANGED = new Bridi(THING_ID, "thung", null); - Bridi THING_GENERATED = new Bridi(IdUtil.createID(THING_REPR), THING_REPR, null); - Bridi SUMTI = new Bridi(SUMTI_ID, SUMTI_REPR, null); - Bridi NONEXISTENT = new Bridi(NONEXISTENT_ID, NONEXISTENT_REPR, null); - Bridi BRIDI = new Bridi(BRIDI_ID, BRIDI_REPR, null); - Bridi IS_A = new Bridi(IS_A_ID, IS_A_REPR, null); - Bridi IS_A_NONSAVED = new Bridi(IdUtil.createID(IS_A_REPR), IS_A_REPR, null); - Bridi ANY = new Bridi(ParserConstants.QUERY_BRIDI_ID, ParserConstants.QUERY_BRIDI_ID, null); - - Bridi SUMTI_IS_A_THING = new Bridi(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_REPR, SUMTI_IS_A_THING_REFERENCES); - Bridi SUMTI_IS_A_THING_GENERATED = - new Bridi(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_REPR, SUMTI_IS_A_THING_GENERATED_REFERENCES); - Bridi SUMTI_IS_A_THING_CHANGED = - new Bridi(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_CHANGED_REPR, SUMTI_IS_A_THING_CHANGED_REFERENCES); - Bridi TAUTOLOGY = new Bridi(TAUTOLOGY_ID, TAUTOLOGY_REPR, SUMTI_IS_A_THING_CHANGED_REFERENCES); - Bridi THING_IS_A_SUMTI = new Bridi(THING_IS_A_SUMTI_ID, TAUTOLOGY_REPR, THING_IS_A_SUMTI_REFERENCES); - - Bridi GOD = new Bridi(GOD_ID, GOD_REPR, null); - Bridi HUMAN = new Bridi(HUMAN_ID, HUMAN_REPR, null); - Bridi MY_MODEL = new Bridi(MY_MODEL_ID, MY_MODEL_REPR, null); - Set SIMPLE_QUERY_OUTPUT = - Set.of(TAUTOLOGY, SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING, SUMTI_IS_A_THING); -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/InezImplStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/InezImplStub.java index 03aeef2..317079c 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/InezImplStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/InezImplStub.java @@ -2,9 +2,7 @@ import static org.mockito.Mockito.mock; -import io.github.magwas.inez.element.BridiElementTestData; - -public class InezImplStub implements BridiElementTestData, BridiTestData { +public class InezImplStub { public static InezImpl stub() { return mock(InezImpl.class); } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/InezProblemTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/InezProblemTestData.java index d69900d..7c2643a 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/InezProblemTestData.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/InezProblemTestData.java @@ -7,6 +7,6 @@ public interface InezProblemTestData extends SumtiTestData { InezProblem PROBLEM = - new InezProblem("each element is within a containerID", "each element is within a container", GO1_SUMTI); + new InezProblem("each element is within a containerID", "each element is within a container", GO_SUMTI); List PROBLEMS = List.of(PROBLEM); } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java index 5f71187..abc24dd 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java @@ -26,7 +26,7 @@ @Tag("end-to-end") @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) -class BridiElementEndToEndTest implements BridiTestData { +class BridiElementEndToEndTest implements BridiTestData, BridiElementTestData { @Autowired SumtiRepository sumtiRepository; diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java index e296633..849a8a9 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.element; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class BridiElementSystemInitializationServiceStub { - static BridiElementSystemInitializationService stub() { - return mock(BridiElementSystemInitializationService.class); - } -} +@IndirectlyTested +public class BridiElementSystemInitializationServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementTestData.java index 2b97419..436308e 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementTestData.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementTestData.java @@ -1,29 +1,11 @@ package io.github.magwas.inez.element; -import java.util.List; import java.util.Set; -import io.github.magwas.inez.parse.BridiFieldTestData; -import io.github.magwas.inez.parse.IdUtil; +import io.github.magwas.inez.parse.IdTestData; + +public interface BridiElementTestData extends IdTestData { -public interface BridiElementTestData extends BridiFieldTestData { - String DOG_ID = "id:dog"; - String CONTAINS_ID = "CONTAINS"; - String ROOT_ID = "ROOT"; - String ELEMENT_MODEL_ID = "id:elementModel"; - String CONTAINER_ID = "CONTAINER"; - String CONTAINS_ELEMENT_REPR = "{my model} contains {alice}"; - String CONTAINS_ELEMENT_ID = IdUtil.createID(CONTAINS_ELEMENT_REPR); - String MY_MODEL_REPR = "my model"; - String MY_MODEL_ID = IdUtil.createID(MY_MODEL_REPR); - String FOLDER_ID = IdUtil.createID("folder"); - String ALICE_IS_A_HUMAN_ID = "id:{alice} is a {human}"; - String HUMAN_IS_A_ANIMAL_ID = "id:{human} is a {animal}"; - String DOG_IS_A_ANIMAL_ID = "id:{dog} is a {animal}"; - String MY_MODEL_IS_A_FOLDER_ID = "id:{my model} is a {folder}"; - List CONTAINS_ELEMENT_REFERENCES = List.of(CONTAINS_ID, MY_MODEL_ID, ALICE_ID); - String HUMAN_REPR = "human"; - String HUMAN_ID = IdUtil.createID(HUMAN_REPR); Set MY_FOLDER_CHILDREN = Set.of( ALICE_ID, HUMAN_ID, diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStub.java deleted file mode 100644 index f259d42..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStub.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.magwas.inez.element; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.stream.Stream; - -public class GetRelativeForBridiElementServiceStub implements BridiElementTestData { - public static GetRelativeForBridiElementService stub() { - GetRelativeForBridiElementService mock = mock(GetRelativeForBridiElementService.class); - when(mock.apply(HUMAN_ID, IS_A_ID, 1, 2)).thenReturn(Stream.of(THING_ID)); - when(mock.apply(ROOT_ID, IS_A_ID, 1, 2)).thenReturn(Stream.of(CONTAINER_ID)); - when(mock.apply(MY_MODEL_ID, IS_A_ID, 1, 2)).thenReturn(Stream.of(FOLDER_ID)); - when(mock.apply(FOLDER_ID, IS_A_ID, 1, 2)).thenReturn(Stream.of(CONTAINER_ID)); - return mock; - } -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromDefinitionServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromDefinitionServiceStub.java index c3e6d64..35d4341 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromDefinitionServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromDefinitionServiceStub.java @@ -1,10 +1,6 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class CreateBridisFromDefinitionServiceStub { - - static CreateBridisFromDefinitionService stub() { - return mock(CreateBridisFromDefinitionService.class); - } -} +@IndirectlyTested +public class CreateBridisFromDefinitionServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputServiceStub.java index cb912a1..0abca87 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class CreateBridisFromParserOutputServiceStub { - static CreateBridisFromParserOutputService stub() { - return mock(CreateBridisFromParserOutputService.class); - } -} +@IndirectlyTested +public class CreateBridisFromParserOutputServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputTest.java index 057d737..bf1cfd0 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputTest.java @@ -13,6 +13,7 @@ import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.parse.ParserOutputTestData; import io.github.magwas.testing.TestBase; +import io.github.magwas.testing.TestUtil; class CreateBridisFromParserOutputTest extends TestBase implements BridiTestData, ParserOutputTestData { @InjectMocks @@ -24,6 +25,7 @@ void test() { Set expected = Set.of(THING_GENERATED, IS_A_NONSAVED, SUMTI, SUMTI_IS_A_THING_GENERATED); Set actual = createBridisFromParserOutput.apply(OUTPUT_SUMTI_IS_A_THING).collect(Collectors.toSet()); + TestUtil.diffCollections(expected, actual); assertEquals(expected, actual); } } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromQueryServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromQueryServiceStub.java index 6e4331b..419d9f2 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromQueryServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/CreateBridisFromQueryServiceStub.java @@ -1,10 +1,6 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class CreateBridisFromQueryServiceStub { - - static CreateBridisFromQueryService stub() { - return mock(CreateBridisFromQueryService.class); - } -} +@IndirectlyTested +public class CreateBridisFromQueryServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java index 865ad68..16e8f7c 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java @@ -25,13 +25,14 @@ import io.github.magwas.inez.TestConfig; import io.github.magwas.inez.functions.Save; import io.github.magwas.inez.osgi.SpringBootBundleActivator; +import io.github.magwas.inez.parse.InputTestData; import io.github.magwas.runtime.LogUtil; import io.github.magwas.testing.TestUtil; @Tag("end-to-end") @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) -class QueryProcessorEndToEndTest implements BridiTestData { +class QueryProcessorEndToEndTest implements QueryProcessorTestData, InputTestData, BridiTestData { @Autowired InezImpl inez; @@ -40,8 +41,7 @@ class QueryProcessorEndToEndTest implements BridiTestData { void setUp() throws IOException { ServiceReference sr = mock(ServiceReference.class); BundleContext ctx = mock(BundleContext.class); - when((ServiceReference) ctx.getServiceReference("io.github.magwas.inez.functions.Save")) - .thenReturn(sr); + when((ServiceReference) ctx.getServiceReference(SAVE_CLASS_NAME)).thenReturn(sr); when(ctx.getService(sr)).thenReturn(new Save()); SpringBootBundleActivator.bundleContext = ctx; inez.initialize(); @@ -52,18 +52,17 @@ void test1() { inez.create(TEST_TEXT).peek(x -> LogUtil.debug("created:" + x)).toList(); assertEquals(List.of(ALICE), inez.findAllByRepresentation(ALICE_REPR).toList()); assertQuery(Set.of(ALICE_REPR), ALICE_REPR); - assertQuery(Set.of(ALICE_EATS_BANANA), ALICE_EATS_BANANA); - assertQuery(Set.of(ALICE_EATS_BANANA, BOB_EATS_BANANA, CECILE_EATS_BANANA), "{$?} {{eats} {banana}}"); - assertQuery(Set.of(CECILE_EATS_BANANA, CECILE_LOOKS_AT_BANANA), "{cecile} {{$?} {banana}}"); - assertQuery(Set.of(ALICE_EATS_BANANA, ALICE_EATS_CHIPS), "{alice} {{eats} {$?}}"); - assertQuery(Set.of("putty"), "doSave {" + "putty" + "}"); - assertEquals(1, inez.findAllByRepresentation("putty").count()); - List putty = inez.findAllByRepresentation("putty").toList(); + assertQuery(Set.of(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR); assertQuery( - Set.of("osgi", "bitch", "{0} is a {1}", "{osgi} is a {bitch}"), - "doSave {" + "{osgi} is a {bitch}" + "}"); - assertEquals(1, inez.findAllByRepresentation("osgi").count()); - assertEquals(1, inez.findAllByRepresentation("bitch").count()); + Set.of(ALICE_EATS_BANANA_REPR, BOB_EATS_BANANA_REPR, CECILE_EATS_BANANA_REPR), WHO_EATS_BANANA_INPUT); + assertQuery(Set.of(CECILE_EATS_BANANA_REPR, CECILE_LOOKS_AT_BANANA_REPR), CECILE_WHAT_BANANA_INPUT); + assertQuery(Set.of(ALICE_EATS_BANANA_REPR, ALICE_EATS_CHIPS_REPR), ALICE_EATS_WHAT_INPUT); + assertQuery(Set.of(PUTTY_REPR), DO_SAVE_PUTTY_INPUT); + assertEquals(1, inez.findAllByRepresentation(PUTTY_REPR).count()); + List putty = inez.findAllByRepresentation(PUTTY_REPR).toList(); + assertQuery(Set.of(OSGI_REPR, BITCH_REPR, IS_A_REPR, OSGI_IS_A_BITCH_REPR), DO_SAVE_OSGI_IS_A_BITCH_INPUT); + assertEquals(1, inez.findAllByRepresentation(OSGI_REPR).count()); + assertEquals(1, inez.findAllByRepresentation(BITCH_REPR).count()); assertEquals(1, putty.size()); } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorServiceStub.java index 36e7a30..040ca6d 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class QueryProcessorServiceStub { - static QueryProcessorService stub() { - return mock(QueryProcessorService.class); - } -} +@IndirectlyTested +public class QueryProcessorServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java index f6ae8d3..41fe95d 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java @@ -11,12 +11,12 @@ import org.mockito.InjectMocks; import io.github.magwas.inez.Bridi; -import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.parse.ParserConstants; +import io.github.magwas.runtime.LogUtil; import io.github.magwas.testing.TestBase; import io.github.magwas.testing.TestUtil; -class QueryProcessorTest extends TestBase implements BridiTestData { +class QueryProcessorTest extends TestBase implements QueryProcessorTestData { @InjectMocks QueryProcessorService queryProcessor; @@ -24,7 +24,7 @@ class QueryProcessorTest extends TestBase implements BridiTestData { @Test @DisplayName("for a nonexisting sumti returns the empty list") void test() { - Stream actual = queryProcessor.apply(QUERY_NONEXISTING); + Stream actual = queryProcessor.apply(NONEXISTING_INPUT); TestUtil.assertStreamEquals(Set.of(), actual); } @@ -37,13 +37,14 @@ void test_1() { @Test @DisplayName("if more sumtis exist with the representation, return them all") void test_2() { - TestUtil.assertStreamEquals(Set.of(GO1, GO2), queryProcessor.apply(GO_REPRESENTATION)); + TestUtil.assertStreamEquals(Set.of(GO, GO2), queryProcessor.apply(GO_REPR)); } @Test @DisplayName("for a reference, return the referenced bridi") void test_3() { - TestUtil.assertStreamEquals(Set.of(GO1), queryProcessor.apply(GO1_REFERENCE)); + LogUtil.addDebuggedClass(QueryProcessorService.class); + TestUtil.assertStreamEquals(Set.of(GO), queryProcessor.apply(GO1_REFERENCE)); } @Test @@ -73,7 +74,7 @@ void test_7() { @Test @DisplayName("for a bridi where one of the sumties is '$?', the matching bridies return") void test1() { - TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(QUERY_STRING_SIMPLE)); + TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(SIMPLE_INPUT)); } @Test @@ -81,19 +82,19 @@ void test1() { void test1_1() { assertThrows( ParseCancellationException.class, - () -> queryProcessor.apply(QUERY_STRING_ALL_ANY).toArray()); + () -> queryProcessor.apply(ALL_ANY_INPUT).toArray()); } @Test @DisplayName("if no stored bridi matches the query with '$?', and empty list is returned") void test2() { - TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(QUERY_STRING_NONMATCHING)); + TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(NONMATCHING_INPUT)); } @Test @DisplayName("query works with the '$?' being deep down in the query") void test3() { - Stream actual = queryProcessor.apply(RECURSIVE_QUERY); + Stream actual = queryProcessor.apply(RECURSIVE_INPUT); TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING), actual); } } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTestData.java new file mode 100644 index 0000000..75cc7cd --- /dev/null +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTestData.java @@ -0,0 +1,25 @@ +package io.github.magwas.inez.query; + +import java.util.Set; + +import io.github.magwas.inez.Bridi; +import io.github.magwas.inez.BridiTestData; +import io.github.magwas.inez.parse.RepresentationTestData; + +public interface QueryProcessorTestData + extends RepresentationTestData, BridiTestData { + String TEST_TEXT = """ + {{sumti} is a {THING}} is a {THING} + {{THING} is a {THING}} is a {THING} + {alice} {{eats} {banana}} + {alice} {{eats} {chips}} + {bob} {{eats} {banana}} + {bob} {{eats} {chips}} + {cecile} {{eats} {banana}} + {cecile} {{looks at} {banana}} + {sumti} is a {THING} + {THING} is a {THING}"""; + String SAVE_CLASS_NAME = "io.github.magwas.inez.functions.Save"; + Set SIMPLE_QUERY_OUTPUT = Set.of(TAUTOLOGY, + SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING, SUMTI_IS_A_THING); +} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceStub.java index ad51fd0..3f93ea5 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class AddReferencesServiceStub { - public static AddReferencesService stub() { - return mock(AddReferencesService.class); - } -} +@IndirectlyTested +public class AddReferencesServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceTest.java index 5198f80..e41f0c6 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesServiceTest.java @@ -12,11 +12,11 @@ import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; -import io.github.magwas.inez.parse.BridiFieldTestData; +import io.github.magwas.inez.parse.IdTestData; import io.github.magwas.inez.storage.model.BridiReference; import io.github.magwas.testing.TestBase; -class AddReferencesServiceTest extends TestBase implements BridiFieldTestData { +class AddReferencesServiceTest extends TestBase implements IdTestData { @InjectMocks AddReferencesService addReferences; diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesTest.java index 6a251a1..b3ea365 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/AddReferencesTest.java @@ -7,10 +7,11 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; +import io.github.magwas.inez.parse.ReferenceTestData; import io.github.magwas.inez.storage.model.BridiReferenceTestData; import io.github.magwas.testing.TestBase; -class AddReferencesTest extends TestBase implements BridiReferenceTestData { +class AddReferencesTest extends TestBase implements BridiReferenceTestData, ReferenceTestData { @InjectMocks AddReferencesService addReferences; diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreChangeListenersServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreChangeListenersServiceStub.java index 543d6fd..4a9aafe 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreChangeListenersServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreChangeListenersServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class BridiStoreChangeListenersServiceStub { - public static BridiStoreChangeListenersService stub() { - return mock(BridiStoreChangeListenersService.class); - } -} +@IndirectlyTested +public class BridiStoreChangeListenersServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java index f757b5b..985aa84 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java @@ -17,13 +17,14 @@ import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.InezImpl; import io.github.magwas.inez.TestConfig; +import io.github.magwas.inez.query.QueryProcessorTestData; import io.github.magwas.runtime.LogUtil; import io.github.magwas.testing.TestUtil; @Tag("end-to-end") @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) -class BridiStoreEndToEndTest implements BridiTestData { +class BridiStoreEndToEndTest implements QueryProcessorTestData, BridiTestData { @Autowired InezImpl inez; @@ -33,8 +34,8 @@ void test() { inez.create(TEST_TEXT).toArray(); assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); - inez.save(Set.of(GO1, GO2)); - inez.findAllByRepresentation(GO_REPRESENTATION).forEach(x -> LogUtil.debug("go", x)); + inez.save(Set.of(GO, GO2)); + inez.findAllByRepresentation(GO_REPR).forEach(x -> LogUtil.debug("go", x)); String CECILE_EATS_BANANA_REPR = "{cecile} {{eats} {banana}}"; String CECILE_LOOKS_AT_BANANA_REPR = "{cecile} {{looks at} {banana}}"; Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, inez.query(CECILE_EATS_BANANA_REPR)); diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateBridiFromSumtiServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateBridiFromSumtiServiceStub.java index 72fe32b..974b528 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateBridiFromSumtiServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateBridiFromSumtiServiceStub.java @@ -12,7 +12,7 @@ public static CreateBridiFromSumtiService stub() { when(mock.apply(THING_SUMTI)).thenReturn(THING); when(mock.apply(SUMTI_IS_A_THING_CHANGED_SUMTI)).thenReturn(SUMTI_IS_A_THING_CHANGED); when(mock.apply(SUMTI_IS_A_THING_SUMTI)).thenReturn(SUMTI_IS_A_THING); - when(mock.apply(GO1_SUMTI)).thenReturn(GO1); + when(mock.apply(GO_SUMTI)).thenReturn(GO); when(mock.apply(GO2_SUMTI)).thenReturn(GO2); when(mock.apply(null)).thenThrow(new NullPointerException()); return mock; diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateSumtiServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateSumtiServiceStub.java index 03b7037..02d6b9a 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateSumtiServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/CreateSumtiServiceStub.java @@ -1,10 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class CreateSumtiServiceStub { - - static CreateSumtiService stub() { - return mock(CreateSumtiService.class); - } -} +@IndirectlyTested +public class CreateSumtiServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/DeleteBridiServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/DeleteBridiServiceStub.java index c0a3e91..9610a94 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/DeleteBridiServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/DeleteBridiServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class DeleteBridiServiceStub { - public static DeleteBridiService stub() { - return mock(DeleteBridiService.class); - } -} +@IndirectlyTested +public class DeleteBridiServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java deleted file mode 100644 index f101736..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.magwas.inez.storage; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.stream.Stream; - -import io.github.magwas.inez.BridiTestData; -import io.github.magwas.inez.parse.ParserConstants; - -public class FindAllByRepresentationServiceStub implements BridiTestData { - public static FindAllByRepresentationService stub() { - FindAllByRepresentationService mock = mock(FindAllByRepresentationService.class); - when(mock.apply(THING_REPR)).thenAnswer((args) -> Stream.of(THING)); - when(mock.apply(GO_REPRESENTATION)).thenAnswer((args) -> Stream.of(GO1, GO2)); - when(mock.apply(SUMTI_IS_A_THING_REPR)).thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING)); - when(mock.apply(ParserConstants.QUERY_BRIDI_ID)).thenAnswer((args) -> Stream.of(ANY)); - return mock; - } -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationTest.java index 47ac049..989a247 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationTest.java @@ -20,8 +20,6 @@ class FindAllByRepresentationTest extends TestBase implements BridiTestData { @Test @DisplayName("finds all bridis based on a representation") void test() { - assertEquals( - Set.of(GO1, GO2), - findAllByRepresentation.apply(GO_REPRESENTATION).collect(Collectors.toSet())); + assertEquals(Set.of(GO, GO2), findAllByRepresentation.apply(GO_REPR).collect(Collectors.toSet())); } } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStub.java deleted file mode 100644 index e7f3b98..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStub.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.github.magwas.inez.storage; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.stream.Stream; - -import io.github.magwas.inez.BridiTestData; -import io.github.magwas.inez.parse.ParserConstants; - -public class FindAllIdByRepresentationServiceStub implements BridiTestData { - public static FindAllIdByRepresentationService stub() { - FindAllIdByRepresentationService mock = mock(FindAllIdByRepresentationService.class); - when(mock.apply(THING_REPR)).thenAnswer((args) -> Stream.of(THING_ID)); - when(mock.apply(GO_REPRESENTATION)).thenAnswer((args) -> Stream.of(GO1_ID, GO2_ID)); - when(mock.apply(SUMTI_IS_A_THING_REPR)).thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID)); - when(mock.apply(ParserConstants.QUERY_BRIDI_ID)) - .thenAnswer((args) -> Stream.of(ParserConstants.QUERY_BRIDI_ID)); - when(mock.apply(IS_A_REPR)).thenAnswer((args) -> Stream.of(IS_A_ID)); - - return mock; - } -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationTest.java index 8012677..516dec9 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationTest.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationTest.java @@ -9,10 +9,10 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; -import io.github.magwas.inez.parse.BridiFieldTestData; +import io.github.magwas.inez.parse.IdTestData; import io.github.magwas.testing.TestBase; -class FindAllIdByRepresentationTest extends TestBase implements BridiFieldTestData { +class FindAllIdByRepresentationTest extends TestBase implements IdTestData { @InjectMocks FindAllIdByRepresentationService findAllIdByRepresentation; @@ -20,7 +20,6 @@ class FindAllIdByRepresentationTest extends TestBase implements BridiFieldTestDa @DisplayName("returns the ids of all the sumties with the given representation") void test() { assertEquals( - Set.of(GO1_ID, GO2_ID), - findAllIdByRepresentation.apply(GO_REPRESENTATION).collect(Collectors.toSet())); + Set.of(GO_ID, GO2_ID), findAllIdByRepresentation.apply(GO_REPR).collect(Collectors.toSet())); } } diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java index 0a2ad40..fdbe7d2 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java @@ -11,7 +11,7 @@ public class FindBridiByIdServiceStub implements BridiTestData { public static FindBridiByIdService stub() { FindBridiByIdService mock = mock(FindBridiByIdService.class); - when(mock.apply(GO1_ID)).thenReturn(Optional.of(GO1)); + when(mock.apply(GO_ID)).thenReturn(Optional.of(GO)); when(mock.apply(GO2_ID)).thenReturn(Optional.of(GO2)); when(mock.apply(SUMTI_IS_A_THING_IS_A_THING_ID)).thenReturn(Optional.of(SUMTI_IS_A_THING_IS_A_THING)); when(mock.apply(TAUTOLOGY_IS_A_THING_ID)).thenReturn(Optional.of(TAUTOLOGY_IS_A_THING)); diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java index 2e8dc9f..1993573 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java @@ -5,9 +5,9 @@ import java.util.stream.Stream; -import io.github.magwas.inez.parse.BridiFieldTestData; +import io.github.magwas.inez.parse.IdTestData; -public class GetBridiIdBySelbriAndSumtiIdsServiceStub implements BridiFieldTestData { +public class GetBridiIdBySelbriAndSumtiIdsServiceStub implements IdTestData { public static GetBridiIdBySelbriAndSumtiIdsService stub() { GetBridiIdBySelbriAndSumtiIdsService mock = mock(GetBridiIdBySelbriAndSumtiIdsService.class); when(mock.apply(IS_A_ID, THING_ID, 1)).thenAnswer((args) -> Stream.of(TAUTOLOGY_ID, THING_IS_A_SUMTI_ID)); diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/NotifyStoreChangeServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/NotifyStoreChangeServiceStub.java index 18bdc2a..4218ea2 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/NotifyStoreChangeServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/NotifyStoreChangeServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class NotifyStoreChangeServiceStub { - public static NotifyStoreChangeService stub() { - return mock(NotifyStoreChangeService.class); - } -} +@IndirectlyTested +public class NotifyStoreChangeServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/RemoveReferencesServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/RemoveReferencesServiceStub.java index e1f8866..9df413f 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/RemoveReferencesServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/RemoveReferencesServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class RemoveReferencesServiceStub { - public static RemoveReferencesService stub() { - return mock(RemoveReferencesService.class); - } -} +@IndirectlyTested +public class RemoveReferencesServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/SaveBridiServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/SaveBridiServiceStub.java index acd8b3f..e018b3d 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/SaveBridiServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/SaveBridiServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class SaveBridiServiceStub { - static SaveBridiService stub() { - return mock(SaveBridiService.class); - } -} +@IndirectlyTested +public class SaveBridiServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/BridiReferenceTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/BridiReferenceTestData.java deleted file mode 100644 index 651e96a..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/BridiReferenceTestData.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.github.magwas.inez.storage.model; - -import java.util.List; - -import io.github.magwas.inez.parse.BridiFieldTestData; - -public interface BridiReferenceTestData extends BridiFieldTestData { - - String ID = "id:"; - BridiReference TAUTOLOGY_REFERENCE_0 = new BridiReference(TAUTOLOGY_ID + 0, TAUTOLOGY_ID, IS_A_ID, 0, IS_A_ID); - BridiReference TAUTOLOGY_REFERENCE_1 = new BridiReference(TAUTOLOGY_ID + 1, TAUTOLOGY_ID, IS_A_ID, 1, THING_ID); - BridiReference TAUTOLOGY_REFERENCE_2 = new BridiReference(TAUTOLOGY_ID + 2, TAUTOLOGY_ID, IS_A_ID, 2, THING_ID); - BridiReference SUMTI_IS_A_THING_REFERENCE_0 = - new BridiReference(ID + SUMTI_IS_A_THING_ID + 0, SUMTI_IS_A_THING_ID, IS_A_ID, 0, IS_A_ID); - BridiReference SUMTI_IS_A_THING_REFERENCE_1 = - new BridiReference(ID + SUMTI_IS_A_THING_ID + 1, SUMTI_IS_A_THING_ID, IS_A_ID, 1, SUMTI_ID); - BridiReference SUMTI_IS_A_THING_REFERENCE_2 = - new BridiReference(ID + SUMTI_IS_A_THING_ID + 2, SUMTI_IS_A_THING_ID, IS_A_ID, 2, THING_ID); - List SUMTI_IS_A_THING_REFERENCELIST = - List.of(SUMTI_IS_A_THING_REFERENCE_0, SUMTI_IS_A_THING_REFERENCE_1, SUMTI_IS_A_THING_REFERENCE_2); - BridiReference SUMTI_IS_A_THING_IS_A_THING_REFERENCE_0 = - new BridiReference(SUMTI_IS_A_THING_IS_A_THING_ID + 0, SUMTI_IS_A_THING_IS_A_THING_ID, IS_A_ID, 0, IS_A_ID); - BridiReference SUMTI_IS_A_THING_IS_A_THING_REFERENCE_1 = new BridiReference( - SUMTI_IS_A_THING_IS_A_THING_ID + 1, SUMTI_IS_A_THING_IS_A_THING_ID, IS_A_ID, 1, SUMTI_ID); - BridiReference SUMTI_IS_A_THING_IS_A_THING_REFERENCE_2 = new BridiReference( - SUMTI_IS_A_THING_IS_A_THING_ID + 2, SUMTI_IS_A_THING_IS_A_THING_ID, IS_A_ID, 2, THING_ID); - BridiReference TAUTOLOGY_IS_A_THING_REFERENCE_0 = - new BridiReference(TAUTOLOGY_IS_A_THING_ID + 1, TAUTOLOGY_IS_A_THING_ID, IS_A_ID, 1, IS_A_ID); - BridiReference TAUTOLOGY_IS_A_THING_REFERENCE_1 = - new BridiReference(TAUTOLOGY_IS_A_THING_ID + 1, TAUTOLOGY_IS_A_THING_ID, IS_A_ID, 1, THING_ID); - BridiReference TAUTOLOGY_IS_A_THING_REFERENCE_2 = - new BridiReference(TAUTOLOGY_IS_A_THING_ID + 2, TAUTOLOGY_IS_A_THING_ID, IS_A_ID, 2, THING_ID); - BridiReference THING_IS_A_SUMTI_REFERENCE_0 = - new BridiReference(THING_IS_A_SUMTI_ID + 0, THING_IS_A_SUMTI_ID, IS_A_ID, 0, IS_A_ID); - BridiReference THING_IS_A_SUMTI_REFERENCE_1 = - new BridiReference(THING_IS_A_SUMTI_ID + 1, THING_IS_A_SUMTI_ID, IS_A_ID, 1, THING_ID); - BridiReference THING_IS_A_SUMTI_REFERENCE_2 = - new BridiReference(THING_IS_A_SUMTI_ID + 2, THING_IS_A_SUMTI_ID, IS_A_ID, 2, SUMTI_ID); - - BridiReference STUFF_COULDBE_THING_REFERENCE_2 = - new BridiReference(STUFF_ID + 2, COULDBE_ID, COULDBE_ID, 2, THING_ID); -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/SumtiTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/SumtiTestData.java deleted file mode 100644 index 7ae7b0d..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/SumtiTestData.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.magwas.inez.storage.model; - -import io.github.magwas.inez.parse.BridiFieldTestData; - -public interface SumtiTestData extends BridiFieldTestData { - - Sumti THING_SUMTI = new Sumti(THING_ID, THING_REPR); - Sumti SUMTI_IS_A_THING_SUMTI = new Sumti(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_REPR); - Sumti SUMTI_IS_A_THING_CHANGED_SUMTI = new Sumti(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_CHANGED_REPR); - Sumti GO1_SUMTI = new Sumti(GO1_ID, GO_REPRESENTATION); - Sumti GO2_SUMTI = new Sumti(GO2_ID, GO_REPRESENTATION); -} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiReferenceRepositoryStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiReferenceRepositoryStub.java index 3df85c6..266b36d 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiReferenceRepositoryStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiReferenceRepositoryStub.java @@ -14,9 +14,7 @@ public static BridiReferenceRepository stub() { when(mock.findAllByBridiId(SUMTI_IS_A_THING_ID)) .thenAnswer(params -> Set.of( - SUMTI_IS_A_THING_IS_A_THING_REFERENCE_0, - SUMTI_IS_A_THING_IS_A_THING_REFERENCE_1, - SUMTI_IS_A_THING_IS_A_THING_REFERENCE_2)); + SUMTI_IS_A_THING_REFERENCE_0, SUMTI_IS_A_THING_REFERENCE_1, SUMTI_IS_A_THING_REFERENCE_2)); when(mock.findAllBySelbriIdAndSumtiIdAndPosition(IS_A_ID, THING_ID, 2)) .thenAnswer(params -> Set.of( TAUTOLOGY_REFERENCE_2, diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiStoreHistoryServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiStoreHistoryServiceStub.java index 0fc188e..1f84840 100644 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiStoreHistoryServiceStub.java +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/BridiStoreHistoryServiceStub.java @@ -1,9 +1,6 @@ package io.github.magwas.inez.storage.repository; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; -public class BridiStoreHistoryServiceStub { - public static BridiStoreHistoryRepository stub() { - return mock(BridiStoreHistoryRepository.class); - } -} +@IndirectlyTested +public class BridiStoreHistoryServiceStub {} diff --git a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/SumtiRepositoryStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/SumtiRepositoryStub.java deleted file mode 100644 index 45b5fa5..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/SumtiRepositoryStub.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.github.magwas.inez.storage.repository; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Optional; -import java.util.Set; - -import io.github.magwas.inez.storage.model.SumtiTestData; - -public class SumtiRepositoryStub implements SumtiTestData { - public static SumtiRepository stub() { - SumtiRepository mock = mock(SumtiRepository.class); - when(mock.findById(THING_ID)).thenReturn(Optional.of(THING_SUMTI)); - when(mock.findById(SUMTI_IS_A_THING_ID)).thenReturn(Optional.of(SUMTI_IS_A_THING_SUMTI)); - when(mock.findById(NOT_SAVED_ID)).thenReturn(Optional.empty()); - - when(mock.findAllByRepresentation(GO_REPRESENTATION)).thenReturn(Set.of(GO1_SUMTI, GO2_SUMTI)); - return mock; - } -} diff --git a/inez.model.tests/src/main/resources/bridies b/inez.model.tests/src/main/resources/bridies new file mode 100644 index 0000000..380949a --- /dev/null +++ b/inez.model.tests/src/main/resources/bridies @@ -0,0 +1,22 @@ +ALICE,IdUtil.createID(ALICE_REPR),ALICE_REPR,List.of() +GO,GO_ID,GO_REPR,List.of() +GO2,GO2_ID,GO_REPR,List.of() +SUMTI_IS_A_THING_IS_A_THING,SUMTI_IS_A_THING_IS_A_THING_ID,SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR,SUMTI_IS_A_THING_IS_A_THING_REFERENCES +TAUTOLOGY_IS_A_THING,TAUTOLOGY_IS_A_THING_ID,TAUTOLOGY_IS_A_THING_REPR,SUMTI_IS_A_THING_IS_A_THING_REFERENCES +THING,THING_ID,THING_REPR,List.of() +THING_CHANGED,THING_ID,"thung",List.of() +THING_GENERATED,IdUtil.createID(THING_REPR),THING_REPR,List.of() +SUMTI,SUMTI_ID,SUMTI_REPR,List.of() +NONEXISTENT,NONEXISTENT_ID,NONEXISTENT_REPR,List.of() +BRIDI,BRIDI_ID,BRIDI_REPR,List.of() +IS_A,IS_A_ID,IS_A_REPR,List.of() +IS_A_NONSAVED,IdUtil.createID(IS_A_REPR),IS_A_REPR,List.of() +ANY,ParserConstants.QUERY_BRIDI_ID,ParserConstants.QUERY_BRIDI_ID,List.of() +SUMTI_IS_A_THING,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_REPR,SUMTI_IS_A_THING_REFERENCES +SUMTI_IS_A_THING_GENERATED,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_REPR,SUMTI_IS_A_THING_GENERATED_REFERENCES +SUMTI_IS_A_THING_CHANGED,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_CHANGED_REPR,SUMTI_IS_A_THING_CHANGED_REFERENCES +TAUTOLOGY,TAUTOLOGY_ID,TAUTOLOGY_REPR,SUMTI_IS_A_THING_CHANGED_REFERENCES +THING_IS_A_SUMTI,THING_IS_A_SUMTI_ID,TAUTOLOGY_REPR,THING_IS_A_SUMTI_REFERENCES +GOD,GOD_ID,GOD_REPR,List.of() +HUMAN,HUMAN_ID,HUMAN_REPR,List.of() +MY_MODEL,MY_MODEL_ID,MY_MODEL_REPR,List.of() diff --git a/inez.model.tests/src/main/resources/bridireferences b/inez.model.tests/src/main/resources/bridireferences new file mode 100644 index 0000000..797aad5 --- /dev/null +++ b/inez.model.tests/src/main/resources/bridireferences @@ -0,0 +1,6 @@ +TAUTOLOGY,IS_A,THING,THING +SUMTI_IS_A_THING,IS_A,SUMTI,THING +SUMTI_IS_A_THING_IS_A_THING,IS_A,SUMTI_IS_A_THING,THING +TAUTOLOGY_IS_A_THING,IS_A,TAUTOLOGY,THING +THING_IS_A_SUMTI,IS_A,THING,SUMTI +STUFF_COULDBE_THING,COULDBE,STUFF,THING diff --git a/inez.model.tests/src/main/resources/byrepresentation b/inez.model.tests/src/main/resources/byrepresentation new file mode 100644 index 0000000..acc71fe --- /dev/null +++ b/inez.model.tests/src/main/resources/byrepresentation @@ -0,0 +1,5 @@ +THING_REPR,THING +GO_REPR,GO, GO2 +SUMTI_IS_A_THING_REPR,SUMTI_IS_A_THING +ParserConstants.QUERY_BRIDI_ID,ANY +IS_A_REPR,IS_A diff --git a/inez.model.tests/src/main/resources/relatives b/inez.model.tests/src/main/resources/relatives new file mode 100644 index 0000000..293d94e --- /dev/null +++ b/inez.model.tests/src/main/resources/relatives @@ -0,0 +1,4 @@ +HUMAN,IS_A,1,2,THING +ROOT,IS_A,1,2,CONTAINER +MY_MODEL,IS_A,1,2,FOLDER +FOLDER,IS_A,1,2,CONTAINER diff --git a/inez.model.tests/src/main/resources/sumties b/inez.model.tests/src/main/resources/sumties new file mode 100644 index 0000000..a7513b5 --- /dev/null +++ b/inez.model.tests/src/main/resources/sumties @@ -0,0 +1,5 @@ +THING,THING_ID,THING_REPR +SUMTI_IS_A_THING,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_REPR +SUMTI_IS_A_THING_CHANGED,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_CHANGED_REPR +GO,GO_ID,GO_REPR +GO2,GO2_ID,GO_REPR diff --git a/inez.model/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputService.java b/inez.model/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputService.java index 2289aa9..aafecfd 100644 --- a/inez.model/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputService.java +++ b/inez.model/src/main/java/io/github/magwas/inez/query/CreateBridisFromParserOutputService.java @@ -33,7 +33,7 @@ public Stream apply(final ParserOutput parserOutput) { private Stream apply(final String top, final Map> refMap) { debug("apply(", top, refMap); if (!refMap.containsKey(top)) { - Bridi bridi = new Bridi(getIdOrRepr(top), top, null); + Bridi bridi = new Bridi(getIdOrRepr(top), top, List.of()); debug("bridi->", bridi); return Stream.of(bridi); } diff --git a/inez.parser.tests/.classpath b/inez.parser.tests/.classpath index 030981d..b0fcce7 100644 --- a/inez.parser.tests/.classpath +++ b/inez.parser.tests/.classpath @@ -3,6 +3,7 @@ + diff --git a/inez.parser.tests/META-INF/MANIFEST.MF b/inez.parser.tests/META-INF/MANIFEST.MF index 56df782..e7b48f8 100644 --- a/inez.parser.tests/META-INF/MANIFEST.MF +++ b/inez.parser.tests/META-INF/MANIFEST.MF @@ -18,6 +18,11 @@ Require-Bundle: wrapped.io.github.magwas.konveyor-base-testing;bundle-version="0 junit-jupiter-api;bundle-version="5.11.4", junit-platform-commons;bundle-version="1.11.4", wrapped.org.springframework.spring-aop;bundle-version="6.2.8", - wrapped.org.springframework.spring-expression;bundle-version="6.2.8" + wrapped.org.springframework.spring-expression;bundle-version="6.2.8", + wrapped.org.springframework.spring-context;bundle-version="6.2.8", + wrapped.org.springframework.boot.spring-boot-autoconfigure;bundle-version="3.5.3", + wrapped.org.springframework.spring-beans;bundle-version="6.2.8", + wrapped.org.springframework.spring-core;bundle-version="6.2.8", + wrapped.org.springframework.data.spring-data-keyvalue;bundle-version="3.5.1" Automatic-Module-Name: io.github.magwas.inez.parser.tests Bundle-RequiredExecutionEnvironment: JavaSE-21 diff --git a/inez.parser.tests/pom.xml b/inez.parser.tests/pom.xml index bfc1985..1fc1e1f 100644 --- a/inez.parser.tests/pom.xml +++ b/inez.parser.tests/pom.xml @@ -46,6 +46,7 @@ org.eclipse.tycho tycho-surefire-plugin + ${version.tycho} true diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java new file mode 100644 index 0000000..08aa0c1 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java @@ -0,0 +1,30 @@ +package io.github.magwas.inez.parse; + +import java.text.MessageFormat; +import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Stream; + +import io.github.magwas.runtime.GeneratorUtil; + +public class IdTestDataGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + List definedIdlist = GeneratorUtil.linesOf(IDS) + .map(s -> s.split(",")[0]).toList(); + Stream generatedIds = GeneratorUtil.linesOf(REPRESENTATIONS) + .map(s -> s.split(",")[0]).filter(x -> !definedIdlist.contains(x)); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate("", + "RepresentationTestData"); + GeneratorUtil.mapToCode(generatedIds, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + String {0}_ID = IdUtil.createID({0}_REPR); + """, parts[0].trim()); + }, builder); + GeneratorUtil.mapToCode(IDS, GeneratorUtil.stringConstant("ID"), builder); + return GeneratorUtil.testDataTail(builder); + } +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/InputTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/InputTestDataGenerator.java new file mode 100644 index 0000000..ef89190 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/InputTestDataGenerator.java @@ -0,0 +1,17 @@ +package io.github.magwas.inez.parse; + +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; + +public class InputTestDataGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); + GeneratorUtil.mapToCode(INPUTS, GeneratorUtil.stringConstant("INPUT"), + builder); + return GeneratorUtil.testDataTail(builder); + } +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParseTextServiceStubGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParseTextServiceStubGenerator.java new file mode 100644 index 0000000..762049f --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParseTextServiceStubGenerator.java @@ -0,0 +1,25 @@ +package io.github.magwas.inez.parse; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; + +public class ParseTextServiceStubGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.stubBoilerPlate(""" + import java.util.stream.Stream; + """, "ParserOutputTestData"); + GeneratorUtil.linesOf(PARSE_TEXT_STUB_DATA).map(line -> { + String[] splat = line.split(","); + return MessageFormat.format(""" + when(mock.apply({0})).thenReturn(Stream.of({1})); + """, splat[0], splat[1]); + }).forEach(builder::append); + return GeneratorUtil.stubTail(builder); + } + +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParserOutputTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParserOutputTestDataGenerator.java new file mode 100644 index 0000000..47c443f --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParserOutputTestDataGenerator.java @@ -0,0 +1,31 @@ +package io.github.magwas.inez.parse; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; + +public class ParserOutputTestDataGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" + import java.util.Map; + """, "InputTestData", "ReferenceTestData"); + GeneratorUtil.linesOf(OUTPUTS).map(line -> { + String[] parts = line.split(",", 3); + String name = parts[0]; + String top = parts[1]; + String map = ""; + if (parts.length == 3) + map = parts[1] + "," + parts[2]; + + return MessageFormat.format( + "\tParserOutput OUTPUT_{0} = new ParserOutput({1},Map.of({2}));\n", + name, top, map); + }).forEach(builder::append); + return GeneratorUtil.testDataTail(builder); + } + +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java new file mode 100644 index 0000000..97f9060 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java @@ -0,0 +1,24 @@ +package io.github.magwas.inez.parse; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; + +public class ReferenceTestDataGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" + import java.util.List; + """, "IdTestData", "InputTestData"); + GeneratorUtil.mapToCode(REFERENCES, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + List {0}_REFERENCES = List.of({1}); + """, parts[0].trim(), parts[1]); + }, builder); + return GeneratorUtil.testDataTail(builder); + } +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/RepresentationTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/RepresentationTestDataGenerator.java new file mode 100644 index 0000000..656cd2c --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/RepresentationTestDataGenerator.java @@ -0,0 +1,25 @@ +package io.github.magwas.inez.parse; + +import java.text.MessageFormat; +import java.util.function.Supplier; + +import io.github.magwas.runtime.GeneratorUtil; + +public class RepresentationTestDataGenerator + implements Supplier, TestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); + GeneratorUtil.mapToCode(REPRESENTATIONS, + GeneratorUtil.stringConstant("REPR"), builder); + GeneratorUtil.mapToCode(IDREFERENCES, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + String {0}_REFERENCE = "@{0}"; + """, parts[0].trim()); + }, builder); + return GeneratorUtil.testDataTail(builder); + } + +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java new file mode 100644 index 0000000..d4194e6 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java @@ -0,0 +1,15 @@ +package io.github.magwas.inez.parse; + +import io.github.magwas.testing.TestUtil; + +public interface TestDataGeneratorConstants { + String REPRESENTATIONS = TestUtil.loadResourceAsString("representations"); + String IDS = TestUtil.loadResourceAsString("ids"); + String IDREFERENCES = TestUtil.loadResourceAsString("idreferences"); + String INPUTS = TestUtil.loadResourceAsString("inputs"); + String REFERENCES = TestUtil.loadResourceAsString("references"); + String OUTPUTS = TestUtil.loadResourceAsString("outputs"); + String PARSE_TEXT_STUB_DATA = TestUtil + .loadResourceAsString("parse_text_stubdata"); + +} diff --git a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/BridiFieldTestData.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/BridiFieldTestData.java deleted file mode 100644 index 7383de8..0000000 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/BridiFieldTestData.java +++ /dev/null @@ -1,77 +0,0 @@ -package io.github.magwas.inez.parse; - -import java.util.List; - -public interface BridiFieldTestData { - String ALICE_REPR = "alice"; - String ALICE_ID = IdUtil.createID(ALICE_REPR); - String THING_REPR = "THING"; - String THING_ID = "THING"; - String THING_REFERENCE = "@" + THING_ID; - String SUMTI_REPR = "sumti"; - String BRIDI_REPR = "bridi"; - String IS_A_REPR = "{0} is a {1}"; - String SUMTI_IS_A_THING_REPR = "{sumti} is a {THING}"; - String SUMTI_IS_A_THING_CHANGED_REPR = SUMTI_IS_A_THING_REPR + " changed"; - String THING_IS_A_SUMTI_REPR = "{THING} is a {sumti}"; - String TAUTOLOGY_REPR = "the most basic tautology"; - String TAUTOLOGY_GENERATED_REPR = "{THING} is a {THING}"; - String SUMTI_IS_A_THING_IS_A_THING_REPR = "{{sumti} is a {THING}} is a {@THING}"; - String SUMTI_IS_A_THING_IS_A_THING_REPR_NOREFERENCE = "{{sumti} is a {THING}} is a {THING}"; - String TAUTOLOGY_IS_A_THING_REPR = "{{THING} is a {THING}} is a {THING}"; - String STUFF_ID = "stuff"; - String COULDBE_ID = "ID:could be"; - - String GO_REPRESENTATION = "go"; - String GO1_ID = "go1"; - String GO2_ID = "go2"; - String GO1_REFERENCE = "@go1"; - String NONEXISTENT_REFERENCE = "@nonexistent"; - String NONEXISTENT_REPR = "nonexistent"; - String INPUT_BAD = "{bridi is a {THING}"; - String INPUT_FROM_UNKNOWN_PARSER = "INPUT_FROM_UNKNOWN_PARSER"; - String QUERY_NONEXISTING = "nonexisting"; - String QUERY_STRING_SIMPLE = "{$?} is a {THING}"; - String QUERY_STRING_ALL_ANY = "{$?} is a {$?}"; - String QUERY_STRING_NONMATCHING = "{$?} is a {god}"; - String RECURSIVE_QUERY = "{{$?} is a {THING}} is a {THING}"; - - String DESCRIPTION_SUMTI_IS_A_THING_STRING = "sumti is a THING"; - String GOD_REPR = "god"; - String TWO_SUMTI_BRIDI_REPR = "{0} {1}"; - String CECILE_LOOKS_AT_BANANA = "{cecile} {{looks at} {banana}}"; - String CECILE_EATS_BANANA = "{cecile} {{eats} {banana}}"; - String BOB_EATS_CHIPS = "{bob} {{eats} {chips}}"; - String BOB_EATS_BANANA = "{bob} {{eats} {banana}}"; - String ALICE_EATS_CHIPS = "{alice} {{eats} {chips}}"; - String ALICE_EATS_BANANA = "{alice} {{eats} {banana}}"; - - String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_REPR_NOREFERENCE + "\n" - + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA + "\n" - + ALICE_EATS_CHIPS + "\n" + BOB_EATS_BANANA + "\n" + BOB_EATS_CHIPS + "\n" - + CECILE_EATS_BANANA + "\n" + CECILE_LOOKS_AT_BANANA + "\n" - + SUMTI_IS_A_THING_REPR + "\n" + TAUTOLOGY_GENERATED_REPR; - - String SUMTI_ID = IdUtil.createID("sumti"); - String BRIDI_ID = IdUtil.createID("bridi"); - String IS_A_ID = "IS_A"; - String SUMTI_IS_A_THING_ID = IdUtil.createID("{sumti} is a {THING}"); - String SUMTI_IS_A_THING_IS_A_THING_ID = IdUtil.createID("{{sumti} is a {THING}} is a {THING}"); - String TAUTOLOGY_IS_A_THING_ID = IdUtil.createID("{{THING} is a {THING}} is a {THING}"); - String THING_IS_A_SUMTI_ID = "not tautology"; - String TAUTOLOGY_ID = "tautology"; - - String GOD_ID = IdUtil.createID("god"); - String NOT_SAVED_ID = IdUtil.createID(SUMTI_REPR); - String NONEXISTENT_ID = IdUtil.createID(NONEXISTENT_REPR); - List SUMTI_IS_A_THING_IS_A_THING_REFERENCES = List.of(IS_A_ID, SUMTI_IS_A_THING_ID, THING_ID); - List TAUTOLOGY_IS_A_THING_REFERENCES = List.of(IS_A_ID, TAUTOLOGY_ID, THING_REPR); - List BAD_BRIDI_REFERENCES = List.of(IS_A_REPR, SUMTI_IS_A_THING_ID, NONEXISTENT_REPR); - List SUMTI_IS_A_THING_CHANGED_REFERENCES = List.of(IS_A_ID, THING_ID, THING_ID); - List SUMTI_IS_A_THING_REFERENCES = List.of(IS_A_ID, SUMTI_ID, THING_ID); - List SUMTI_IS_A_THING_GENERATED_REFERENCES = - List.of(IdUtil.createID(IS_A_REPR), SUMTI_ID, IdUtil.createID(THING_REPR)); - List THING_IS_A_SUMTI_REFERENCES = List.of(IS_A_ID, THING_ID, SUMTI_ID); - String INPUT_WITH_LITERAL = "{My folder} contains {[{0} is a {1}]}"; - List INPUT_WITH_LITERAL_REFS = List.of("{0} contains {1}", "My folder", "{0} is a {1}"); -} diff --git a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/CreateParserFromTokensServiceStub.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/CreateParserFromTokensServiceStub.java index e2eeea7..d9da6a6 100644 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/CreateParserFromTokensServiceStub.java +++ b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/CreateParserFromTokensServiceStub.java @@ -24,7 +24,7 @@ public static CreateParserFromTokensService stub() { para.children = List.of(bridiContext); when(bridiParsermock.paragraph()).thenReturn(para); when(mock.apply(any())).thenCallRealMethod(); - when(mock.apply(INPUT_FROM_UNKNOWN_PARSER)).thenReturn(bridiParsermock); + when(mock.apply(FROM_UNKNOWN_PARSER_INPUT)).thenReturn(bridiParsermock); return mock; } } diff --git a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextServiceStub.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextServiceStub.java deleted file mode 100644 index 6951ac4..0000000 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextServiceStub.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.magwas.inez.parse; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.stream.Stream; - -class ParseTextServiceStub implements ParserOutputTestData { - public static ParseTextService stub() { - ParseTextService mock = mock(ParseTextService.class); - when(mock.apply(QUERY_NONEXISTING)).thenReturn(Stream.of(OUTPUT_NONEXISTING)); - when(mock.apply(THING_REPR)).thenReturn(Stream.of(OUTPUT_THING)); - when(mock.apply(GO_REPRESENTATION)).thenReturn(Stream.of(OUTPUT_GO)); - when(mock.apply(SUMTI_IS_A_THING_REPR)).thenReturn(Stream.of(OUTPUT_SUMTI_IS_A_THING)); - when(mock.apply(GO1_REFERENCE)).thenReturn(Stream.of(OUTPUT_GO1)); - when(mock.apply(NONEXISTENT_REFERENCE)).thenReturn(Stream.of(OUTPUT_NONEXISTENT_REFERENCE)); - when(mock.apply(TAUTOLOGY_GENERATED_REPR)).thenReturn(Stream.of(OUTPUT_TAUTOLOGY)); - when(mock.apply(ParserConstants.QUERY_BRIDI_ID)).thenReturn(Stream.of(OUTPUT_ANY)); - - when(mock.apply(QUERY_STRING_SIMPLE)).thenReturn(Stream.of(OUTPUT_SIMPLE)); - when(mock.apply(QUERY_STRING_ALL_ANY)).thenReturn(Stream.of(OUTPUT_ALL_ANY)); - when(mock.apply(QUERY_STRING_NONMATCHING)).thenReturn(Stream.of(OUTPUT_NONMATCHING)); - when(mock.apply(RECURSIVE_QUERY)).thenReturn(Stream.of(OUTPUT_RECURSIVE)); - return mock; - } -} diff --git a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextTest.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextTest.java index 09fa5e8..2562595 100644 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextTest.java +++ b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextTest.java @@ -8,11 +8,13 @@ import org.antlr.v4.runtime.misc.ParseCancellationException; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import io.github.magwas.testing.TestBase; +@Tag("unit") class ParseTextTest extends TestBase implements ParserOutputTestData { @InjectMocks @@ -54,30 +56,30 @@ void test4() { void test5() { assertThrows( InternalError.class, - () -> parseText.apply(INPUT_FROM_UNKNOWN_PARSER).toList()); + () -> parseText.apply(FROM_UNKNOWN_PARSER_INPUT).toList()); } @Test @DisplayName("if the text cannot be unambigously parsed, a ParseCancellationException is thrown") void test1() { - assertThrows(ParseCancellationException.class, () -> parseText.apply(INPUT_BAD)); + assertThrows(ParseCancellationException.class, () -> parseText.apply(BAD_INPUT)); } @Test @DisplayName("literal is parsed correctly") void test6() { assertEquals( - OUTPOUT_WITH_LITERAL, - parseText.apply(INPUT_WITH_LITERAL).toList().get(0)); + OUTPUT_WITH_LITERAL, + parseText.apply(WITH_LITERAL_INPUT).toList().get(0)); } @Test @DisplayName("multiline is working") void test7() { assertEquals( - List.of(OUTPOUT_WITH_LITERAL, OUTPUT_TAUTOLOGY), + List.of(OUTPUT_WITH_LITERAL, OUTPUT_TAUTOLOGY), parseText - .apply(INPUT_WITH_LITERAL + "\n" + TAUTOLOGY_GENERATED_REPR) + .apply(WITH_LITERAL_INPUT + "\n" + TAUTOLOGY_GENERATED_REPR) .toList()); } } diff --git a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParserOutputTestData.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParserOutputTestData.java deleted file mode 100644 index c39d4da..0000000 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParserOutputTestData.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.github.magwas.inez.parse; - -import java.util.List; -import java.util.Map; - -public interface ParserOutputTestData extends BridiFieldTestData { - - ParserOutput OUTPOUT_WITH_LITERAL = - new ParserOutput(INPUT_WITH_LITERAL, Map.of(INPUT_WITH_LITERAL, INPUT_WITH_LITERAL_REFS)); - - ParserOutput OUTPUT_NONEXISTING = new ParserOutput(QUERY_NONEXISTING, Map.of()); - ParserOutput OUTPUT_THING = new ParserOutput(THING_REPR, Map.of()); - ParserOutput OUTPUT_GO = new ParserOutput(GO_REPRESENTATION, Map.of()); - ParserOutput OUTPUT_GO1 = new ParserOutput(GO1_REFERENCE, Map.of()); - ParserOutput OUTPUT_NONEXISTENT_REFERENCE = new ParserOutput(NONEXISTENT_REFERENCE, Map.of()); - ParserOutput OUTPUT_ANY = new ParserOutput(ParserConstants.QUERY_BRIDI_ID, Map.of()); - - ParserOutput OUTPUT_SUMTI_IS_A_THING = new ParserOutput( - SUMTI_IS_A_THING_REPR, Map.of(SUMTI_IS_A_THING_REPR, List.of(IS_A_REPR, SUMTI_REPR, THING_REPR))); - ParserOutput OUTPUT_TAUTOLOGY = new ParserOutput( - TAUTOLOGY_GENERATED_REPR, Map.of(TAUTOLOGY_GENERATED_REPR, List.of(IS_A_REPR, THING_REPR, THING_REPR))); - ParserOutput OUTPUT_SIMPLE = new ParserOutput( - QUERY_STRING_SIMPLE, - Map.of(QUERY_STRING_SIMPLE, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR))); - ParserOutput OUTPUT_ALL_ANY = new ParserOutput( - QUERY_STRING_ALL_ANY, - Map.of( - QUERY_STRING_ALL_ANY, - List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, ParserConstants.QUERY_BRIDI_ID))); - ParserOutput OUTPUT_NONMATCHING = new ParserOutput( - QUERY_STRING_NONMATCHING, - Map.of(QUERY_STRING_NONMATCHING, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, GOD_REPR))); - ParserOutput OUTPUT_RECURSIVE = new ParserOutput( - RECURSIVE_QUERY, - Map.of( - RECURSIVE_QUERY, - List.of(IS_A_REPR, QUERY_STRING_SIMPLE, THING_REPR), - TAUTOLOGY_GENERATED_REPR, - List.of(IS_A_REPR, THING_REPR, THING_REPR), - QUERY_STRING_SIMPLE, - List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR))); -} diff --git a/inez.parser.tests/src/main/resources/idreferences b/inez.parser.tests/src/main/resources/idreferences new file mode 100644 index 0000000..70c0167 --- /dev/null +++ b/inez.parser.tests/src/main/resources/idreferences @@ -0,0 +1,3 @@ +NONEXISTENT +GO1 +THING diff --git a/inez.parser.tests/src/main/resources/ids b/inez.parser.tests/src/main/resources/ids new file mode 100644 index 0000000..6da9c53 --- /dev/null +++ b/inez.parser.tests/src/main/resources/ids @@ -0,0 +1,12 @@ +THING,THING +IS_A,IS_A +STUFF,stuff +GO,GO1 +GO2,go2 +THING_IS_A_SUMTI,not tautology +TAUTOLOGY,tautology +CONTAINS,CONTAINS +ROOT,ROOT +CONTAINER,CONTAINER +STUFF_COULDBE_THING,STUFF_COULDBE_THING +ANY,? diff --git a/inez.parser.tests/src/main/resources/inputs b/inez.parser.tests/src/main/resources/inputs new file mode 100644 index 0000000..b655fcc --- /dev/null +++ b/inez.parser.tests/src/main/resources/inputs @@ -0,0 +1,14 @@ +BAD,{bridi is a {THING} +NONEXISTING,nonexisting +SIMPLE,{$?} is a {THING} +ALL_ANY,{$?} is a {$?} +NONMATCHING,{$?} is a {god} +QUERY,{{$?} is a {THING}} is a {THING} +FROM_UNKNOWN_PARSER,INPUT_FROM_UNKNOWN_PARSER +WITH_LITERAL,{My folder} contains {[{0} is a {1}]} +RECURSIVE,{{$?} is a {THING}} is a {THING} +DO_SAVE_OSGI_IS_A_BITCH,doSave {{osgi} is a {bitch}} +ALICE_EATS_WHAT,{alice} {{eats} {$?}} +CECILE_WHAT_BANANA,{cecile} {{$?} {banana}} +WHO_EATS_BANANA,{$?} {{eats} {banana}} +DO_SAVE_PUTTY,doSave {putty} \ No newline at end of file diff --git a/inez.parser.tests/src/main/resources/outputs b/inez.parser.tests/src/main/resources/outputs new file mode 100644 index 0000000..773cb20 --- /dev/null +++ b/inez.parser.tests/src/main/resources/outputs @@ -0,0 +1,13 @@ +WITH_LITERAL,WITH_LITERAL_INPUT,INPUT_WITH_LITERAL_REFERENCES +NONEXISTING,NONEXISTENT_REFERENCE +THING,THING_REPR +GO,GO_REPR +GO1,GO1_REFERENCE +NONEXISTENT_REFERENCE,NONEXISTENT_REFERENCE +ANY,ParserConstants.QUERY_BRIDI_ID +SUMTI_IS_A_THING,SUMTI_IS_A_THING_REPR,SUMTI_IS_A_THING_REPR_REFERENCES +TAUTOLOGY,TAUTOLOGY_GENERATED_REPR,TAUTOLOGY_REPR_REFERENCES +SIMPLE,SIMPLE_INPUT,SIMPLE_INPUT_REPR_REFERENCES +ALL_ANY,ALL_ANY_INPUT,ALL_ANY_INPUT_REPR_REFERENCES +NONMATCHING,NONMATCHING_INPUT,NONMATCHING_INPUT_REFERENCES +RECURSIVE,RECURSIVE_INPUT,RECURSIVE_INPUT_REFERENCES,TAUTOLOGY_GENERATED_REPR,TAUTOLOGY_REPR_REFERENCES,SIMPLE_INPUT,SIMPLE_INPUT_REPR_REFERENCES diff --git a/inez.parser.tests/src/main/resources/parse_text_stubdata b/inez.parser.tests/src/main/resources/parse_text_stubdata new file mode 100644 index 0000000..56aaaa9 --- /dev/null +++ b/inez.parser.tests/src/main/resources/parse_text_stubdata @@ -0,0 +1,12 @@ +NONEXISTENT_REPR,OUTPUT_NONEXISTING +THING_REPR,OUTPUT_THING +GO_REPR,OUTPUT_GO +SUMTI_IS_A_THING_REPR,OUTPUT_SUMTI_IS_A_THING +GO1_REFERENCE,OUTPUT_GO1 +NONEXISTENT_REFERENCE,OUTPUT_NONEXISTENT_REFERENCE +TAUTOLOGY_GENERATED_REPR,OUTPUT_TAUTOLOGY +ParserConstants.QUERY_BRIDI_ID,OUTPUT_ANY +SIMPLE_INPUT,OUTPUT_SIMPLE +ALL_ANY_INPUT,OUTPUT_ALL_ANY +NONMATCHING_INPUT,OUTPUT_NONMATCHING +RECURSIVE_INPUT,OUTPUT_RECURSIVE diff --git a/inez.parser.tests/src/main/resources/references b/inez.parser.tests/src/main/resources/references new file mode 100644 index 0000000..dd05ab4 --- /dev/null +++ b/inez.parser.tests/src/main/resources/references @@ -0,0 +1,15 @@ +SUMTI_IS_A_THING_IS_A_THING,IS_A_ID, SUMTI_IS_A_THING_ID, THING_ID +SUMTI_IS_A_THING_GENERATED,IdUtil.createID(IS_A_REPR), SUMTI_ID, IdUtil.createID(THING_REPR) +TAUTOLOGY_IS_A_THING,IS_A_ID, TAUTOLOGY_ID, THING_REPR +TAUTOLOGY_REPR,IS_A_REPR, THING_REPR, THING_REPR +BAD_BRIDI,IS_A_REPR, SUMTI_IS_A_THING_ID, NONEXISTENT_REPR +SUMTI_IS_A_THING_CHANGED,IS_A_ID, THING_ID, THING_ID +SUMTI_IS_A_THING,IS_A_ID, SUMTI_ID, THING_ID +SUMTI_IS_A_THING_REPR,IS_A_REPR,SUMTI_REPR,THING_REPR +THING_IS_A_SUMTI,IS_A_ID, THING_ID, SUMTI_ID +INPUT_WITH_LITERAL,"{0} contains {1}", "My folder", "{0} is a {1}" +CONTAINS_ELEMENT,CONTAINS_ID, MY_MODEL_ID,ALICE_ID +SIMPLE_INPUT_REPR,IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR +ALL_ANY_INPUT_REPR,IS_A_REPR, ParserConstants.QUERY_BRIDI_ID,ParserConstants.QUERY_BRIDI_ID +NONMATCHING_INPUT,IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, GOD_REPR +RECURSIVE_INPUT,IS_A_REPR, SIMPLE_INPUT, THING_REPR diff --git a/inez.parser.tests/src/main/resources/representations b/inez.parser.tests/src/main/resources/representations new file mode 100644 index 0000000..4e7cfcc --- /dev/null +++ b/inez.parser.tests/src/main/resources/representations @@ -0,0 +1,39 @@ +THING,THING +IS_A,{0} is a {1} +ALICE,alice +SUMTI,sumti +BRIDI,bridi +SUMTI_IS_A_THING,{sumti} is a {THING} +THING_IS_A_SUMTI,{THING} is a {sumti} +TAUTOLOGY,the most basic tautology +TAUTOLOGY_GENERATED,{THING} is a {THING} +SUMTI_IS_A_THING_IS_A_THING,{{sumti} is a {THING}} is a {@THING} +SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE,{{sumti} is a {THING}} is a {THING} +TAUTOLOGY_IS_A_THING,{{THING} is a {THING}} is a {THING} +GOD,god +TWO_SUMTI_BRIDI,{0} {1} +GO,go +NONEXISTENT,nonexistent +DESCRIPTION_SUMTI_IS_A_THING,sumti is a THING +CECILE_LOOKS_AT_BANANA,{cecile} {{looks at} {banana}} +CECILE_EATS_BANANA,{cecile} {{eats} {banana}} +BOB_EATS_CHIPS,{bob} {{eats} {chips}} +BOB_EATS_BANANA,{bob} {{eats} {banana}} +ALICE_EATS_CHIPS,{alice} {{eats} {chips}} +ALICE_EATS_BANANA,{alice} {{eats} {banana}} +SUMTI_IS_A_THING_CHANGED,{sumti} is a {THING} changed +COULDBE,could be +PUTTY,putty +OSGI,osgi +BITCH,bitch +OSGI_IS_A_BITCH,{osgi} is a {bitch} +DOG,dog +ELEMENT_MODEL,elementModel +CONTAINS_ELEMENT,{my model} contains {alice} +MY_MODEL,my model +FOLDER,folder +HUMAN,human +ALICE_IS_A_HUMAN,{alice} is a {human} +HUMAN_IS_A_ANIMAL,{human} is a {animal} +DOG_IS_A_ANIMAL,{dog} is a {animal} +MY_MODEL_IS_A_FOLDER,{my model} is a {folder} diff --git a/inez.target/inez.target b/inez.target/inez.target index 982a8a2..3b4d34e 100644 --- a/inez.target/inez.target +++ b/inez.target/inez.target @@ -23,13 +23,13 @@ io.github.magwas konveyor-base-testing - 0.4.32 + 0.4.38 jar io.github.magwas konveyor-base - 0.4.32 + 0.4.38 jar diff --git a/inez.target/pom.xml b/inez.target/pom.xml index aa8e3a7..e1873ee 100644 --- a/inez.target/pom.xml +++ b/inez.target/pom.xml @@ -58,6 +58,11 @@ javafx-controls 21.0.8 + + io.github.magwas + konveyor-base-testing + ${version.konveyor} + diff --git a/pom.xml b/pom.xml index d440ba3..a8451d7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.magwas konveyor-parent - 0.4.32 + 0.4.38 inez 0.0.1 @@ -55,7 +55,7 @@ true - 0.4.32 + 0.4.38