1 package io.github.magwas.inez.query.tests; 2 3 import static org.junit.jupiter.api.Assertions.assertEquals; 4 5 import java.io.IOException; 6 import java.util.List; 7 import java.util.Set; 8 import java.util.stream.Collectors; 9 10 import org.junit.jupiter.api.BeforeEach; 11 import org.junit.jupiter.api.Tag; 12 import org.junit.jupiter.api.Test; 13 import org.junit.jupiter.api.extension.ExtendWith; 14 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.test.context.ContextConfiguration; 16 import org.springframework.test.context.junit.jupiter.SpringExtension; 17 18 import io.github.magwas.inez.Bridi; 19 import io.github.magwas.inez.InezImpl; 20 import io.github.magwas.inez.parse.tests.InputTestData; 21 import io.github.magwas.inez.query.GetServiceByNameService; 22 import io.github.magwas.inez.tests.BridiTestData; 23 import io.github.magwas.inez.tests.TestConfig; 24 import io.github.magwas.konveyor.runtime.LogUtil; 25 import io.github.magwas.konveyor.testing.TestUtil; 26 27 @Tag("end-to-end") 28 @ExtendWith(SpringExtension.class) 29 @ContextConfiguration(classes = TestConfig.class) 30 class QueryProcessorEndToEndTest implements QueryProcessorTestData, InputTestData, BridiTestData { 31 32 @Autowired 33 InezImpl inez; 34 35 @BeforeEach 36 void setUp() throws IOException { 37 inez.initialize(); 38 } 39 40 @Test 41 void test1() { 42 inez.create(TEST_TEXT).peek(x -> LogUtil.debug("created:" + x)).toList(); 43 assertEquals(List.of(ALICE), inez.findAllByRepresentation(ALICE_REPR).toList()); 44 assertQuery(Set.of(ALICE_REPR), ALICE_REPR); 45 assertQuery(Set.of(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR); 46 assertQuery( 47 Set.of(ALICE_EATS_BANANA_REPR, BOB_EATS_BANANA_REPR, CECILE_EATS_BANANA_REPR), WHO_EATS_BANANA_INPUT); 48 assertQuery(Set.of(CECILE_EATS_BANANA_REPR, CECILE_LOOKS_AT_BANANA_REPR), CECILE_WHAT_BANANA_INPUT); 49 assertQuery(Set.of(ALICE_EATS_BANANA_REPR, ALICE_EATS_CHIPS_REPR), ALICE_EATS_WHAT_INPUT); 50 LogUtil.addDebuggedClass(GetServiceByNameService.class); 51 assertQuery(Set.of(PUTTY_REPR), DO_SAVE_PUTTY_INPUT); 52 assertEquals(1, inez.findAllByRepresentation(PUTTY_REPR).count()); 53 List<Bridi> putty = inez.findAllByRepresentation(PUTTY_REPR).toList(); 54 assertQuery(Set.of(OSGI_REPR, BITCH_REPR, IS_A_REPR, OSGI_IS_A_BITCH_REPR), DO_SAVE_OSGI_IS_A_BITCH_INPUT); 55 assertEquals(1, inez.findAllByRepresentation(OSGI_REPR).count()); 56 assertEquals(1, inez.findAllByRepresentation(BITCH_REPR).count()); 57 assertEquals(1, putty.size()); 58 } 59 60 private Set<Bridi> assertQuery(final Set<String> expected, final String query) { 61 Set<Bridi> result = inez.query(query).collect(Collectors.toSet()); 62 Set<String> actual = 63 result.stream().map(bridi -> bridi.representation()).collect(Collectors.toSet()); 64 if (!expected.equals(actual)) { 65 System.out.println("actual:"); 66 actual.forEach(System.out::println); 67 System.out.println("expected:"); 68 expected.forEach(System.out::println); 69 TestUtil.diffCollections(expected, actual); 70 } 71 assertEquals(expected, actual); 72 return result; 73 } 74 }