blob: 1a4ed72daae64197096fbc466f43c043ada8ed25 [file] [log] [blame]
margaretha3827d532022-01-31 14:41:55 +01001package de.ids_mannheim.korap.search;
2
3import static org.junit.Assert.assertEquals;
4
5import java.io.IOException;
6import java.io.InputStream;
7
8import org.apache.commons.io.IOUtils;
9import org.junit.Test;
10
11import com.fasterxml.jackson.databind.JsonNode;
margarethaa4d543d2022-02-04 09:27:35 +010012import com.fasterxml.jackson.databind.ObjectMapper;
margaretha3827d532022-01-31 14:41:55 +010013
14import de.ids_mannheim.korap.Krill;
15import de.ids_mannheim.korap.KrillIndex;
16import de.ids_mannheim.korap.index.FieldDocument;
17import de.ids_mannheim.korap.response.Response;
18
19public class TestVcField {
20 private KrillIndex ki;
margarethaa4d543d2022-02-04 09:27:35 +010021 private ObjectMapper mapper = new ObjectMapper();
margaretha3827d532022-01-31 14:41:55 +010022
23 private FieldDocument createFieldDoc (int uid, String textSigle) {
24 FieldDocument fd = new FieldDocument();
25 fd.addString("textSigle", textSigle);
26 fd.setUID(uid);
27 return fd;
margaretha3827d532022-01-31 14:41:55 +010028 }
29
30
31 public TestVcField () throws IOException {
32 ki = new KrillIndex();
33 ki.addDoc(createFieldDoc(1, "WPD/AAA/00001"));
margarethaa4d543d2022-02-04 09:27:35 +010034
margaretha3827d532022-01-31 14:41:55 +010035 FieldDocument fd = createFieldDoc(2, "WPD/AAA/00002");
36 fd.addString("author", "Frank");
margarethaa4d543d2022-02-04 09:27:35 +010037 fd.addString("quote", "The \"quoted\" example");
38 fd.addString("empty", "");
margaretha3827d532022-01-31 14:41:55 +010039 ki.addDoc(fd);
margarethaa4d543d2022-02-04 09:27:35 +010040
margaretha3827d532022-01-31 14:41:55 +010041 fd = createFieldDoc(3, "WPD/AAA/00003");
42 fd.addTV("tokens", "a b c", "[(0-1)s:a|i:a|_0$<i>0<i>1|-:t$<i>3]"
43 + "[(2-3)s:b|i:b|_1$<i>2<i>3]" + "[(4-5)s:c|i:c|_2$<i>4<i>5]");
44 ki.addDoc(fd);
margarethaa4d543d2022-02-04 09:27:35 +010045
margaretha3827d532022-01-31 14:41:55 +010046 ki.addDoc(createFieldDoc(4, "WPD/AAA/00004"));
47 ki.commit();
48 ki.addDoc(createFieldDoc(5, "WPD/AAA/00005"));
49 ki.addDoc(createFieldDoc(6, "WPD/AAA/00006"));
50 ki.commit();
51 }
52
53
54 private String getJsonResource (String file) throws IOException {
55 InputStream is = TestVcField.class.getResourceAsStream(file);
56 return IOUtils.toString(is, "utf-8");
57 }
58
59
60 @Test
61 public void testRetrieveTextSiglesOfVc1 () throws IOException {
62
63 String file = "/queries/collections/named-vcs/named-vc1.jsonld";
64 String json = getJsonResource(file);
65 JsonNode n = new Krill().retrieveFieldValues(json, ki, "textSigle");
66
margaretha3827d532022-01-31 14:41:55 +010067 assertEquals(Response.KORAL_VERSION, n.at("/@context").asText());
68 assertEquals("koral:doc", n.at("/corpus/@type").asText());
69 assertEquals("textSigle", n.at("/corpus/key").asText());
70 assertEquals("type:string", n.at("/corpus/type").asText());
margaretha3827d532022-01-31 14:41:55 +010071
margarethaa4d543d2022-02-04 09:27:35 +010072 assertEquals("[\"WPD/AAA/00002\",\"WPD/AAA/00003\"]",
73 n.at("/corpus/value").toString());
74
margaretha3827d532022-01-31 14:41:55 +010075 testRetrieveAuthorOfVc1(json);
76 testRetrieveTokensOfVc1(json);
margarethaa4d543d2022-02-04 09:27:35 +010077 testRetrieveNullOfVc1(json);
78 testRetrieveQuoteOfVc1(json);
79 testRetrieveEmptyOfVc1(json);
margaretha3827d532022-01-31 14:41:55 +010080 }
81
82
83 private void testRetrieveAuthorOfVc1 (String json) {
84 JsonNode n = new Krill().retrieveFieldValues(json, ki, "author");
85 assertEquals("author", n.at("/corpus/key").asText());
margarethaa4d543d2022-02-04 09:27:35 +010086 assertEquals("[\"Frank\"]", n.at("/corpus/value").toString());
margaretha3827d532022-01-31 14:41:55 +010087 }
88
89
90 private void testRetrieveTokensOfVc1 (String json) {
91 JsonNode n = new Krill().retrieveFieldValues(json, ki, "tokens");
92 assertEquals("tokens", n.at("/corpus/key").asText());
margarethada237c92022-02-07 11:07:37 +010093 assertEquals("[]", n.at("/corpus/value").toString());
margarethaa4d543d2022-02-04 09:27:35 +010094 }
95
96 private void testRetrieveNullOfVc1 (String json) {
97 JsonNode n = new Krill().retrieveFieldValues(json, ki, "hello");
98 assertEquals("hello", n.at("/corpus/key").asText());
99 assertEquals("[]", n.at("/corpus/value").toString());
100 }
101
102 private void testRetrieveQuoteOfVc1 (String json) {
103 JsonNode n = new Krill().retrieveFieldValues(json, ki, "quote");
104 assertEquals("quote", n.at("/corpus/key").asText());
105 assertEquals("[\"The \\\"quoted\\\" example\"]", n.at("/corpus/value").toString());
106 }
107
108 private void testRetrieveEmptyOfVc1 (String json) {
109 JsonNode n = new Krill().retrieveFieldValues(json, ki, "empty");
110 assertEquals("empty", n.at("/corpus/key").asText());
111 assertEquals("[]", n.at("/corpus/value").toString());
margaretha3827d532022-01-31 14:41:55 +0100112 }
113
114
115 @Test
116 public void testRetrieveTextSiglesOfVc3 () throws IOException {
117 // uid 5000 is not in the index
118 String file = "/queries/collections/named-vcs/named-vc3.jsonld";
119 JsonNode n = new Krill().retrieveFieldValues(getJsonResource(file), ki,
120 "textSigle");
margarethaa4d543d2022-02-04 09:27:35 +0100121
122 n = mapper.readTree(n.at("/corpus/value").toString());
123 assertEquals(2, n.size());
124 assertEquals("WPD/AAA/00002", n.at("/0").asText());
125 assertEquals("WPD/AAA/00003", n.at("/1").asText());
margaretha3827d532022-01-31 14:41:55 +0100126 }
127
128
129 @Test
130 public void testRetrieveTextSiglesOfVc4 () throws IOException {
131
132 String file = "/queries/collections/named-vcs/named-vc4.jsonld";
133 JsonNode n = new Krill().retrieveFieldValues(getJsonResource(file), ki,
134 "textSigle");
margarethaa4d543d2022-02-04 09:27:35 +0100135 n = mapper.readTree(n.at("/corpus/value").toString());
136 assertEquals(3, n.size());
137 assertEquals("WPD/AAA/00001", n.at("/0").asText());
138 assertEquals("WPD/AAA/00002", n.at("/1").asText());
139 assertEquals("WPD/AAA/00003", n.at("/2").asText()); }
margaretha3827d532022-01-31 14:41:55 +0100140}