From a8d795821fa3e67a37f7a6196c4ec4422bfd2d7a Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sat, 27 Sep 2025 10:33:55 +0200 Subject: [PATCH 01/10] BridiFieldTestData is generated --- .../model/SumtiTestData2Generator.java | 20 +++++ .../io/github/magwas/inez/BridiTestData.java | 6 +- .../CreateBridisFromParserOutputTest.java | 2 + .../query/QueryProcessorEndToEndTest.java | 10 ++- .../magwas/inez/query/QueryProcessorTest.java | 14 ++-- .../inez/storage/BridiStoreEndToEndTest.java | 2 +- .../FindAllByRepresentationServiceStub.java | 2 +- .../storage/FindAllByRepresentationTest.java | 4 +- .../FindAllIdByRepresentationServiceStub.java | 2 +- .../FindAllIdByRepresentationTest.java | 3 +- .../storage/FindBridiByIdServiceStub.java | 2 +- .../inez/storage/model/SumtiTestData.java | 4 +- .../repository/SumtiRepositoryStub.java | 4 +- inez.parser.tests/.classpath | 1 + .../parse/BridiFieldTestDataGenerator.java | 56 ++++++++++++++ .../BridiFieldTestDataGeneratorConstants.java | 13 ++++ .../magwas/inez/parse/BridiFieldTestData.java | 77 ------------------- .../CreateParserFromTokensServiceStub.java | 2 +- .../inez/parse/ParseTextServiceStub.java | 12 +-- .../magwas/inez/parse/ParseTextTest.java | 8 +- .../inez/parse/ParserOutputTestData.java | 26 +++---- inez.parser.tests/src/main/resources/extra | 7 ++ .../src/main/resources/idreferences | 3 + inez.parser.tests/src/main/resources/ids | 7 ++ inez.parser.tests/src/main/resources/inputs | 9 +++ .../src/main/resources/references | 8 ++ .../src/main/resources/representations | 25 ++++++ inez.target/inez.target | 4 +- inez.target/pom.xml | 5 ++ pom.xml | 4 +- 30 files changed, 209 insertions(+), 133 deletions(-) create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java delete mode 100644 inez.parser.tests/src/main/java/io/github/magwas/inez/parse/BridiFieldTestData.java create mode 100644 inez.parser.tests/src/main/resources/extra create mode 100644 inez.parser.tests/src/main/resources/idreferences create mode 100644 inez.parser.tests/src/main/resources/ids create mode 100644 inez.parser.tests/src/main/resources/inputs create mode 100644 inez.parser.tests/src/main/resources/references create mode 100644 inez.parser.tests/src/main/resources/representations diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java new file mode 100644 index 0000000..6471e49 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java @@ -0,0 +1,20 @@ +package io.github.magwas.inez.storage.model; + +import java.util.function.Supplier; + +import io.github.magwas.inez.parse.BridiFieldTestDataGeneratorConstants; +import io.github.magwas.runtime.GeneratorUtil; + +public class SumtiTestData2Generator + implements Supplier, BridiFieldTestDataGeneratorConstants { + + @Override + public StringBuilder get() { + StringBuilder builder = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, ""); + GeneratorUtil.mapToCode(REPRESENTATIONS, + GeneratorUtil.stringConstant("REPR"), builder); + builder.append("}\n"); + return 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 index 59bfab2..e80dcbe 100644 --- 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 @@ -11,11 +11,11 @@ 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 GO1 = new Bridi(GO_ID, GO_REPR, null); + Bridi GO2 = new Bridi(GO2_ID, GO_REPR, 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_NOREFERENCE_REPR, 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); 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/QueryProcessorEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java index 865ad68..17005c8 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 @@ -52,10 +52,12 @@ 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(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR); + assertQuery( + Set.of(ALICE_EATS_BANANA_REPR, BOB_EATS_BANANA_REPR, CECILE_EATS_BANANA_REPR), + "{$?} {{eats} {banana}}"); + assertQuery(Set.of(CECILE_EATS_BANANA_REPR, CECILE_LOOKS_AT_BANANA_REPR), "{cecile} {{$?} {banana}}"); + assertQuery(Set.of(ALICE_EATS_BANANA_REPR, ALICE_EATS_CHIPS_REPR), "{alice} {{eats} {$?}}"); assertQuery(Set.of("putty"), "doSave {" + "putty" + "}"); assertEquals(1, inez.findAllByRepresentation("putty").count()); List putty = inez.findAllByRepresentation("putty").toList(); 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..74de1ba 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 @@ -13,6 +13,7 @@ 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; @@ -24,7 +25,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,12 +38,13 @@ 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(GO1, GO2), queryProcessor.apply(GO_REPR)); } @Test @DisplayName("for a reference, return the referenced bridi") void test_3() { + LogUtil.addDebuggedClass(QueryProcessorService.class); TestUtil.assertStreamEquals(Set.of(GO1), queryProcessor.apply(GO1_REFERENCE)); } @@ -73,7 +75,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 +83,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/storage/BridiStoreEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java index f757b5b..800bafa 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 @@ -34,7 +34,7 @@ void test() { 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.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/FindAllByRepresentationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java index f101736..fb15832 100644 --- 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 @@ -12,7 +12,7 @@ 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(GO_REPR)).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..fe7de14 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(GO1, 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 index e7f3b98..cbefecf 100644 --- 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 @@ -12,7 +12,7 @@ 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(GO_REPR)).thenAnswer((args) -> Stream.of(GO_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)); 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..250d5a9 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 @@ -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..93516e2 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(GO1)); 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/model/SumtiTestData.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/SumtiTestData.java index 7ae7b0d..f9dd904 100644 --- 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 @@ -7,6 +7,6 @@ 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); + Sumti GO1_SUMTI = new Sumti(GO_ID, GO_REPR); + Sumti GO2_SUMTI = new Sumti(GO2_ID, GO_REPR); } 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 index 45b5fa5..f1bc513 100644 --- 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 @@ -13,9 +13,9 @@ 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.findById(SUMTI_ID)).thenReturn(Optional.empty()); - when(mock.findAllByRepresentation(GO_REPRESENTATION)).thenReturn(Set.of(GO1_SUMTI, GO2_SUMTI)); + when(mock.findAllByRepresentation(GO_REPR)).thenReturn(Set.of(GO1_SUMTI, GO2_SUMTI)); return mock; } } 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/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java new file mode 100644 index 0000000..b47206c --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java @@ -0,0 +1,56 @@ +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 BridiFieldTestDataGenerator + implements Supplier, BridiFieldTestDataGeneratorConstants { + + @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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, """ + import java.util.List; + """); + GeneratorUtil.mapToCode(REPRESENTATIONS, + GeneratorUtil.stringConstant("REPR"), builder); + builder.append("\n"); + 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); + builder.append("\n"); + GeneratorUtil.mapToCode(INPUTS, GeneratorUtil.stringConstant("INPUT"), + builder); + builder.append("\n"); + GeneratorUtil.mapToCode(IDREFERENCES, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + String {0}_REFERENCE = "@{0}"; + """, parts[0].trim()); + }, builder); + builder.append("\n"); + GeneratorUtil.mapToCode(REFERENCES, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + List {0}_REFERENCES = List.of({1}); + """, parts[0].trim(), parts[1]); + }, builder); + builder.append("\n"); + builder.append(EXTRA); + builder.append("}\n"); + + return builder; + } +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java new file mode 100644 index 0000000..8092f54 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java @@ -0,0 +1,13 @@ +package io.github.magwas.inez.parse; + +import io.github.magwas.testing.TestUtil; + +public interface BridiFieldTestDataGeneratorConstants { + String REPRESENTATIONS = TestUtil.loadResourceAsString("representations"); + String IDS = TestUtil.loadResourceAsString("ids"); + String EXTRA = TestUtil.loadResourceAsString("extra"); + String IDREFERENCES = TestUtil.loadResourceAsString("idreferences"); + String INPUTS = TestUtil.loadResourceAsString("inputs"); + String REFERENCES = TestUtil.loadResourceAsString("references"); + +} 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 index 6951ac4..f5b0d2e 100644 --- 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 @@ -8,19 +8,19 @@ 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(NONEXISTENT_REPR)).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(GO_REPR)).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)); + when(mock.apply(SIMPLE_INPUT)).thenReturn(Stream.of(OUTPUT_SIMPLE)); + when(mock.apply(ALL_ANY_INPUT)).thenReturn(Stream.of(OUTPUT_ALL_ANY)); + when(mock.apply(NONMATCHING_INPUT)).thenReturn(Stream.of(OUTPUT_NONMATCHING)); + when(mock.apply(RECURSIVE_INPUT)).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..82e2975 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 @@ -54,13 +54,13 @@ 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 @@ -68,7 +68,7 @@ void test1() { void test6() { assertEquals( OUTPOUT_WITH_LITERAL, - parseText.apply(INPUT_WITH_LITERAL).toList().get(0)); + parseText.apply(WITH_LITERAL_INPUT).toList().get(0)); } @Test @@ -77,7 +77,7 @@ void test7() { assertEquals( List.of(OUTPOUT_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 index c39d4da..99441dc 100644 --- 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 @@ -6,11 +6,11 @@ public interface ParserOutputTestData extends BridiFieldTestData { ParserOutput OUTPOUT_WITH_LITERAL = - new ParserOutput(INPUT_WITH_LITERAL, Map.of(INPUT_WITH_LITERAL, INPUT_WITH_LITERAL_REFS)); + new ParserOutput(WITH_LITERAL_INPUT, Map.of(WITH_LITERAL_INPUT, INPUT_WITH_LITERAL_REFS_REFERENCES)); - ParserOutput OUTPUT_NONEXISTING = new ParserOutput(QUERY_NONEXISTING, Map.of()); + ParserOutput OUTPUT_NONEXISTING = new ParserOutput(NONEXISTENT_REFERENCE, Map.of()); ParserOutput OUTPUT_THING = new ParserOutput(THING_REPR, Map.of()); - ParserOutput OUTPUT_GO = new ParserOutput(GO_REPRESENTATION, Map.of()); + ParserOutput OUTPUT_GO = new ParserOutput(GO_REPR, 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()); @@ -20,23 +20,19 @@ public interface ParserOutputTestData extends BridiFieldTestData { 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))); + SIMPLE_INPUT, Map.of(SIMPLE_INPUT, 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))); + ALL_ANY_INPUT, + Map.of(ALL_ANY_INPUT, 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))); + NONMATCHING_INPUT, Map.of(NONMATCHING_INPUT, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, GOD_REPR))); ParserOutput OUTPUT_RECURSIVE = new ParserOutput( - RECURSIVE_QUERY, + RECURSIVE_INPUT, Map.of( - RECURSIVE_QUERY, - List.of(IS_A_REPR, QUERY_STRING_SIMPLE, THING_REPR), + RECURSIVE_INPUT, + List.of(IS_A_REPR, SIMPLE_INPUT, THING_REPR), TAUTOLOGY_GENERATED_REPR, List.of(IS_A_REPR, THING_REPR, THING_REPR), - QUERY_STRING_SIMPLE, + SIMPLE_INPUT, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR))); } diff --git a/inez.parser.tests/src/main/resources/extra b/inez.parser.tests/src/main/resources/extra new file mode 100644 index 0000000..1eb153c --- /dev/null +++ b/inez.parser.tests/src/main/resources/extra @@ -0,0 +1,7 @@ + + String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR + "\n" + + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" + + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" + BOB_EATS_CHIPS_REPR + "\n" + + CECILE_EATS_BANANA_REPR + "\n" + CECILE_LOOKS_AT_BANANA_REPR + "\n" + + SUMTI_IS_A_THING_REPR + "\n" + TAUTOLOGY_GENERATED_REPR; + \ No newline at end of file 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..e3488c6 --- /dev/null +++ b/inez.parser.tests/src/main/resources/ids @@ -0,0 +1,7 @@ +THING,THING +IS_A,IS_A +STUFF,stuff +GO,GO1 +GO2,go2 +THING_IS_A_SUMTI,not tautology +TAUTOLOGY,tautology \ No newline at end of file diff --git a/inez.parser.tests/src/main/resources/inputs b/inez.parser.tests/src/main/resources/inputs new file mode 100644 index 0000000..be2ca06 --- /dev/null +++ b/inez.parser.tests/src/main/resources/inputs @@ -0,0 +1,9 @@ +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} \ No newline at end of file diff --git a/inez.parser.tests/src/main/resources/references b/inez.parser.tests/src/main/resources/references new file mode 100644 index 0000000..a52c3f9 --- /dev/null +++ b/inez.parser.tests/src/main/resources/references @@ -0,0 +1,8 @@ +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 +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 +THING_IS_A_SUMTI,IS_A_ID, THING_ID, SUMTI_ID +INPUT_WITH_LITERAL_REFS,"{0} contains {1}", "My folder", "{0} is a {1}" \ No newline at end of file diff --git a/inez.parser.tests/src/main/resources/representations b/inez.parser.tests/src/main/resources/representations new file mode 100644 index 0000000..9c4752a --- /dev/null +++ b/inez.parser.tests/src/main/resources/representations @@ -0,0 +1,25 @@ +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 diff --git a/inez.target/inez.target b/inez.target/inez.target index 982a8a2..b9dbd88 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.33 jar io.github.magwas konveyor-base - 0.4.32 + 0.4.33 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..7695f4a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.magwas konveyor-parent - 0.4.32 + 0.4.33 inez 0.0.1 @@ -55,7 +55,7 @@ true - 0.4.32 + 0.4.33 From b164efcab61d442d69f893fd4cde659de5ac028e Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 28 Sep 2025 19:34:24 +0200 Subject: [PATCH 02/10] TestData units of parser are separated --- inez.model.tests/.classpath | 1 + .../model/SumtiTestData2Generator.java | 4 +- .../io/github/magwas/inez/BridiTestData.java | 41 ++++++----- .../element/BridiElementEndToEndTest.java | 24 ++++--- .../inez/element/BridiElementTestData.java | 33 ++------- .../CreateBridisFromParserOutputTest.java | 13 ++-- .../query/QueryProcessorEndToEndTest.java | 42 ++++++----- .../inez/query/QueryProcessorTestData.java | 14 ++++ .../storage/AddReferencesServiceTest.java | 10 +-- .../inez/storage/AddReferencesTest.java | 8 ++- .../inez/storage/BridiStoreEndToEndTest.java | 23 +++--- .../FindAllIdByRepresentationTest.java | 8 +-- ...BridiIdBySelbriAndSumtiIdsServiceStub.java | 23 +++--- .../storage/model/BridiReferenceTestData.java | 72 +++++++++++-------- .../inez/storage/model/SumtiTestData.java | 10 +-- .../parse/BridiFieldTestDataGenerator.java | 56 --------------- .../inez/parse/IdTestDataGenerator.java | 32 +++++++++ .../inez/parse/InputTestDataGenerator.java | 20 ++++++ .../parse/ParserOutputTestDataGenerator.java | 33 +++++++++ .../parse/ReferenceTestDataGenerator.java | 28 ++++++++ .../RepresentationTestDataGenerator.java | 26 +++++++ ...s.java => TestDataGeneratorConstants.java} | 3 +- .../magwas/inez/parse/ParseTextTest.java | 4 +- .../inez/parse/ParserOutputTestData.java | 38 ---------- inez.parser.tests/src/main/resources/extra | 7 -- inez.parser.tests/src/main/resources/ids | 5 +- inez.parser.tests/src/main/resources/inputs | 7 +- inez.parser.tests/src/main/resources/outputs | 13 ++++ .../src/main/resources/references | 9 ++- .../src/main/resources/representations | 14 ++++ 30 files changed, 367 insertions(+), 254 deletions(-) create mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTestData.java delete mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/InputTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParserOutputTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/RepresentationTestDataGenerator.java rename inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/{BridiFieldTestDataGeneratorConstants.java => TestDataGeneratorConstants.java} (81%) delete mode 100644 inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParserOutputTestData.java delete mode 100644 inez.parser.tests/src/main/resources/extra create mode 100644 inez.parser.tests/src/main/resources/outputs 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/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java index 6471e49..499a251 100644 --- a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java @@ -2,11 +2,11 @@ import java.util.function.Supplier; -import io.github.magwas.inez.parse.BridiFieldTestDataGeneratorConstants; +import io.github.magwas.inez.parse.TestDataGeneratorConstants; import io.github.magwas.runtime.GeneratorUtil; public class SumtiTestData2Generator - implements Supplier, BridiFieldTestDataGeneratorConstants { + implements Supplier, TestDataGeneratorConstants { @Override public StringBuilder get() { 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 index e80dcbe..e2e052d 100644 --- 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 @@ -3,43 +3,50 @@ import java.util.List; import java.util.Set; -import io.github.magwas.inez.element.BridiElementTestData; +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; +import io.github.magwas.inez.parse.RepresentationTestData; -public interface BridiTestData extends BridiElementTestData { +public interface BridiTestData + extends RepresentationTestData, IdTestData, ReferenceTestData { Bridi ALICE = new Bridi(IdUtil.createID(ALICE_REPR), ALICE_REPR, List.of()); Bridi GO1 = new Bridi(GO_ID, GO_REPR, null); Bridi GO2 = new Bridi(GO2_ID, GO_REPR, null); - Bridi SUMTI_IS_A_THING_IS_A_THING = new Bridi( - SUMTI_IS_A_THING_IS_A_THING_ID, + 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_NOREFERENCE_REPR, 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 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 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 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 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); + 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/element/BridiElementEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java index 5f71187..87e752b 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; @@ -46,7 +46,8 @@ class BridiElementEndToEndTest implements BridiTestData { @BeforeEach void setUp() { sumtiRepository.findAll().forEach(x -> sumtiRepository.delete(x)); - bridiReferenceRepository.findAll().forEach(x -> bridiReferenceRepository.delete(x)); + bridiReferenceRepository.findAll() + .forEach(x -> bridiReferenceRepository.delete(x)); } @Test @@ -55,10 +56,9 @@ void test() throws IOException { assertSame(bridiElementSystemInitialization.inez, inez); bridiElementSystemInitialization.apply(); BridiElement elementModel = bridiElementFactory.apply(ELEMENT_MODEL_ID); - assertTrue(elementModel - .getChildren() - .anyMatch( - x -> x.getReferences().map(y -> y.id).toList().contains(ElementConstants.IS_FUNCTION_FOR_ID))); + assertTrue(elementModel.getChildren() + .anyMatch(x -> x.getReferences().map(y -> y.id).toList() + .contains(ElementConstants.IS_FUNCTION_FOR_ID))); BridiElement root = bridiElementFactory.apply(ROOT_ID); String rootXml = loadResourceAsString("root.xml"); String theXml = root.toXml(); @@ -71,8 +71,7 @@ void test() throws IOException { assertEquals(CONTAINS_ELEMENT_REPR, element.getRepresentation()); assertEquals(THING_ID, element.getType().id); - assertEquals( - CONTAINS_ELEMENT_REFERENCES, + assertEquals(CONTAINS_ELEMENT_REFERENCES, element.getReferences().map(x -> x.id).toList()); assertEquals(List.of(), element.getChildren().toList()); assertEquals(MY_MODEL_ID, element.getParent().id); @@ -83,7 +82,8 @@ void test() throws IOException { assertEquals(MY_MODEL_REPR, element.getRepresentation()); assertEquals(FOLDER_ID, element.getType().id); assertEquals(List.of(), element.getReferences().toList()); - assertEquals(MY_FOLDER_CHILDREN, element.getChildren().map(x -> x.id).collect(Collectors.toSet())); + assertEquals(MY_FOLDER_CHILDREN, + element.getChildren().map(x -> x.id).collect(Collectors.toSet())); assertEquals(ROOT_ID, element.getParent().id); String xml = loadResourceAsString("mymodel.xml"); assertEquals(xml, element.toXml()); @@ -92,9 +92,11 @@ void test() throws IOException { assertTrue(element.isInstance(THING_ID)); } - private String loadResourceAsString(final String definitionName) throws IOException { + private String loadResourceAsString(final String definitionName) + throws IOException { ClassLoader classloader = Thread.currentThread().getContextClassLoader(); - try (InputStream inputStream = classloader.getResourceAsStream(definitionName)) { + try (InputStream inputStream = classloader + .getResourceAsStream(definitionName)) { return new String(inputStream.readAllBytes()); } } 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..5001990 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,35 +1,12 @@ 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 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, - DOG_ID, - MY_MODEL_IS_A_FOLDER_ID, - DOG_IS_A_ANIMAL_ID, - HUMAN_IS_A_ANIMAL_ID, +public interface BridiElementTestData extends IdTestData { + + Set MY_FOLDER_CHILDREN = Set.of(ALICE_ID, HUMAN_ID, DOG_ID, + MY_MODEL_IS_A_FOLDER_ID, DOG_IS_A_ANIMAL_ID, HUMAN_IS_A_ANIMAL_ID, ALICE_IS_A_HUMAN_ID); } 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 bf1cfd0..c245fec 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 @@ -15,16 +15,19 @@ import io.github.magwas.testing.TestBase; import io.github.magwas.testing.TestUtil; -class CreateBridisFromParserOutputTest extends TestBase implements BridiTestData, ParserOutputTestData { +class CreateBridisFromParserOutputTest extends TestBase + implements BridiTestData, ParserOutputTestData { @InjectMocks CreateBridisFromParserOutputService createBridisFromParserOutput; @Test - @DisplayName("creates a list of bridis from the output of the parser\n" + " - does not save them") + @DisplayName("creates a list of bridis from the output of the parser\n" + + " - does not save them") 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()); + 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/QueryProcessorEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java index 17005c8..b4e5df3 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,15 @@ 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,7 +42,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")) + when((ServiceReference) ctx.getServiceReference(SAVE_CLASS_NAME)) .thenReturn(sr); when(ctx.getService(sr)).thenReturn(new Save()); SpringBootBundleActivator.bundleContext = ctx; @@ -50,29 +52,31 @@ void setUp() throws IOException { @Test void test1() { inez.create(TEST_TEXT).peek(x -> LogUtil.debug("created:" + x)).toList(); - assertEquals(List.of(ALICE), inez.findAllByRepresentation(ALICE_REPR).toList()); + assertEquals(List.of(ALICE), + inez.findAllByRepresentation(ALICE_REPR).toList()); assertQuery(Set.of(ALICE_REPR), ALICE_REPR); assertQuery(Set.of(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR); - assertQuery( - Set.of(ALICE_EATS_BANANA_REPR, BOB_EATS_BANANA_REPR, CECILE_EATS_BANANA_REPR), - "{$?} {{eats} {banana}}"); - assertQuery(Set.of(CECILE_EATS_BANANA_REPR, CECILE_LOOKS_AT_BANANA_REPR), "{cecile} {{$?} {banana}}"); - assertQuery(Set.of(ALICE_EATS_BANANA_REPR, ALICE_EATS_CHIPS_REPR), "{alice} {{eats} {$?}}"); - assertQuery(Set.of("putty"), "doSave {" + "putty" + "}"); - assertEquals(1, inez.findAllByRepresentation("putty").count()); - List putty = inez.findAllByRepresentation("putty").toList(); - 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()); + assertQuery(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()); } - private Set assertQuery(final Set expected, final String query) { + private Set assertQuery(final Set expected, + final String query) { Set result = inez.query(query).collect(Collectors.toSet()); - Set actual = - result.stream().map(bridi -> bridi.representation()).collect(Collectors.toSet()); + Set actual = result.stream().map(bridi -> bridi.representation()) + .collect(Collectors.toSet()); if (!expected.equals(actual)) { System.out.println("actual:"); actual.forEach(System.out::println); 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..c9793f6 --- /dev/null +++ b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTestData.java @@ -0,0 +1,14 @@ +package io.github.magwas.inez.query; + +import io.github.magwas.inez.parse.RepresentationTestData; + +public interface QueryProcessorTestData extends RepresentationTestData { + String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR + "\n" + + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" + + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" + + BOB_EATS_CHIPS_REPR + "\n" + CECILE_EATS_BANANA_REPR + "\n" + + CECILE_LOOKS_AT_BANANA_REPR + "\n" + SUMTI_IS_A_THING_REPR + "\n" + + TAUTOLOGY_GENERATED_REPR; + + String SAVE_CLASS_NAME = "io.github.magwas.inez.functions.Save"; +} 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..5a3c197 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; @@ -39,8 +39,10 @@ void test1() { @DisplayName("for each reference adds an entry to the bridireferencerepository") void test2() { addReferences.apply(ALICE_ID, List.of(IS_A_ID, SUMTI_ID)); - ArgumentCaptor argument = ArgumentCaptor.forClass(BridiReference.class); - verify(addReferences.bridiReferenceRepository, times(2)).save(argument.capture()); + ArgumentCaptor argument = ArgumentCaptor + .forClass(BridiReference.class); + verify(addReferences.bridiReferenceRepository, times(2)) + .save(argument.capture()); List values = argument.getAllValues(); assertEquals(ALICE_ID, values.get(0).bridiId()); assertEquals(ALICE_ID, values.get(1).bridiId()); 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..62c82c8 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,12 @@ 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; @@ -18,8 +20,8 @@ class AddReferencesTest extends TestBase implements BridiReferenceTestData { @DisplayName("adds all the references of the bridi to the repository") void test() { addReferences.apply(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_REFERENCES); - SUMTI_IS_A_THING_REFERENCELIST.forEach( - x -> verify(addReferences.bridiReferenceRepository).save(x)); + SUMTI_IS_A_THING_REFERENCELIST + .forEach(x -> verify(addReferences.bridiReferenceRepository).save(x)); } @Test 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 800bafa..b570d4c 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; @@ -31,25 +32,29 @@ class BridiStoreEndToEndTest implements BridiTestData { @Test void test() { inez.create(TEST_TEXT).toArray(); - assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); + assertEquals(List.of(ALICE), + inez.findAllByRepresentation("alice").toList()); inez.save(Set.of(GO1, 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)); - Bridi ceclie_looks_at_banana = - assertGotTheBridi(CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); + Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, + inez.query(CECILE_EATS_BANANA_REPR)); + Bridi ceclie_looks_at_banana = assertGotTheBridi( + CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); TestUtil.assertStreamEquals( - Set.of(cecile_eats_banana, ceclie_looks_at_banana), inez.query("{cecile} {{$?} {banana}}")); + Set.of(cecile_eats_banana, ceclie_looks_at_banana), + inez.query("{cecile} {{$?} {banana}}")); - Bridi looks_at_banana = - inez.findById(ceclie_looks_at_banana.references().get(2)).get(); + Bridi looks_at_banana = inez + .findById(ceclie_looks_at_banana.references().get(2)).get(); Bridi looks_at = inez.findById(looks_at_banana.references().get(1)).get(); assertEquals("looks at", looks_at.representation()); } - private Bridi assertGotTheBridi(final String expected, final Stream actual) { + private Bridi assertGotTheBridi(final String expected, + final Stream actual) { List actualList = actual.toList(); assertEquals(1, actualList.size()); Bridi bridi = actualList.get(0); 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 250d5a9..3357ff9 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,17 +9,17 @@ 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; @Test @DisplayName("returns the ids of all the sumties with the given representation") void test() { - assertEquals( - Set.of(GO_ID, GO2_ID), findAllIdByRepresentation.apply(GO_REPR).collect(Collectors.toSet())); + assertEquals(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/GetBridiIdBySelbriAndSumtiIdsServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java index 2e8dc9f..6acf88c 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,20 +5,23 @@ 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)); - when(mock.apply(IS_A_ID, THING_ID, 2)) - .thenAnswer((args) -> Stream.of( - TAUTOLOGY_ID, SUMTI_IS_A_THING_IS_A_THING_ID, SUMTI_IS_A_THING_ID, TAUTOLOGY_IS_A_THING_ID)); - when(mock.apply(IS_A_ID, IS_A_ID, 0)) - .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_IS_A_THING_ID)); + 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)); + when(mock.apply(IS_A_ID, THING_ID, 2)).thenAnswer( + (args) -> Stream.of(TAUTOLOGY_ID, SUMTI_IS_A_THING_IS_A_THING_ID, + SUMTI_IS_A_THING_ID, TAUTOLOGY_IS_A_THING_ID)); + when(mock.apply(IS_A_ID, IS_A_ID, 0)).thenAnswer((args) -> Stream + .of(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_IS_A_THING_ID)); when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_IS_A_THING_ID, 1)) .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_IS_A_THING_ID)); - when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_ID, 1)).thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID)); + when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_ID, 1)) + .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID)); when(mock.apply(IS_A_ID, GOD_ID, 2)).thenAnswer((args) -> Stream.of()); return mock; 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 index 651e96a..76b1263 100644 --- 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 @@ -2,41 +2,51 @@ import java.util.List; -import io.github.magwas.inez.parse.BridiFieldTestData; +import io.github.magwas.inez.parse.IdTestData; -public interface BridiReferenceTestData extends BridiFieldTestData { +public interface BridiReferenceTestData extends IdTestData { 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 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); + 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); + 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); + 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 index f9dd904..fe996b6 100644 --- 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 @@ -1,12 +1,14 @@ package io.github.magwas.inez.storage.model; -import io.github.magwas.inez.parse.BridiFieldTestData; +import io.github.magwas.inez.parse.IdTestData; -public interface SumtiTestData extends BridiFieldTestData { +public interface SumtiTestData extends IdTestData { 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 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(GO_ID, GO_REPR); Sumti GO2_SUMTI = new Sumti(GO2_ID, GO_REPR); } diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java deleted file mode 100644 index b47206c..0000000 --- a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGenerator.java +++ /dev/null @@ -1,56 +0,0 @@ -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 BridiFieldTestDataGenerator - implements Supplier, BridiFieldTestDataGeneratorConstants { - - @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 = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, """ - import java.util.List; - """); - GeneratorUtil.mapToCode(REPRESENTATIONS, - GeneratorUtil.stringConstant("REPR"), builder); - builder.append("\n"); - 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); - builder.append("\n"); - GeneratorUtil.mapToCode(INPUTS, GeneratorUtil.stringConstant("INPUT"), - builder); - builder.append("\n"); - GeneratorUtil.mapToCode(IDREFERENCES, line -> { - String[] parts = line.split(",", 2); - return MessageFormat.format(""" - String {0}_REFERENCE = "@{0}"; - """, parts[0].trim()); - }, builder); - builder.append("\n"); - GeneratorUtil.mapToCode(REFERENCES, line -> { - String[] parts = line.split(",", 2); - return MessageFormat.format(""" - List {0}_REFERENCES = List.of({1}); - """, parts[0].trim(), parts[1]); - }, builder); - builder.append("\n"); - builder.append(EXTRA); - builder.append("}\n"); - - return builder; - } -} 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..fdd091f --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java @@ -0,0 +1,32 @@ +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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, "", "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); + builder.append("}\n"); + + return 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..c64df16 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/InputTestDataGenerator.java @@ -0,0 +1,20 @@ +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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, ""); + GeneratorUtil.mapToCode(INPUTS, GeneratorUtil.stringConstant("INPUT"), + builder); + builder.append("}\n"); + + return 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..6bde399 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParserOutputTestDataGenerator.java @@ -0,0 +1,33 @@ +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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, """ + 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); + builder.append("}\n"); + return 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..d1bb982 --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java @@ -0,0 +1,28 @@ +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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, """ + import java.util.List; + """, "IdTestData", "InputTestData"); + builder.append("\n"); + GeneratorUtil.mapToCode(REFERENCES, line -> { + String[] parts = line.split(",", 2); + return MessageFormat.format(""" + List {0}_REFERENCES = List.of({1}); + """, parts[0].trim(), parts[1]); + }, builder); + builder.append("}\n"); + + return 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..e4168de --- /dev/null +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/RepresentationTestDataGenerator.java @@ -0,0 +1,26 @@ +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 = new StringBuilder(); + GeneratorUtil.testDataBoilerPlate(builder, ""); + 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); + builder.append("}\n"); + return builder; + } +} diff --git a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java similarity index 81% rename from inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java rename to inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java index 8092f54..f3159f7 100644 --- a/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/BridiFieldTestDataGeneratorConstants.java +++ b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/TestDataGeneratorConstants.java @@ -2,12 +2,13 @@ import io.github.magwas.testing.TestUtil; -public interface BridiFieldTestDataGeneratorConstants { +public interface TestDataGeneratorConstants { String REPRESENTATIONS = TestUtil.loadResourceAsString("representations"); String IDS = TestUtil.loadResourceAsString("ids"); String EXTRA = TestUtil.loadResourceAsString("extra"); String IDREFERENCES = TestUtil.loadResourceAsString("idreferences"); String INPUTS = TestUtil.loadResourceAsString("inputs"); String REFERENCES = TestUtil.loadResourceAsString("references"); + String OUTPUTS = TestUtil.loadResourceAsString("outputs"); } 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 82e2975..f85fdc7 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 @@ -67,7 +67,7 @@ void test1() { @DisplayName("literal is parsed correctly") void test6() { assertEquals( - OUTPOUT_WITH_LITERAL, + OUTPUT_WITH_LITERAL, parseText.apply(WITH_LITERAL_INPUT).toList().get(0)); } @@ -75,7 +75,7 @@ void test6() { @DisplayName("multiline is working") void test7() { assertEquals( - List.of(OUTPOUT_WITH_LITERAL, OUTPUT_TAUTOLOGY), + List.of(OUTPUT_WITH_LITERAL, OUTPUT_TAUTOLOGY), parseText .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 99441dc..0000000 --- a/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParserOutputTestData.java +++ /dev/null @@ -1,38 +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(WITH_LITERAL_INPUT, Map.of(WITH_LITERAL_INPUT, INPUT_WITH_LITERAL_REFS_REFERENCES)); - - ParserOutput OUTPUT_NONEXISTING = new ParserOutput(NONEXISTENT_REFERENCE, Map.of()); - ParserOutput OUTPUT_THING = new ParserOutput(THING_REPR, Map.of()); - ParserOutput OUTPUT_GO = new ParserOutput(GO_REPR, 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( - SIMPLE_INPUT, Map.of(SIMPLE_INPUT, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR))); - ParserOutput OUTPUT_ALL_ANY = new ParserOutput( - ALL_ANY_INPUT, - Map.of(ALL_ANY_INPUT, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, ParserConstants.QUERY_BRIDI_ID))); - ParserOutput OUTPUT_NONMATCHING = new ParserOutput( - NONMATCHING_INPUT, Map.of(NONMATCHING_INPUT, List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, GOD_REPR))); - ParserOutput OUTPUT_RECURSIVE = new ParserOutput( - RECURSIVE_INPUT, - Map.of( - RECURSIVE_INPUT, - List.of(IS_A_REPR, SIMPLE_INPUT, THING_REPR), - TAUTOLOGY_GENERATED_REPR, - List.of(IS_A_REPR, THING_REPR, THING_REPR), - SIMPLE_INPUT, - List.of(IS_A_REPR, ParserConstants.QUERY_BRIDI_ID, THING_REPR))); -} diff --git a/inez.parser.tests/src/main/resources/extra b/inez.parser.tests/src/main/resources/extra deleted file mode 100644 index 1eb153c..0000000 --- a/inez.parser.tests/src/main/resources/extra +++ /dev/null @@ -1,7 +0,0 @@ - - String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR + "\n" - + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" - + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" + BOB_EATS_CHIPS_REPR + "\n" - + CECILE_EATS_BANANA_REPR + "\n" + CECILE_LOOKS_AT_BANANA_REPR + "\n" - + SUMTI_IS_A_THING_REPR + "\n" + TAUTOLOGY_GENERATED_REPR; - \ No newline at end of file diff --git a/inez.parser.tests/src/main/resources/ids b/inez.parser.tests/src/main/resources/ids index e3488c6..784e1b7 100644 --- a/inez.parser.tests/src/main/resources/ids +++ b/inez.parser.tests/src/main/resources/ids @@ -4,4 +4,7 @@ STUFF,stuff GO,GO1 GO2,go2 THING_IS_A_SUMTI,not tautology -TAUTOLOGY,tautology \ No newline at end of file +TAUTOLOGY,tautology +CONTAINS,CONTAINS +ROOT,ROOT +CONTAINER,CONTAINER diff --git a/inez.parser.tests/src/main/resources/inputs b/inez.parser.tests/src/main/resources/inputs index be2ca06..b655fcc 100644 --- a/inez.parser.tests/src/main/resources/inputs +++ b/inez.parser.tests/src/main/resources/inputs @@ -6,4 +6,9 @@ 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} \ No newline at end of file +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/references b/inez.parser.tests/src/main/resources/references index a52c3f9..dd05ab4 100644 --- a/inez.parser.tests/src/main/resources/references +++ b/inez.parser.tests/src/main/resources/references @@ -1,8 +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_REFS,"{0} contains {1}", "My folder", "{0} is a {1}" \ No newline at end of file +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 index 9c4752a..4e7cfcc 100644 --- a/inez.parser.tests/src/main/resources/representations +++ b/inez.parser.tests/src/main/resources/representations @@ -23,3 +23,17 @@ 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} From 54bb25e36abdedf0627b16e37a0a87db721adcc1 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 12 Oct 2025 10:18:34 +0200 Subject: [PATCH 03/10] some stuff is generated --- .../model/SumtiTestData2Generator.java | 6 +- .../io/github/magwas/inez/BridiTestData.java | 37 +++++----- .../element/BridiElementEndToEndTest.java | 22 +++--- .../inez/element/BridiElementTestData.java | 9 ++- .../CreateBridisFromParserOutputTest.java | 13 ++-- .../query/QueryProcessorEndToEndTest.java | 29 +++----- .../storage/AddReferencesServiceTest.java | 6 +- .../inez/storage/AddReferencesTest.java | 7 +- .../inez/storage/BridiStoreEndToEndTest.java | 20 +++--- .../FindAllIdByRepresentationTest.java | 4 +- ...BridiIdBySelbriAndSumtiIdsServiceStub.java | 19 +++--- .../storage/model/BridiReferenceTestData.java | 68 ++++++++----------- .../inez/storage/model/SumtiTestData.java | 6 +- inez.parser.tests/META-INF/MANIFEST.MF | 7 +- .../inez/parse/IdTestDataGenerator.java | 8 +-- .../inez/parse/InputTestDataGenerator.java | 7 +- .../parse/ParseTextServiceStubGenerator.java | 25 +++++++ .../parse/ParserOutputTestDataGenerator.java | 6 +- .../parse/ReferenceTestDataGenerator.java | 7 +- .../RepresentationTestDataGenerator.java | 7 +- .../parse/TestDataGeneratorConstants.java | 3 +- .../inez/parse/ParseTextServiceStub.java | 26 ------- .../src/main/resources/parse_text_stubdata | 12 ++++ inez.target/inez.target | 4 +- pom.xml | 4 +- 25 files changed, 166 insertions(+), 196 deletions(-) create mode 100644 inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ParseTextServiceStubGenerator.java delete mode 100644 inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextServiceStub.java create mode 100644 inez.parser.tests/src/main/resources/parse_text_stubdata diff --git a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java index 499a251..4c962e9 100644 --- a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java @@ -10,11 +10,9 @@ public class SumtiTestData2Generator @Override public StringBuilder get() { - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, ""); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); GeneratorUtil.mapToCode(REPRESENTATIONS, GeneratorUtil.stringConstant("REPR"), builder); - builder.append("}\n"); - return builder; + return GeneratorUtil.testDataTail(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 index e2e052d..52a5562 100644 --- 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 @@ -9,44 +9,39 @@ import io.github.magwas.inez.parse.ReferenceTestData; import io.github.magwas.inez.parse.RepresentationTestData; -public interface BridiTestData - extends RepresentationTestData, IdTestData, ReferenceTestData { +public interface BridiTestData extends RepresentationTestData, IdTestData, ReferenceTestData { Bridi ALICE = new Bridi(IdUtil.createID(ALICE_REPR), ALICE_REPR, List.of()); Bridi GO1 = new Bridi(GO_ID, GO_REPR, null); Bridi GO2 = new Bridi(GO2_ID, GO_REPR, null); - Bridi SUMTI_IS_A_THING_IS_A_THING = new Bridi(SUMTI_IS_A_THING_IS_A_THING_ID, + 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_NOREFERENCE_REPR, 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 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 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 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 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); + 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/element/BridiElementEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementEndToEndTest.java index 87e752b..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 @@ -46,8 +46,7 @@ class BridiElementEndToEndTest implements BridiTestData, BridiElementTestData { @BeforeEach void setUp() { sumtiRepository.findAll().forEach(x -> sumtiRepository.delete(x)); - bridiReferenceRepository.findAll() - .forEach(x -> bridiReferenceRepository.delete(x)); + bridiReferenceRepository.findAll().forEach(x -> bridiReferenceRepository.delete(x)); } @Test @@ -56,9 +55,10 @@ void test() throws IOException { assertSame(bridiElementSystemInitialization.inez, inez); bridiElementSystemInitialization.apply(); BridiElement elementModel = bridiElementFactory.apply(ELEMENT_MODEL_ID); - assertTrue(elementModel.getChildren() - .anyMatch(x -> x.getReferences().map(y -> y.id).toList() - .contains(ElementConstants.IS_FUNCTION_FOR_ID))); + assertTrue(elementModel + .getChildren() + .anyMatch( + x -> x.getReferences().map(y -> y.id).toList().contains(ElementConstants.IS_FUNCTION_FOR_ID))); BridiElement root = bridiElementFactory.apply(ROOT_ID); String rootXml = loadResourceAsString("root.xml"); String theXml = root.toXml(); @@ -71,7 +71,8 @@ void test() throws IOException { assertEquals(CONTAINS_ELEMENT_REPR, element.getRepresentation()); assertEquals(THING_ID, element.getType().id); - assertEquals(CONTAINS_ELEMENT_REFERENCES, + assertEquals( + CONTAINS_ELEMENT_REFERENCES, element.getReferences().map(x -> x.id).toList()); assertEquals(List.of(), element.getChildren().toList()); assertEquals(MY_MODEL_ID, element.getParent().id); @@ -82,8 +83,7 @@ void test() throws IOException { assertEquals(MY_MODEL_REPR, element.getRepresentation()); assertEquals(FOLDER_ID, element.getType().id); assertEquals(List.of(), element.getReferences().toList()); - assertEquals(MY_FOLDER_CHILDREN, - element.getChildren().map(x -> x.id).collect(Collectors.toSet())); + assertEquals(MY_FOLDER_CHILDREN, element.getChildren().map(x -> x.id).collect(Collectors.toSet())); assertEquals(ROOT_ID, element.getParent().id); String xml = loadResourceAsString("mymodel.xml"); assertEquals(xml, element.toXml()); @@ -92,11 +92,9 @@ void test() throws IOException { assertTrue(element.isInstance(THING_ID)); } - private String loadResourceAsString(final String definitionName) - throws IOException { + private String loadResourceAsString(final String definitionName) throws IOException { ClassLoader classloader = Thread.currentThread().getContextClassLoader(); - try (InputStream inputStream = classloader - .getResourceAsStream(definitionName)) { + try (InputStream inputStream = classloader.getResourceAsStream(definitionName)) { return new String(inputStream.readAllBytes()); } } 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 5001990..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 @@ -6,7 +6,12 @@ public interface BridiElementTestData extends IdTestData { - Set MY_FOLDER_CHILDREN = Set.of(ALICE_ID, HUMAN_ID, DOG_ID, - MY_MODEL_IS_A_FOLDER_ID, DOG_IS_A_ANIMAL_ID, HUMAN_IS_A_ANIMAL_ID, + Set MY_FOLDER_CHILDREN = Set.of( + ALICE_ID, + HUMAN_ID, + DOG_ID, + MY_MODEL_IS_A_FOLDER_ID, + DOG_IS_A_ANIMAL_ID, + HUMAN_IS_A_ANIMAL_ID, ALICE_IS_A_HUMAN_ID); } 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 c245fec..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 @@ -15,19 +15,16 @@ import io.github.magwas.testing.TestBase; import io.github.magwas.testing.TestUtil; -class CreateBridisFromParserOutputTest extends TestBase - implements BridiTestData, ParserOutputTestData { +class CreateBridisFromParserOutputTest extends TestBase implements BridiTestData, ParserOutputTestData { @InjectMocks CreateBridisFromParserOutputService createBridisFromParserOutput; @Test - @DisplayName("creates a list of bridis from the output of the parser\n" - + " - does not save them") + @DisplayName("creates a list of bridis from the output of the parser\n" + " - does not save them") 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()); + 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/QueryProcessorEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorEndToEndTest.java index b4e5df3..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 @@ -32,8 +32,7 @@ @Tag("end-to-end") @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) -class QueryProcessorEndToEndTest - implements QueryProcessorTestData, InputTestData, BridiTestData { +class QueryProcessorEndToEndTest implements QueryProcessorTestData, InputTestData, BridiTestData { @Autowired InezImpl inez; @@ -42,8 +41,7 @@ class QueryProcessorEndToEndTest void setUp() throws IOException { ServiceReference sr = mock(ServiceReference.class); BundleContext ctx = mock(BundleContext.class); - when((ServiceReference) ctx.getServiceReference(SAVE_CLASS_NAME)) - .thenReturn(sr); + when((ServiceReference) ctx.getServiceReference(SAVE_CLASS_NAME)).thenReturn(sr); when(ctx.getService(sr)).thenReturn(new Save()); SpringBootBundleActivator.bundleContext = ctx; inez.initialize(); @@ -52,31 +50,26 @@ void setUp() throws IOException { @Test void test1() { inez.create(TEST_TEXT).peek(x -> LogUtil.debug("created:" + x)).toList(); - assertEquals(List.of(ALICE), - inez.findAllByRepresentation(ALICE_REPR).toList()); + assertEquals(List.of(ALICE), inez.findAllByRepresentation(ALICE_REPR).toList()); assertQuery(Set.of(ALICE_REPR), ALICE_REPR); assertQuery(Set.of(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR); - assertQuery(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(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); + 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()); } - private Set assertQuery(final Set expected, - final String query) { + private Set assertQuery(final Set expected, final String query) { Set result = inez.query(query).collect(Collectors.toSet()); - Set actual = result.stream().map(bridi -> bridi.representation()) - .collect(Collectors.toSet()); + Set actual = + result.stream().map(bridi -> bridi.representation()).collect(Collectors.toSet()); if (!expected.equals(actual)) { System.out.println("actual:"); actual.forEach(System.out::println); 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 5a3c197..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 @@ -39,10 +39,8 @@ void test1() { @DisplayName("for each reference adds an entry to the bridireferencerepository") void test2() { addReferences.apply(ALICE_ID, List.of(IS_A_ID, SUMTI_ID)); - ArgumentCaptor argument = ArgumentCaptor - .forClass(BridiReference.class); - verify(addReferences.bridiReferenceRepository, times(2)) - .save(argument.capture()); + ArgumentCaptor argument = ArgumentCaptor.forClass(BridiReference.class); + verify(addReferences.bridiReferenceRepository, times(2)).save(argument.capture()); List values = argument.getAllValues(); assertEquals(ALICE_ID, values.get(0).bridiId()); assertEquals(ALICE_ID, values.get(1).bridiId()); 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 62c82c8..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 @@ -11,8 +11,7 @@ import io.github.magwas.inez.storage.model.BridiReferenceTestData; import io.github.magwas.testing.TestBase; -class AddReferencesTest extends TestBase - implements BridiReferenceTestData, ReferenceTestData { +class AddReferencesTest extends TestBase implements BridiReferenceTestData, ReferenceTestData { @InjectMocks AddReferencesService addReferences; @@ -20,8 +19,8 @@ class AddReferencesTest extends TestBase @DisplayName("adds all the references of the bridi to the repository") void test() { addReferences.apply(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_REFERENCES); - SUMTI_IS_A_THING_REFERENCELIST - .forEach(x -> verify(addReferences.bridiReferenceRepository).save(x)); + SUMTI_IS_A_THING_REFERENCELIST.forEach( + x -> verify(addReferences.bridiReferenceRepository).save(x)); } @Test 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 b570d4c..ede34b5 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 @@ -32,29 +32,25 @@ class BridiStoreEndToEndTest implements QueryProcessorTestData, BridiTestData { @Test void test() { inez.create(TEST_TEXT).toArray(); - assertEquals(List.of(ALICE), - inez.findAllByRepresentation("alice").toList()); + assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); inez.save(Set.of(GO1, 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)); - Bridi ceclie_looks_at_banana = assertGotTheBridi( - CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); + Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, inez.query(CECILE_EATS_BANANA_REPR)); + Bridi ceclie_looks_at_banana = + assertGotTheBridi(CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); TestUtil.assertStreamEquals( - Set.of(cecile_eats_banana, ceclie_looks_at_banana), - inez.query("{cecile} {{$?} {banana}}")); + Set.of(cecile_eats_banana, ceclie_looks_at_banana), inez.query("{cecile} {{$?} {banana}}")); - Bridi looks_at_banana = inez - .findById(ceclie_looks_at_banana.references().get(2)).get(); + Bridi looks_at_banana = + inez.findById(ceclie_looks_at_banana.references().get(2)).get(); Bridi looks_at = inez.findById(looks_at_banana.references().get(1)).get(); assertEquals("looks at", looks_at.representation()); } - private Bridi assertGotTheBridi(final String expected, - final Stream actual) { + private Bridi assertGotTheBridi(final String expected, final Stream actual) { List actualList = actual.toList(); assertEquals(1, actualList.size()); Bridi bridi = actualList.get(0); 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 3357ff9..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 @@ -19,7 +19,7 @@ class FindAllIdByRepresentationTest extends TestBase implements IdTestData { @Test @DisplayName("returns the ids of all the sumties with the given representation") void test() { - assertEquals(Set.of(GO_ID, GO2_ID), - findAllIdByRepresentation.apply(GO_REPR).collect(Collectors.toSet())); + assertEquals( + 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/GetBridiIdBySelbriAndSumtiIdsServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/GetBridiIdBySelbriAndSumtiIdsServiceStub.java index 6acf88c..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 @@ -9,19 +9,16 @@ 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)); - when(mock.apply(IS_A_ID, THING_ID, 2)).thenAnswer( - (args) -> Stream.of(TAUTOLOGY_ID, SUMTI_IS_A_THING_IS_A_THING_ID, - SUMTI_IS_A_THING_ID, TAUTOLOGY_IS_A_THING_ID)); - when(mock.apply(IS_A_ID, IS_A_ID, 0)).thenAnswer((args) -> Stream - .of(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_IS_A_THING_ID)); + 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)); + when(mock.apply(IS_A_ID, THING_ID, 2)) + .thenAnswer((args) -> Stream.of( + TAUTOLOGY_ID, SUMTI_IS_A_THING_IS_A_THING_ID, SUMTI_IS_A_THING_ID, TAUTOLOGY_IS_A_THING_ID)); + when(mock.apply(IS_A_ID, IS_A_ID, 0)) + .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID, SUMTI_IS_A_THING_IS_A_THING_ID)); when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_IS_A_THING_ID, 1)) .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_IS_A_THING_ID)); - when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_ID, 1)) - .thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID)); + when(mock.apply(IS_A_ID, SUMTI_IS_A_THING_ID, 1)).thenAnswer((args) -> Stream.of(SUMTI_IS_A_THING_ID)); when(mock.apply(IS_A_ID, GOD_ID, 2)).thenAnswer((args) -> Stream.of()); return mock; 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 index 76b1263..3d4844e 100644 --- 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 @@ -7,46 +7,36 @@ public interface BridiReferenceTestData extends IdTestData { 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 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); + 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); + 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); + 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 index fe996b6..47c4f97 100644 --- 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 @@ -5,10 +5,8 @@ public interface SumtiTestData extends IdTestData { 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 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(GO_ID, GO_REPR); Sumti GO2_SUMTI = new Sumti(GO2_ID, GO_REPR); } 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/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/IdTestDataGenerator.java index fdd091f..08aa0c1 100644 --- 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 @@ -16,8 +16,8 @@ public StringBuilder get() { .map(s -> s.split(",")[0]).toList(); Stream generatedIds = GeneratorUtil.linesOf(REPRESENTATIONS) .map(s -> s.split(",")[0]).filter(x -> !definedIdlist.contains(x)); - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, "", "RepresentationTestData"); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate("", + "RepresentationTestData"); GeneratorUtil.mapToCode(generatedIds, line -> { String[] parts = line.split(",", 2); return MessageFormat.format(""" @@ -25,8 +25,6 @@ public StringBuilder get() { """, parts[0].trim()); }, builder); GeneratorUtil.mapToCode(IDS, GeneratorUtil.stringConstant("ID"), builder); - builder.append("}\n"); - - return 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 index c64df16..ef89190 100644 --- 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 @@ -9,12 +9,9 @@ public class InputTestDataGenerator @Override public StringBuilder get() { - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, ""); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); GeneratorUtil.mapToCode(INPUTS, GeneratorUtil.stringConstant("INPUT"), builder); - builder.append("}\n"); - - return 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 index 6bde399..47c443f 100644 --- 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 @@ -10,8 +10,7 @@ public class ParserOutputTestDataGenerator @Override public StringBuilder get() { - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, """ + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" import java.util.Map; """, "InputTestData", "ReferenceTestData"); GeneratorUtil.linesOf(OUTPUTS).map(line -> { @@ -26,8 +25,7 @@ public StringBuilder get() { "\tParserOutput OUTPUT_{0} = new ParserOutput({1},Map.of({2}));\n", name, top, map); }).forEach(builder::append); - builder.append("}\n"); - return builder; + 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 index d1bb982..c3d8e1a 100644 --- 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 @@ -10,8 +10,7 @@ public class ReferenceTestDataGenerator @Override public StringBuilder get() { - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, """ + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" import java.util.List; """, "IdTestData", "InputTestData"); builder.append("\n"); @@ -21,8 +20,6 @@ public StringBuilder get() { List {0}_REFERENCES = List.of({1}); """, parts[0].trim(), parts[1]); }, builder); - builder.append("}\n"); - - return 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 index e4168de..656cd2c 100644 --- 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 @@ -10,8 +10,7 @@ public class RepresentationTestDataGenerator @Override public StringBuilder get() { - StringBuilder builder = new StringBuilder(); - GeneratorUtil.testDataBoilerPlate(builder, ""); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); GeneratorUtil.mapToCode(REPRESENTATIONS, GeneratorUtil.stringConstant("REPR"), builder); GeneratorUtil.mapToCode(IDREFERENCES, line -> { @@ -20,7 +19,7 @@ public StringBuilder get() { String {0}_REFERENCE = "@{0}"; """, parts[0].trim()); }, builder); - builder.append("}\n"); - return 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 index f3159f7..d4194e6 100644 --- 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 @@ -5,10 +5,11 @@ public interface TestDataGeneratorConstants { String REPRESENTATIONS = TestUtil.loadResourceAsString("representations"); String IDS = TestUtil.loadResourceAsString("ids"); - String EXTRA = TestUtil.loadResourceAsString("extra"); 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/ParseTextServiceStub.java b/inez.parser.tests/src/main/java/io/github/magwas/inez/parse/ParseTextServiceStub.java deleted file mode 100644 index f5b0d2e..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(NONEXISTENT_REPR)).thenReturn(Stream.of(OUTPUT_NONEXISTING)); - when(mock.apply(THING_REPR)).thenReturn(Stream.of(OUTPUT_THING)); - when(mock.apply(GO_REPR)).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(SIMPLE_INPUT)).thenReturn(Stream.of(OUTPUT_SIMPLE)); - when(mock.apply(ALL_ANY_INPUT)).thenReturn(Stream.of(OUTPUT_ALL_ANY)); - when(mock.apply(NONMATCHING_INPUT)).thenReturn(Stream.of(OUTPUT_NONMATCHING)); - when(mock.apply(RECURSIVE_INPUT)).thenReturn(Stream.of(OUTPUT_RECURSIVE)); - return mock; - } -} 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.target/inez.target b/inez.target/inez.target index b9dbd88..abf206f 100644 --- a/inez.target/inez.target +++ b/inez.target/inez.target @@ -23,13 +23,13 @@ io.github.magwas konveyor-base-testing - 0.4.33 + 0.4.37 jar io.github.magwas konveyor-base - 0.4.33 + 0.4.37 jar diff --git a/pom.xml b/pom.xml index 7695f4a..c50f960 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.magwas konveyor-parent - 0.4.33 + 0.4.37 inez 0.0.1 @@ -55,7 +55,7 @@ true - 0.4.33 + 0.4.37 From 923334c1a4fb91bc31c110856adaf25e099ebac7 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 12 Oct 2025 11:36:18 +0200 Subject: [PATCH 04/10] fixup: konveyor version --- inez.target/inez.target | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/inez.target/inez.target b/inez.target/inez.target index abf206f..3b4d34e 100644 --- a/inez.target/inez.target +++ b/inez.target/inez.target @@ -23,13 +23,13 @@ io.github.magwas konveyor-base-testing - 0.4.37 + 0.4.38 jar io.github.magwas konveyor-base - 0.4.37 + 0.4.38 jar diff --git a/pom.xml b/pom.xml index c50f960..a8451d7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.magwas konveyor-parent - 0.4.37 + 0.4.38 inez 0.0.1 @@ -55,7 +55,7 @@ true - 0.4.37 + 0.4.38 From 74942afe4b7ca2c7fe8485c6fd8384e58d8bc243 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 12 Oct 2025 16:42:10 +0200 Subject: [PATCH 05/10] SumtiTestData and BridiReferenceTestData are generated closes: #29, #30 --- inez.model.tests/pom.xml | 1 + .../BridiReferenceTestDataGenerator.java | 39 +++++++++++++++++ .../model/SumtiTestData2Generator.java | 18 -------- .../storage/model/SumtiTestDataGenerator.java | 23 ++++++++++ .../storage/model/BridiReferenceTestData.java | 42 ------------------- .../inez/storage/model/SumtiTestData.java | 12 ------ .../BridiReferenceRepositoryStub.java | 4 +- .../src/main/resources/bridireferences | 6 +++ inez.model.tests/src/main/resources/sumties | 5 +++ inez.parser.tests/pom.xml | 1 + .../parse/ReferenceTestDataGenerator.java | 1 - inez.parser.tests/src/main/resources/ids | 1 + 12 files changed, 77 insertions(+), 76 deletions(-) create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java delete mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestDataGenerator.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/BridiReferenceTestData.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/storage/model/SumtiTestData.java create mode 100644 inez.model.tests/src/main/resources/bridireferences create mode 100644 inez.model.tests/src/main/resources/sumties 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/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..02c49a5 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java @@ -0,0 +1,39 @@ +package io.github.magwas.inez.storage.model; + +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 BridiReferenceTestDataGenerator + implements Supplier { + 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); + """; + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" + import io.github.magwas.inez.parse.IdTestData; + import io.github.magwas.inez.parse.IdUtil; + import java.util.List; + """, "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/SumtiTestData2Generator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java deleted file mode 100644 index 4c962e9..0000000 --- a/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestData2Generator.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.magwas.inez.storage.model; - -import java.util.function.Supplier; - -import io.github.magwas.inez.parse.TestDataGeneratorConstants; -import io.github.magwas.runtime.GeneratorUtil; - -public class SumtiTestData2Generator - implements Supplier, TestDataGeneratorConstants { - - @Override - public StringBuilder get() { - StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""); - GeneratorUtil.mapToCode(REPRESENTATIONS, - GeneratorUtil.stringConstant("REPR"), 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..b180e79 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/SumtiTestDataGenerator.java @@ -0,0 +1,23 @@ +package io.github.magwas.inez.storage.model; + +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 SumtiTestDataGenerator implements Supplier { + String SUMTI_PATTERN = "\tSumti {0} = new Sumti({1}, {2});\n"; + + @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_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA)), builder); + return GeneratorUtil.testDataTail(builder); + } + +} 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 3d4844e..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.IdTestData; - -public interface BridiReferenceTestData extends IdTestData { - - 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 47c4f97..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.IdTestData; - -public interface SumtiTestData extends IdTestData { - - 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(GO_ID, GO_REPR); - Sumti GO2_SUMTI = new Sumti(GO2_ID, GO_REPR); -} 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/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/sumties b/inez.model.tests/src/main/resources/sumties new file mode 100644 index 0000000..053270c --- /dev/null +++ b/inez.model.tests/src/main/resources/sumties @@ -0,0 +1,5 @@ +THING_SUMTI,THING_ID,THING_REPR +SUMTI_IS_A_THING_SUMTI,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_REPR +SUMTI_IS_A_THING_CHANGED_SUMTI,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_CHANGED_REPR +GO1_SUMTI,GO_ID,GO_REPR +GO2_SUMTI,GO2_ID,GO_REPR 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/ReferenceTestDataGenerator.java b/inez.parser.tests/src/generators-java/io/github/magwas/inez/parse/ReferenceTestDataGenerator.java index c3d8e1a..97f9060 100644 --- 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 @@ -13,7 +13,6 @@ public StringBuilder get() { StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" import java.util.List; """, "IdTestData", "InputTestData"); - builder.append("\n"); GeneratorUtil.mapToCode(REFERENCES, line -> { String[] parts = line.split(",", 2); return MessageFormat.format(""" diff --git a/inez.parser.tests/src/main/resources/ids b/inez.parser.tests/src/main/resources/ids index 784e1b7..f61a9d3 100644 --- a/inez.parser.tests/src/main/resources/ids +++ b/inez.parser.tests/src/main/resources/ids @@ -8,3 +8,4 @@ TAUTOLOGY,tautology CONTAINS,CONTAINS ROOT,ROOT CONTAINER,CONTAINER +STUFF_COULDBE_THING,STUFF_COULDBE_THING From b5e5ea9e690e76aecafcbddce76ce2f7f27b1525 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 12 Oct 2025 17:14:25 +0200 Subject: [PATCH 06/10] BridiTestData is generated closes: #31 --- .../magwas/inez/BridiTestDataGenerator.java | 29 ++++++++++++ .../io/github/magwas/inez/BridiTestData.java | 47 ------------------- .../magwas/inez/query/QueryProcessorTest.java | 36 ++++++++------ .../inez/query/QueryProcessorTestData.java | 10 +++- inez.model.tests/src/main/resources/bridies | 22 +++++++++ .../CreateBridisFromParserOutputService.java | 22 +++++---- 6 files changed, 95 insertions(+), 71 deletions(-) create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/BridiTestDataGenerator.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/BridiTestData.java create mode 100644 inez.model.tests/src/main/resources/bridies 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..2bff35a --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/BridiTestDataGenerator.java @@ -0,0 +1,29 @@ +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 { + String BRIDI_PATTERN = "\tBridi {0} = new Bridi({1}, {2},{3});\n"; + + @Override + public StringBuilder get() { + StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" + 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; + + """, "IdTestData", "ReferenceTestData"); + String bridies = TestUtil.loadResourceAsString("bridies"); + GeneratorUtil.mapToCode(bridies, line -> MessageFormat.format(BRIDI_PATTERN, + (Object[]) line.split(RuntimeConstants.COMMA, 4)), builder); + return GeneratorUtil.testDataTail(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 52a5562..0000000 --- a/inez.model.tests/src/main/java/io/github/magwas/inez/BridiTestData.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.github.magwas.inez; - -import java.util.List; -import java.util.Set; - -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; -import io.github.magwas.inez.parse.RepresentationTestData; - -public interface BridiTestData extends RepresentationTestData, IdTestData, ReferenceTestData { - - Bridi ALICE = new Bridi(IdUtil.createID(ALICE_REPR), ALICE_REPR, List.of()); - - Bridi GO1 = new Bridi(GO_ID, GO_REPR, null); - Bridi GO2 = new Bridi(GO2_ID, GO_REPR, 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_NOREFERENCE_REPR, - 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/query/QueryProcessorTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java index 74de1ba..f567082 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,13 +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; @@ -32,70 +31,79 @@ void test() { @Test @DisplayName("for an existing sumti returns the sumti") void test_1() { - TestUtil.assertStreamEquals(Set.of(THING), queryProcessor.apply(THING_REPR)); + TestUtil.assertStreamEquals(Set.of(THING), + queryProcessor.apply(THING_REPR)); } @Test @DisplayName("if more sumtis exist with the representation, return them all") void test_2() { - TestUtil.assertStreamEquals(Set.of(GO1, GO2), queryProcessor.apply(GO_REPR)); + TestUtil.assertStreamEquals(Set.of(GO1, GO2), + queryProcessor.apply(GO_REPR)); } @Test @DisplayName("for a reference, return the referenced bridi") void test_3() { LogUtil.addDebuggedClass(QueryProcessorService.class); - TestUtil.assertStreamEquals(Set.of(GO1), queryProcessor.apply(GO1_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(GO1), + queryProcessor.apply(GO1_REFERENCE)); } @Test @DisplayName("for a reference to a nonexisting bridi, return an empty list") void test_5() { - TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(NONEXISTENT_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(), + queryProcessor.apply(NONEXISTENT_REFERENCE)); } @Test @DisplayName("for a bridi with the matching representation returns it") void test_4() { - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), queryProcessor.apply(SUMTI_IS_A_THING_REPR)); + TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), + queryProcessor.apply(SUMTI_IS_A_THING_REPR)); } @Test @DisplayName("for a bridi where the representation does not match, but the selbri and sumties do, finds it") void test_6() { - TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); + TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), + queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); } @Test @DisplayName("'$?' returns a list of the any sumti") void test_7() { - TestUtil.assertStreamEquals(Set.of(ANY), queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); + TestUtil.assertStreamEquals(Set.of(ANY), + queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); } @Test @DisplayName("for a bridi where one of the sumties is '$?', the matching bridies return") void test1() { - TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(SIMPLE_INPUT)); + TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, + queryProcessor.apply(SIMPLE_INPUT)); } @Test @DisplayName("for a bridi where all of the sumties is '$?', a ParseCancellationException is thrown") void test1_1() { - assertThrows( - ParseCancellationException.class, + assertThrows(ParseCancellationException.class, () -> 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(NONMATCHING_INPUT)); + 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_INPUT); - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING), actual); + 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 index c9793f6..f766289 100644 --- 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 @@ -1,8 +1,13 @@ 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 { +public interface QueryProcessorTestData + extends RepresentationTestData, BridiTestData { String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR + "\n" + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" @@ -11,4 +16,7 @@ public interface QueryProcessorTestData extends RepresentationTestData { + TAUTOLOGY_GENERATED_REPR; 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/resources/bridies b/inez.model.tests/src/main/resources/bridies new file mode 100644 index 0000000..ccb38c2 --- /dev/null +++ b/inez.model.tests/src/main/resources/bridies @@ -0,0 +1,22 @@ +ALICE,IdUtil.createID(ALICE_REPR),ALICE_REPR,List.of() +GO1,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() \ No newline at end of file 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..34a1769 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 @@ -18,7 +18,8 @@ import io.github.magwas.inez.storage.repository.SumtiRepository; @Service -public class CreateBridisFromParserOutputService implements Function> { +public class CreateBridisFromParserOutputService + implements Function> { @Autowired SumtiRepository sumtiRepository; @@ -30,28 +31,31 @@ public Stream apply(final ParserOutput parserOutput) { return apply(top, refMap); } - private Stream apply(final String top, final Map> refMap) { + 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); } List partList = refMap.get(top); - return Stream.of(new Bridi( - getIdOrRepr(top), - top, + return Stream + .of(new Bridi(getIdOrRepr(top), top, partList.stream().map(this::getIdOrRepr).toList())) .mapMulti((topBridi, consumer) -> { consumer.accept(topBridi); - partList.stream().map(x -> apply(x, refMap)).flatMap(x -> x).forEach(consumer::accept); + partList.stream().map(x -> apply(x, refMap)).flatMap(x -> x) + .forEach(consumer::accept); }); } private String getIdOrRepr(final String top) { Set candidates = sumtiRepository.findAllByRepresentation(top); - if (candidates.isEmpty()) return IdUtil.createID(top); - if (candidates.size() > 1) System.err.println("multiple candidates for " + top + ":" + candidates); + if (candidates.isEmpty()) + return IdUtil.createID(top); + if (candidates.size() > 1) + System.err.println("multiple candidates for " + top + ":" + candidates); return candidates.iterator().next().id(); } } From 17041283e08ec001a46b919ee1c25a3195187c78 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Sun, 12 Oct 2025 17:28:30 +0200 Subject: [PATCH 07/10] converted empty stubs in model to indirectly tested --- .../src/main/java/io/github/magwas/inez/InezImplStub.java | 4 +--- .../BridiElementSystemInitializationServiceStub.java | 6 ++---- .../inez/query/CreateBridisFromDefinitionServiceStub.java | 7 ++----- .../query/CreateBridisFromParserOutputServiceStub.java | 6 ++---- .../inez/query/CreateBridisFromQueryServiceStub.java | 7 ++----- .../magwas/inez/query/QueryProcessorServiceStub.java | 6 ++---- .../magwas/inez/storage/AddReferencesServiceStub.java | 6 ++---- .../inez/storage/BridiStoreChangeListenersServiceStub.java | 6 ++---- .../github/magwas/inez/storage/CreateSumtiServiceStub.java | 7 ++----- .../github/magwas/inez/storage/DeleteBridiServiceStub.java | 6 ++---- .../magwas/inez/storage/NotifyStoreChangeServiceStub.java | 6 ++---- .../magwas/inez/storage/RemoveReferencesServiceStub.java | 6 ++---- .../github/magwas/inez/storage/SaveBridiServiceStub.java | 6 ++---- 13 files changed, 25 insertions(+), 54 deletions(-) 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/element/BridiElementSystemInitializationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java index e296633..0d03692 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,7 @@ package io.github.magwas.inez.element; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class BridiElementSystemInitializationServiceStub { - static BridiElementSystemInitializationService stub() { - return mock(BridiElementSystemInitializationService.class); - } } 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..1c1bd82 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,7 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class CreateBridisFromDefinitionServiceStub { - - static CreateBridisFromDefinitionService stub() { - return mock(CreateBridisFromDefinitionService.class); - } } 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..878d4e2 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,7 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class CreateBridisFromParserOutputServiceStub { - static CreateBridisFromParserOutputService stub() { - return mock(CreateBridisFromParserOutputService.class); - } } 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..fb09bfc 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,7 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class CreateBridisFromQueryServiceStub { - - static CreateBridisFromQueryService stub() { - return mock(CreateBridisFromQueryService.class); - } } 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..9dda2c3 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,7 @@ package io.github.magwas.inez.query; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class QueryProcessorServiceStub { - static QueryProcessorService stub() { - return mock(QueryProcessorService.class); - } } 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..4b95170 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class AddReferencesServiceStub { - public static AddReferencesService stub() { - return mock(AddReferencesService.class); - } } 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..7f6238f 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class BridiStoreChangeListenersServiceStub { - public static BridiStoreChangeListenersService stub() { - return mock(BridiStoreChangeListenersService.class); - } } 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..458fe3c 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class CreateSumtiServiceStub { - - static CreateSumtiService stub() { - return mock(CreateSumtiService.class); - } } 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..85e8018 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class DeleteBridiServiceStub { - public static DeleteBridiService stub() { - return mock(DeleteBridiService.class); - } } 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..cabf8bf 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class NotifyStoreChangeServiceStub { - public static NotifyStoreChangeService stub() { - return mock(NotifyStoreChangeService.class); - } } 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..d943d56 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class RemoveReferencesServiceStub { - public static RemoveReferencesService stub() { - return mock(RemoveReferencesService.class); - } } 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..7613b2a 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,7 @@ package io.github.magwas.inez.storage; -import static org.mockito.Mockito.mock; +import io.github.magwas.testing.IndirectlyTested; +@IndirectlyTested public class SaveBridiServiceStub { - static SaveBridiService stub() { - return mock(SaveBridiService.class); - } } From 83b1484ebffbb2b10a0fe97de0828b080f84b081 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Mon, 13 Oct 2025 05:31:51 +0200 Subject: [PATCH 08/10] Generating SumtiRepositoryStub and GetRelativeForBridiElementServiceStub closes: #33, #48 --- .../magwas/inez/BridiTestDataGenerator.java | 20 ++++------ .../inez/GeneratorPatternConstants.java | 39 +++++++++++++++++++ ...veForBridiElementServiceStubGenerator.java | 27 +++++++++++++ .../BridiReferenceTestDataGenerator.java | 21 ++-------- .../storage/model/SumtiTestDataGenerator.java | 11 ++++-- .../SumtiRepositoryStubGenerator.java | 27 +++++++++++++ .../magwas/inez/InezProblemTestData.java | 2 +- ...lementSystemInitializationServiceStub.java | 3 +- ...GetRelativeForBridiElementServiceStub.java | 17 -------- ...CreateBridisFromDefinitionServiceStub.java | 3 +- ...eateBridisFromParserOutputServiceStub.java | 3 +- .../CreateBridisFromQueryServiceStub.java | 3 +- .../inez/query/QueryProcessorServiceStub.java | 3 +- .../magwas/inez/query/QueryProcessorTest.java | 33 ++++++---------- .../inez/query/QueryProcessorTestData.java | 8 ++-- .../storage/AddReferencesServiceStub.java | 3 +- .../BridiStoreChangeListenersServiceStub.java | 3 +- .../CreateBridiFromSumtiServiceStub.java | 2 +- .../inez/storage/CreateSumtiServiceStub.java | 3 +- .../inez/storage/DeleteBridiServiceStub.java | 3 +- .../storage/NotifyStoreChangeServiceStub.java | 3 +- .../storage/RemoveReferencesServiceStub.java | 3 +- .../inez/storage/SaveBridiServiceStub.java | 3 +- .../BridiStoreHistoryServiceStub.java | 9 ++--- .../repository/SumtiRepositoryStub.java | 21 ---------- inez.model.tests/src/main/resources/relatives | 4 ++ inez.model.tests/src/main/resources/sumties | 10 ++--- 27 files changed, 153 insertions(+), 134 deletions(-) create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/GeneratorPatternConstants.java create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStubGenerator.java create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/repository/SumtiRepositoryStubGenerator.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/element/GetRelativeForBridiElementServiceStub.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/storage/repository/SumtiRepositoryStub.java create mode 100644 inez.model.tests/src/main/resources/relatives 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 index 2bff35a..35db835 100644 --- 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 @@ -7,22 +7,18 @@ import io.github.magwas.runtime.RuntimeConstants; import io.github.magwas.testing.TestUtil; -public class BridiTestDataGenerator implements Supplier { - String BRIDI_PATTERN = "\tBridi {0} = new Bridi({1}, {2},{3});\n"; +public class BridiTestDataGenerator + implements Supplier, GeneratorPatternConstants { @Override public StringBuilder get() { - StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" - 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; - - """, "IdTestData", "ReferenceTestData"); + StringBuilder builder = GeneratorUtil.testDataBoilerPlate( + BRIDI_TEST_DATA_HEADER, "IdTestData", "ReferenceTestData"); String bridies = TestUtil.loadResourceAsString("bridies"); - GeneratorUtil.mapToCode(bridies, line -> MessageFormat.format(BRIDI_PATTERN, - (Object[]) line.split(RuntimeConstants.COMMA, 4)), builder); + 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..eebacb6 --- /dev/null +++ b/inez.model.tests/src/generators-java/io/github/magwas/inez/GeneratorPatternConstants.java @@ -0,0 +1,39 @@ +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; + """; + +} 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/model/BridiReferenceTestDataGenerator.java b/inez.model.tests/src/generators-java/io/github/magwas/inez/storage/model/BridiReferenceTestDataGenerator.java index 02c49a5..1127ad8 100644 --- 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 @@ -3,31 +3,18 @@ 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 { - 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); - """; + implements Supplier, GeneratorPatternConstants { @Override public StringBuilder get() { - StringBuilder builder = GeneratorUtil.testDataBoilerPlate(""" - import io.github.magwas.inez.parse.IdTestData; - import io.github.magwas.inez.parse.IdUtil; - import java.util.List; - """, "IdTestData"); + StringBuilder builder = GeneratorUtil + .testDataBoilerPlate(BRIDI_REFERENCE_HEADER, "IdTestData"); String bridireferences = TestUtil.loadResourceAsString("bridireferences"); GeneratorUtil.mapToCode(bridireferences, line -> MessageFormat.format(BRIDI_REFERENCE_PATTERN, 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 index b180e79..166ba7f 100644 --- 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 @@ -3,20 +3,23 @@ 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 { - String SUMTI_PATTERN = "\tSumti {0} = new Sumti({1}, {2});\n"; +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_PATTERN, - (Object[]) line.split(RuntimeConstants.COMMA)), builder); + 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/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/BridiElementSystemInitializationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/element/BridiElementSystemInitializationServiceStub.java index 0d03692..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class BridiElementSystemInitializationServiceStub { -} +public class BridiElementSystemInitializationServiceStub {} 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 1c1bd82..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class CreateBridisFromDefinitionServiceStub { -} +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 878d4e2..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class CreateBridisFromParserOutputServiceStub { -} +public class CreateBridisFromParserOutputServiceStub {} 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 fb09bfc..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class CreateBridisFromQueryServiceStub { -} +public class CreateBridisFromQueryServiceStub {} 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 9dda2c3..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class QueryProcessorServiceStub { -} +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 f567082..349877f 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 @@ -31,79 +31,70 @@ void test() { @Test @DisplayName("for an existing sumti returns the sumti") void test_1() { - TestUtil.assertStreamEquals(Set.of(THING), - queryProcessor.apply(THING_REPR)); + TestUtil.assertStreamEquals(Set.of(THING), queryProcessor.apply(THING_REPR)); } @Test @DisplayName("if more sumtis exist with the representation, return them all") void test_2() { - TestUtil.assertStreamEquals(Set.of(GO1, GO2), - queryProcessor.apply(GO_REPR)); + TestUtil.assertStreamEquals(Set.of(GO1, GO2), queryProcessor.apply(GO_REPR)); } @Test @DisplayName("for a reference, return the referenced bridi") void test_3() { LogUtil.addDebuggedClass(QueryProcessorService.class); - TestUtil.assertStreamEquals(Set.of(GO1), - queryProcessor.apply(GO1_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(GO1), queryProcessor.apply(GO1_REFERENCE)); } @Test @DisplayName("for a reference to a nonexisting bridi, return an empty list") void test_5() { - TestUtil.assertStreamEquals(Set.of(), - queryProcessor.apply(NONEXISTENT_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(NONEXISTENT_REFERENCE)); } @Test @DisplayName("for a bridi with the matching representation returns it") void test_4() { - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), - queryProcessor.apply(SUMTI_IS_A_THING_REPR)); + TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), queryProcessor.apply(SUMTI_IS_A_THING_REPR)); } @Test @DisplayName("for a bridi where the representation does not match, but the selbri and sumties do, finds it") void test_6() { - TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), - queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); + TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); } @Test @DisplayName("'$?' returns a list of the any sumti") void test_7() { - TestUtil.assertStreamEquals(Set.of(ANY), - queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); + TestUtil.assertStreamEquals(Set.of(ANY), queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); } @Test @DisplayName("for a bridi where one of the sumties is '$?', the matching bridies return") void test1() { - TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, - queryProcessor.apply(SIMPLE_INPUT)); + TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(SIMPLE_INPUT)); } @Test @DisplayName("for a bridi where all of the sumties is '$?', a ParseCancellationException is thrown") void test1_1() { - assertThrows(ParseCancellationException.class, + assertThrows( + ParseCancellationException.class, () -> 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(NONMATCHING_INPUT)); + 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_INPUT); - TestUtil.assertStreamEquals( - Set.of(SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING), actual); + 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 index f766289..3bbd11b 100644 --- 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 @@ -6,8 +6,7 @@ import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.parse.RepresentationTestData; -public interface QueryProcessorTestData - extends RepresentationTestData, BridiTestData { +public interface QueryProcessorTestData extends RepresentationTestData, BridiTestData { String TEST_TEXT = SUMTI_IS_A_THING_IS_A_THING_NOREFERENCE_REPR + "\n" + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" @@ -16,7 +15,6 @@ public interface QueryProcessorTestData + TAUTOLOGY_GENERATED_REPR; 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); - + 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 4b95170..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class AddReferencesServiceStub { -} +public class AddReferencesServiceStub {} 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 7f6238f..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class BridiStoreChangeListenersServiceStub { -} +public class BridiStoreChangeListenersServiceStub {} 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..145a99a 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(GO1); 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 458fe3c..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class CreateSumtiServiceStub { -} +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 85e8018..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class DeleteBridiServiceStub { -} +public class DeleteBridiServiceStub {} 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 cabf8bf..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class NotifyStoreChangeServiceStub { -} +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 d943d56..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class RemoveReferencesServiceStub { -} +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 7613b2a..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 @@ -3,5 +3,4 @@ import io.github.magwas.testing.IndirectlyTested; @IndirectlyTested -public class SaveBridiServiceStub { -} +public class SaveBridiServiceStub {} 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 f1bc513..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(SUMTI_ID)).thenReturn(Optional.empty()); - - when(mock.findAllByRepresentation(GO_REPR)).thenReturn(Set.of(GO1_SUMTI, GO2_SUMTI)); - return mock; - } -} 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 index 053270c..a7513b5 100644 --- a/inez.model.tests/src/main/resources/sumties +++ b/inez.model.tests/src/main/resources/sumties @@ -1,5 +1,5 @@ -THING_SUMTI,THING_ID,THING_REPR -SUMTI_IS_A_THING_SUMTI,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_REPR -SUMTI_IS_A_THING_CHANGED_SUMTI,SUMTI_IS_A_THING_ID,SUMTI_IS_A_THING_CHANGED_REPR -GO1_SUMTI,GO_ID,GO_REPR -GO2_SUMTI,GO2_ID,GO_REPR +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 From fea28763cf3a071cc2afe6e859df92f2e0b6de11 Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Mon, 13 Oct 2025 06:27:53 +0200 Subject: [PATCH 09/10] generating FindAllByRepresentationServiceStub, FindAllIdByRepresentationServiceStub closes: #39,47 --- .../inez/GeneratorPatternConstants.java | 8 +++++ ...lByRepresentationServiceStubGenerator.java | 26 +++++++++++++++ ...dByRepresentationServiceStubGenerator.java | 28 ++++++++++++++++ .../magwas/inez/query/QueryProcessorTest.java | 32 ++++++++++++------- .../inez/storage/BridiStoreEndToEndTest.java | 22 +++++++------ .../CreateBridiFromSumtiServiceStub.java | 8 +++-- .../FindAllByRepresentationServiceStub.java | 20 ------------ .../storage/FindAllByRepresentationTest.java | 3 +- .../FindAllIdByRepresentationServiceStub.java | 23 ------------- .../storage/FindBridiByIdServiceStub.java | 17 ++++++---- inez.model.tests/src/main/resources/bridies | 2 +- .../src/main/resources/byrepresentation | 5 +++ inez.parser.tests/src/main/resources/ids | 1 + 13 files changed, 120 insertions(+), 75 deletions(-) create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStubGenerator.java create mode 100644 inez.model.tests/src/generators-java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStubGenerator.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java delete mode 100644 inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllIdByRepresentationServiceStub.java create mode 100644 inez.model.tests/src/main/resources/byrepresentation 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 index eebacb6..8252cc2 100644 --- 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 @@ -35,5 +35,13 @@ public interface GeneratorPatternConstants { 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/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/main/java/io/github/magwas/inez/query/QueryProcessorTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/query/QueryProcessorTest.java index 349877f..fb1ccd8 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 @@ -31,70 +31,78 @@ void test() { @Test @DisplayName("for an existing sumti returns the sumti") void test_1() { - TestUtil.assertStreamEquals(Set.of(THING), queryProcessor.apply(THING_REPR)); + TestUtil.assertStreamEquals(Set.of(THING), + queryProcessor.apply(THING_REPR)); } @Test @DisplayName("if more sumtis exist with the representation, return them all") void test_2() { - TestUtil.assertStreamEquals(Set.of(GO1, GO2), queryProcessor.apply(GO_REPR)); + TestUtil.assertStreamEquals(Set.of(GO, GO2), queryProcessor.apply(GO_REPR)); } @Test @DisplayName("for a reference, return the referenced bridi") void test_3() { LogUtil.addDebuggedClass(QueryProcessorService.class); - TestUtil.assertStreamEquals(Set.of(GO1), queryProcessor.apply(GO1_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(GO), + queryProcessor.apply(GO1_REFERENCE)); } @Test @DisplayName("for a reference to a nonexisting bridi, return an empty list") void test_5() { - TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(NONEXISTENT_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(), + queryProcessor.apply(NONEXISTENT_REFERENCE)); } @Test @DisplayName("for a bridi with the matching representation returns it") void test_4() { - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), queryProcessor.apply(SUMTI_IS_A_THING_REPR)); + TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), + queryProcessor.apply(SUMTI_IS_A_THING_REPR)); } @Test @DisplayName("for a bridi where the representation does not match, but the selbri and sumties do, finds it") void test_6() { - TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); + TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), + queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); } @Test @DisplayName("'$?' returns a list of the any sumti") void test_7() { - TestUtil.assertStreamEquals(Set.of(ANY), queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); + TestUtil.assertStreamEquals(Set.of(ANY), + queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); } @Test @DisplayName("for a bridi where one of the sumties is '$?', the matching bridies return") void test1() { - TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(SIMPLE_INPUT)); + TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, + queryProcessor.apply(SIMPLE_INPUT)); } @Test @DisplayName("for a bridi where all of the sumties is '$?', a ParseCancellationException is thrown") void test1_1() { - assertThrows( - ParseCancellationException.class, + assertThrows(ParseCancellationException.class, () -> 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(NONMATCHING_INPUT)); + 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_INPUT); - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING), actual); + 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/storage/BridiStoreEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java index ede34b5..3bc7833 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 @@ -32,25 +32,29 @@ class BridiStoreEndToEndTest implements QueryProcessorTestData, BridiTestData { @Test void test() { inez.create(TEST_TEXT).toArray(); - assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); + assertEquals(List.of(ALICE), + inez.findAllByRepresentation("alice").toList()); - inez.save(Set.of(GO1, GO2)); + 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)); - Bridi ceclie_looks_at_banana = - assertGotTheBridi(CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); + Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, + inez.query(CECILE_EATS_BANANA_REPR)); + Bridi ceclie_looks_at_banana = assertGotTheBridi( + CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); TestUtil.assertStreamEquals( - Set.of(cecile_eats_banana, ceclie_looks_at_banana), inez.query("{cecile} {{$?} {banana}}")); + Set.of(cecile_eats_banana, ceclie_looks_at_banana), + inez.query("{cecile} {{$?} {banana}}")); - Bridi looks_at_banana = - inez.findById(ceclie_looks_at_banana.references().get(2)).get(); + Bridi looks_at_banana = inez + .findById(ceclie_looks_at_banana.references().get(2)).get(); Bridi looks_at = inez.findById(looks_at_banana.references().get(1)).get(); assertEquals("looks at", looks_at.representation()); } - private Bridi assertGotTheBridi(final String expected, final Stream actual) { + private Bridi assertGotTheBridi(final String expected, + final Stream actual) { List actualList = actual.toList(); assertEquals(1, actualList.size()); Bridi bridi = actualList.get(0); 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 145a99a..eae3e6b 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 @@ -6,13 +6,15 @@ import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.storage.model.SumtiTestData; -public class CreateBridiFromSumtiServiceStub implements BridiTestData, SumtiTestData { +public class CreateBridiFromSumtiServiceStub + implements BridiTestData, SumtiTestData { public static CreateBridiFromSumtiService stub() { CreateBridiFromSumtiService mock = mock(CreateBridiFromSumtiService.class); 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_CHANGED_SUMTI)) + .thenReturn(SUMTI_IS_A_THING_CHANGED); when(mock.apply(SUMTI_IS_A_THING_SUMTI)).thenReturn(SUMTI_IS_A_THING); - when(mock.apply(GO_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/FindAllByRepresentationServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindAllByRepresentationServiceStub.java deleted file mode 100644 index fb15832..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_REPR)).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 fe7de14..fe66dca 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,6 +20,7 @@ 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_REPR).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 cbefecf..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_REPR)).thenAnswer((args) -> Stream.of(GO_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/FindBridiByIdServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java index 93516e2..3d8a8c6 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,19 +11,24 @@ public class FindBridiByIdServiceStub implements BridiTestData { public static FindBridiByIdService stub() { FindBridiByIdService mock = mock(FindBridiByIdService.class); - when(mock.apply(GO_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)); + 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)); when(mock.apply(THING_ID)).thenReturn(Optional.of(THING)); when(mock.apply("thung")).thenReturn(Optional.of(THING_CHANGED)); when(mock.apply(SUMTI_ID)).thenReturn(Optional.of(SUMTI)); when(mock.apply(BRIDI_ID)).thenReturn(Optional.of(BRIDI)); when(mock.apply(IS_A_ID)).thenReturn(Optional.of(IS_A)); - when(mock.apply(ParserConstants.QUERY_BRIDI_ID)).thenReturn(Optional.of(ANY)); - when(mock.apply(SUMTI_IS_A_THING_ID)).thenReturn(Optional.of(SUMTI_IS_A_THING)); + when(mock.apply(ParserConstants.QUERY_BRIDI_ID)) + .thenReturn(Optional.of(ANY)); + when(mock.apply(SUMTI_IS_A_THING_ID)) + .thenReturn(Optional.of(SUMTI_IS_A_THING)); when(mock.apply(TAUTOLOGY_ID)).thenReturn(Optional.of(TAUTOLOGY)); - when(mock.apply(THING_IS_A_SUMTI_ID)).thenReturn(Optional.of(THING_IS_A_SUMTI)); + when(mock.apply(THING_IS_A_SUMTI_ID)) + .thenReturn(Optional.of(THING_IS_A_SUMTI)); when(mock.apply(GOD_ID)).thenReturn(Optional.of(GOD)); when(mock.apply(HUMAN_ID)).thenReturn(Optional.of(HUMAN)); when(mock.apply(MY_MODEL_ID)).thenReturn(Optional.of(MY_MODEL)); diff --git a/inez.model.tests/src/main/resources/bridies b/inez.model.tests/src/main/resources/bridies index ccb38c2..1cad13f 100644 --- a/inez.model.tests/src/main/resources/bridies +++ b/inez.model.tests/src/main/resources/bridies @@ -1,5 +1,5 @@ ALICE,IdUtil.createID(ALICE_REPR),ALICE_REPR,List.of() -GO1,GO_ID,GO_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 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.parser.tests/src/main/resources/ids b/inez.parser.tests/src/main/resources/ids index f61a9d3..772e21e 100644 --- a/inez.parser.tests/src/main/resources/ids +++ b/inez.parser.tests/src/main/resources/ids @@ -9,3 +9,4 @@ CONTAINS,CONTAINS ROOT,ROOT CONTAINER,CONTAINER STUFF_COULDBE_THING,STUFF_COULDBE_THING +ANY,? \ No newline at end of file From 88065d71dafce59d2ac414b84c4ce551639a347b Mon Sep 17 00:00:00 2001 From: Arpad Magosanyi Date: Mon, 13 Oct 2025 06:35:58 +0200 Subject: [PATCH 10/10] fixup: formatting, review suggestions --- .../magwas/inez/query/QueryProcessorTest.java | 30 +++++++------------ .../inez/query/QueryProcessorTestData.java | 25 +++++++++------- .../inez/storage/BridiStoreEndToEndTest.java | 20 +++++-------- .../CreateBridiFromSumtiServiceStub.java | 6 ++-- .../storage/FindAllByRepresentationTest.java | 3 +- .../storage/FindBridiByIdServiceStub.java | 15 ++++------ inez.model.tests/src/main/resources/bridies | 2 +- .../CreateBridisFromParserOutputService.java | 20 +++++-------- .../magwas/inez/parse/ParseTextTest.java | 2 ++ inez.parser.tests/src/main/resources/ids | 2 +- 10 files changed, 54 insertions(+), 71 deletions(-) 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 fb1ccd8..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 @@ -31,8 +31,7 @@ void test() { @Test @DisplayName("for an existing sumti returns the sumti") void test_1() { - TestUtil.assertStreamEquals(Set.of(THING), - queryProcessor.apply(THING_REPR)); + TestUtil.assertStreamEquals(Set.of(THING), queryProcessor.apply(THING_REPR)); } @Test @@ -45,64 +44,57 @@ void test_2() { @DisplayName("for a reference, return the referenced bridi") void test_3() { LogUtil.addDebuggedClass(QueryProcessorService.class); - TestUtil.assertStreamEquals(Set.of(GO), - queryProcessor.apply(GO1_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(GO), queryProcessor.apply(GO1_REFERENCE)); } @Test @DisplayName("for a reference to a nonexisting bridi, return an empty list") void test_5() { - TestUtil.assertStreamEquals(Set.of(), - queryProcessor.apply(NONEXISTENT_REFERENCE)); + TestUtil.assertStreamEquals(Set.of(), queryProcessor.apply(NONEXISTENT_REFERENCE)); } @Test @DisplayName("for a bridi with the matching representation returns it") void test_4() { - TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), - queryProcessor.apply(SUMTI_IS_A_THING_REPR)); + TestUtil.assertStreamEquals(Set.of(SUMTI_IS_A_THING), queryProcessor.apply(SUMTI_IS_A_THING_REPR)); } @Test @DisplayName("for a bridi where the representation does not match, but the selbri and sumties do, finds it") void test_6() { - TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), - queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); + TestUtil.assertStreamEquals(Set.of(TAUTOLOGY), queryProcessor.apply(TAUTOLOGY_GENERATED_REPR)); } @Test @DisplayName("'$?' returns a list of the any sumti") void test_7() { - TestUtil.assertStreamEquals(Set.of(ANY), - queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); + TestUtil.assertStreamEquals(Set.of(ANY), queryProcessor.apply(ParserConstants.QUERY_BRIDI_ID)); } @Test @DisplayName("for a bridi where one of the sumties is '$?', the matching bridies return") void test1() { - TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, - queryProcessor.apply(SIMPLE_INPUT)); + TestUtil.assertStreamEquals(SIMPLE_QUERY_OUTPUT, queryProcessor.apply(SIMPLE_INPUT)); } @Test @DisplayName("for a bridi where all of the sumties is '$?', a ParseCancellationException is thrown") void test1_1() { - assertThrows(ParseCancellationException.class, + assertThrows( + ParseCancellationException.class, () -> 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(NONMATCHING_INPUT)); + 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_INPUT); - TestUtil.assertStreamEquals( - Set.of(SUMTI_IS_A_THING_IS_A_THING, TAUTOLOGY_IS_A_THING), actual); + 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 index 3bbd11b..75cc7cd 100644 --- 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 @@ -6,15 +6,20 @@ 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_NOREFERENCE_REPR + "\n" - + TAUTOLOGY_IS_A_THING_REPR + "\n" + ALICE_EATS_BANANA_REPR + "\n" - + ALICE_EATS_CHIPS_REPR + "\n" + BOB_EATS_BANANA_REPR + "\n" - + BOB_EATS_CHIPS_REPR + "\n" + CECILE_EATS_BANANA_REPR + "\n" - + CECILE_LOOKS_AT_BANANA_REPR + "\n" + SUMTI_IS_A_THING_REPR + "\n" - + TAUTOLOGY_GENERATED_REPR; - +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); + 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/BridiStoreEndToEndTest.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/BridiStoreEndToEndTest.java index 3bc7833..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 @@ -32,29 +32,25 @@ class BridiStoreEndToEndTest implements QueryProcessorTestData, BridiTestData { @Test void test() { inez.create(TEST_TEXT).toArray(); - assertEquals(List.of(ALICE), - inez.findAllByRepresentation("alice").toList()); + assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); 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)); - Bridi ceclie_looks_at_banana = assertGotTheBridi( - CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); + Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, inez.query(CECILE_EATS_BANANA_REPR)); + Bridi ceclie_looks_at_banana = + assertGotTheBridi(CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); TestUtil.assertStreamEquals( - Set.of(cecile_eats_banana, ceclie_looks_at_banana), - inez.query("{cecile} {{$?} {banana}}")); + Set.of(cecile_eats_banana, ceclie_looks_at_banana), inez.query("{cecile} {{$?} {banana}}")); - Bridi looks_at_banana = inez - .findById(ceclie_looks_at_banana.references().get(2)).get(); + Bridi looks_at_banana = + inez.findById(ceclie_looks_at_banana.references().get(2)).get(); Bridi looks_at = inez.findById(looks_at_banana.references().get(1)).get(); assertEquals("looks at", looks_at.representation()); } - private Bridi assertGotTheBridi(final String expected, - final Stream actual) { + private Bridi assertGotTheBridi(final String expected, final Stream actual) { List actualList = actual.toList(); assertEquals(1, actualList.size()); Bridi bridi = actualList.get(0); 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 eae3e6b..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 @@ -6,13 +6,11 @@ import io.github.magwas.inez.BridiTestData; import io.github.magwas.inez.storage.model.SumtiTestData; -public class CreateBridiFromSumtiServiceStub - implements BridiTestData, SumtiTestData { +public class CreateBridiFromSumtiServiceStub implements BridiTestData, SumtiTestData { public static CreateBridiFromSumtiService stub() { CreateBridiFromSumtiService mock = mock(CreateBridiFromSumtiService.class); 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_CHANGED_SUMTI)).thenReturn(SUMTI_IS_A_THING_CHANGED); when(mock.apply(SUMTI_IS_A_THING_SUMTI)).thenReturn(SUMTI_IS_A_THING); when(mock.apply(GO_SUMTI)).thenReturn(GO); when(mock.apply(GO2_SUMTI)).thenReturn(GO2); 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 fe66dca..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,7 +20,6 @@ class FindAllByRepresentationTest extends TestBase implements BridiTestData { @Test @DisplayName("finds all bridis based on a representation") void test() { - assertEquals(Set.of(GO, GO2), - findAllByRepresentation.apply(GO_REPR).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/FindBridiByIdServiceStub.java b/inez.model.tests/src/main/java/io/github/magwas/inez/storage/FindBridiByIdServiceStub.java index 3d8a8c6..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 @@ -13,22 +13,17 @@ public static FindBridiByIdService stub() { FindBridiByIdService mock = mock(FindBridiByIdService.class); 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)); + 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)); when(mock.apply(THING_ID)).thenReturn(Optional.of(THING)); when(mock.apply("thung")).thenReturn(Optional.of(THING_CHANGED)); when(mock.apply(SUMTI_ID)).thenReturn(Optional.of(SUMTI)); when(mock.apply(BRIDI_ID)).thenReturn(Optional.of(BRIDI)); when(mock.apply(IS_A_ID)).thenReturn(Optional.of(IS_A)); - when(mock.apply(ParserConstants.QUERY_BRIDI_ID)) - .thenReturn(Optional.of(ANY)); - when(mock.apply(SUMTI_IS_A_THING_ID)) - .thenReturn(Optional.of(SUMTI_IS_A_THING)); + when(mock.apply(ParserConstants.QUERY_BRIDI_ID)).thenReturn(Optional.of(ANY)); + when(mock.apply(SUMTI_IS_A_THING_ID)).thenReturn(Optional.of(SUMTI_IS_A_THING)); when(mock.apply(TAUTOLOGY_ID)).thenReturn(Optional.of(TAUTOLOGY)); - when(mock.apply(THING_IS_A_SUMTI_ID)) - .thenReturn(Optional.of(THING_IS_A_SUMTI)); + when(mock.apply(THING_IS_A_SUMTI_ID)).thenReturn(Optional.of(THING_IS_A_SUMTI)); when(mock.apply(GOD_ID)).thenReturn(Optional.of(GOD)); when(mock.apply(HUMAN_ID)).thenReturn(Optional.of(HUMAN)); when(mock.apply(MY_MODEL_ID)).thenReturn(Optional.of(MY_MODEL)); diff --git a/inez.model.tests/src/main/resources/bridies b/inez.model.tests/src/main/resources/bridies index 1cad13f..380949a 100644 --- a/inez.model.tests/src/main/resources/bridies +++ b/inez.model.tests/src/main/resources/bridies @@ -19,4 +19,4 @@ 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() \ No newline at end of file +MY_MODEL,MY_MODEL_ID,MY_MODEL_REPR,List.of() 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 34a1769..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 @@ -18,8 +18,7 @@ import io.github.magwas.inez.storage.repository.SumtiRepository; @Service -public class CreateBridisFromParserOutputService - implements Function> { +public class CreateBridisFromParserOutputService implements Function> { @Autowired SumtiRepository sumtiRepository; @@ -31,8 +30,7 @@ public Stream apply(final ParserOutput parserOutput) { return apply(top, refMap); } - private Stream apply(final String top, - final Map> refMap) { + private Stream apply(final String top, final Map> refMap) { debug("apply(", top, refMap); if (!refMap.containsKey(top)) { Bridi bridi = new Bridi(getIdOrRepr(top), top, List.of()); @@ -40,22 +38,20 @@ private Stream apply(final String top, return Stream.of(bridi); } List partList = refMap.get(top); - return Stream - .of(new Bridi(getIdOrRepr(top), top, + return Stream.of(new Bridi( + getIdOrRepr(top), + top, partList.stream().map(this::getIdOrRepr).toList())) .mapMulti((topBridi, consumer) -> { consumer.accept(topBridi); - partList.stream().map(x -> apply(x, refMap)).flatMap(x -> x) - .forEach(consumer::accept); + partList.stream().map(x -> apply(x, refMap)).flatMap(x -> x).forEach(consumer::accept); }); } private String getIdOrRepr(final String top) { Set candidates = sumtiRepository.findAllByRepresentation(top); - if (candidates.isEmpty()) - return IdUtil.createID(top); - if (candidates.size() > 1) - System.err.println("multiple candidates for " + top + ":" + candidates); + if (candidates.isEmpty()) return IdUtil.createID(top); + if (candidates.size() > 1) System.err.println("multiple candidates for " + top + ":" + candidates); return candidates.iterator().next().id(); } } 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 f85fdc7..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 diff --git a/inez.parser.tests/src/main/resources/ids b/inez.parser.tests/src/main/resources/ids index 772e21e..6da9c53 100644 --- a/inez.parser.tests/src/main/resources/ids +++ b/inez.parser.tests/src/main/resources/ids @@ -9,4 +9,4 @@ CONTAINS,CONTAINS ROOT,ROOT CONTAINER,CONTAINER STUFF_COULDBE_THING,STUFF_COULDBE_THING -ANY,? \ No newline at end of file +ANY,?