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