blob: 98828da7726b6467b9a477875dbabd602081c932 [file] [log] [blame]
Michael Hanldaf86602016-05-12 14:31:52 +02001package de.ids_mannheim.korap.resource.rewrite;
2
margarethaf68daa62017-09-21 02:11:24 +02003import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertNotNull;
6import static org.junit.Assert.assertTrue;
7
8import org.junit.Ignore;
9import org.junit.Test;
10
Michael Hanl1e18cb42015-08-06 20:57:35 +020011import com.fasterxml.jackson.databind.JsonNode;
margarethaf68daa62017-09-21 02:11:24 +020012
13import de.ids_mannheim.korap.config.Attributes;
Michael Hanldaf86602016-05-12 14:31:52 +020014import de.ids_mannheim.korap.config.BeanConfigTest;
15import de.ids_mannheim.korap.config.BeansFactory;
16import de.ids_mannheim.korap.config.ContextHolder;
Michael Hanl1e18cb42015-08-06 20:57:35 +020017import de.ids_mannheim.korap.config.KustvaktConfiguration;
Michael Hanldaf86602016-05-12 14:31:52 +020018import de.ids_mannheim.korap.exceptions.KustvaktException;
19import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
Michael Hanlbadd79c2015-06-19 07:41:03 +020020import de.ids_mannheim.korap.query.serialize.QuerySerializer;
21import de.ids_mannheim.korap.resource.LayerMapper;
Michael Hanldaf86602016-05-12 14:31:52 +020022import de.ids_mannheim.korap.user.User;
23import de.ids_mannheim.korap.user.UserSettings;
Michael Hanl1e18cb42015-08-06 20:57:35 +020024import de.ids_mannheim.korap.utils.JsonUtils;
Michael Hanldaf86602016-05-12 14:31:52 +020025
Michael Hanl704211e2015-06-19 07:26:04 +020026/**
27 * @author hanl
28 * @date 18/06/2015
29 */
Michael Hanle56bb892016-05-25 17:34:41 +020030//todo: check position and information of rewrites!
Michael Hanldaf86602016-05-12 14:31:52 +020031public class FoundryRewriteTest extends BeanConfigTest {
Michael Hanlbadd79c2015-06-19 07:41:03 +020032
33 private static String simple_add_query = "[pos=ADJA]";
34 private static String simple_rewrite_query = "[base=Haus]";
35 private static String complex_rewrite_query = "<c=INFC>";
36 private static String complex_rewrite_query2 = "[orth=laufe/i & base!=Lauf]";
Michael Hanl378af4a2015-06-19 08:03:55 +020037 private static String complex_rewrite_query3 = "[(base=laufen | base=gehen) & tt/pos=VVFIN]";
Michael Hanlbadd79c2015-06-19 07:41:03 +020038
Michael Hanl1e18cb42015-08-06 20:57:35 +020039 private static KustvaktConfiguration config;
Michael Hanlbadd79c2015-06-19 07:41:03 +020040
Michael Hanl8abaf9e2016-05-23 16:46:35 +020041
Michael Hanldaf86602016-05-12 14:31:52 +020042 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020043 public void initMethod () throws KustvaktException {
Michael Hanldaf86602016-05-12 14:31:52 +020044 config = helper().getContext().getConfiguration();
margaretha843c4632017-10-25 19:16:12 +020045// helper().setupAccount();
Michael Hanlbadd79c2015-06-19 07:41:03 +020046 }
47
Michael Hanl8abaf9e2016-05-23 16:46:35 +020048
Michael Hanlbadd79c2015-06-19 07:41:03 +020049 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +020050 public void testDefaultLayerMapperThrowsNoException () {
Michael Hanl1e18cb42015-08-06 20:57:35 +020051 LayerMapper m = new LayerMapper(config);
52
Michael Hanldaf86602016-05-12 14:31:52 +020053 assertEquals(config.getDefault_lemma(), m.findFoundry("lemma"));
54 assertEquals(config.getDefault_pos(), m.findFoundry("pos"));
55 assertEquals(config.getDefault_token(), m.findFoundry("surface"));
56 assertEquals(config.getDefault_dep(), m.findFoundry("d"));
57 assertEquals(config.getDefault_const(), m.findFoundry("c"));
Michael Hanlbadd79c2015-06-19 07:41:03 +020058 }
59
Michael Hanldaf86602016-05-12 14:31:52 +020060
margaretha843c4632017-10-25 19:16:12 +020061 @Ignore
62 @Deprecated
Michael Hanl8abaf9e2016-05-23 16:46:35 +020063 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +020064 public void testDefaultFoundryInjectLemmaThrowsNoError ()
65 throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +020066
67 KustvaktConfiguration c = helper().getBean(
68 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +020069
70 RewriteHandler processor = new RewriteHandler();
71 processor.insertBeans(helper().getContext());
72 processor.add(FoundryInject.class);
Michael Hanlbadd79c2015-06-19 07:41:03 +020073 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +020074 s.setQuery("[base=Haus]", "poliqarp");
Michael Hanl33829ec2016-05-28 17:03:38 +020075 String result = processor.processQuery(s.toJSON(), null);
Michael Hanldaf86602016-05-12 14:31:52 +020076 JsonNode node = JsonUtils.readTree(result);
Michael Hanldaf86602016-05-12 14:31:52 +020077 assertNotNull(node);
78 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020079 assertEquals(c.getDefault_lemma(), node.at("/query/wrap/foundry")
80 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +020081 assertEquals("lemma", node.at("/query/wrap/layer").asText());
82 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020083 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
84 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +020085 }
86
Michael Hanldaf86602016-05-12 14:31:52 +020087
Michael Hanl8abaf9e2016-05-23 16:46:35 +020088 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +020089 public void testDefaultFoundryInjectPOSNoErrors () throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +020090
91 KustvaktConfiguration c = helper().getBean(
92 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +020093
94 QuerySerializer s = new QuerySerializer();
95 RewriteHandler handler = new RewriteHandler();
96 handler.insertBeans(helper().getContext());
Michael Hanl1e18cb42015-08-06 20:57:35 +020097 s.setQuery("[pos=ADJA]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +020098 assertTrue(handler.add(FoundryInject.class));
Michael Hanl33829ec2016-05-28 17:03:38 +020099 String result = handler.processQuery(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +0200100 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +0200101
Michael Hanldaf86602016-05-12 14:31:52 +0200102 assertNotNull(node);
103 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200104 assertEquals(c.getDefault_pos(), node.at("/query/wrap/foundry")
105 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200106 assertEquals("pos", node.at("/query/wrap/layer").asText());
107 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200108 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
109 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200110
111 }
112
margaretha38d530e2017-07-11 19:06:50 +0200113 // EM: Fix me usersetting
Michael Hanldaf86602016-05-12 14:31:52 +0200114 @Test
margaretha38d530e2017-07-11 19:06:50 +0200115 @Ignore
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200116 public void testRewriteFoundryInjectPOSThrowsNoError ()
Michael Hanldaf86602016-05-12 14:31:52 +0200117 throws KustvaktException {
118 User user = helper().getUser();
119
120 RewriteHandler handler = new RewriteHandler();
121 handler.insertBeans(helper().getContext());
122 handler.add(FoundryInject.class);
123 QuerySerializer s = new QuerySerializer();
124 s.setQuery("[pos=ADJA]", "poliqarp");
Michael Hanl33829ec2016-05-28 17:03:38 +0200125 String result = handler.processQuery(s.toJSON(), user);
Michael Hanldaf86602016-05-12 14:31:52 +0200126 JsonNode node = JsonUtils.readTree(result);
127
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200128 UserDataDbIface dao = BeansFactory.getTypeFactory()
129 .getTypeInterfaceBean(
130 helper().getContext().getUserDataProviders(),
131 UserSettings.class);
Michael Hanldaf86602016-05-12 14:31:52 +0200132 UserSettings settings = (UserSettings) dao.get(user);
133 assertTrue(settings.isValid());
134 String pos = (String) settings.get(Attributes.DEFAULT_POS_FOUNDRY);
135
136 assertNotNull(node);
137 assertEquals("pos", node.at("/query/wrap/layer").asText());
138 assertEquals(pos, node.at("/query/wrap/foundry").asText());
139 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200140 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
141 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200142 }
143
margaretha38d530e2017-07-11 19:06:50 +0200144 // EM: Fix me usersetting
Michael Hanldaf86602016-05-12 14:31:52 +0200145 @Test
margaretha38d530e2017-07-11 19:06:50 +0200146 @Ignore
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200147 public void testRewriteFoundryInjectLemmaThrowsNoError ()
Michael Hanldaf86602016-05-12 14:31:52 +0200148 throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200149 KustvaktConfiguration c = helper().getBean(
150 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +0200151 User user = helper().getUser();
152
153 RewriteHandler handler = new RewriteHandler();
154 handler.insertBeans(helper().getContext());
155 handler.add(FoundryInject.class);
156 QuerySerializer s = new QuerySerializer();
157 s.setQuery("[base=Haus]", "poliqarp");
Michael Hanl33829ec2016-05-28 17:03:38 +0200158 String result = handler.processQuery(s.toJSON(), user);
Michael Hanldaf86602016-05-12 14:31:52 +0200159 JsonNode node = JsonUtils.readTree(result);
160
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200161 UserDataDbIface dao = BeansFactory.getTypeFactory()
162 .getTypeInterfaceBean(
163 helper().getContext().getUserDataProviders(),
164 UserSettings.class);
Michael Hanldaf86602016-05-12 14:31:52 +0200165 UserSettings settings = (UserSettings) dao.get(user);
166 assertTrue(settings.isValid());
167 String lemma = (String) settings.get(Attributes.DEFAULT_LEMMA_FOUNDRY);
168
169 assertNotNull(node);
170 assertEquals("lemma", node.at("/query/wrap/layer").asText());
171 assertEquals(lemma, node.at("/query/wrap/foundry").asText());
172 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200173 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
174 .asText());
Michael Hanlbadd79c2015-06-19 07:41:03 +0200175 }
Michael Hanl1e18cb42015-08-06 20:57:35 +0200176
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200177
Michael Hanl1e18cb42015-08-06 20:57:35 +0200178 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200179 public void testFoundryInjectJoinedQueryNoErrors ()
180 throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200181 KustvaktConfiguration c = helper().getBean(
182 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +0200183
Michael Hanl1e18cb42015-08-06 20:57:35 +0200184 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +0200185 RewriteHandler handler = new RewriteHandler();
186 handler.insertBeans(helper().getContext());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200187 s.setQuery("[orth=laufe/i & base!=Lauf]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +0200188 assertTrue(handler.add(FoundryInject.class));
Michael Hanl33829ec2016-05-28 17:03:38 +0200189 String result = handler.processQuery(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +0200190 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +0200191
Michael Hanldaf86602016-05-12 14:31:52 +0200192 assertNotNull(node);
193 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
194 assertFalse(node.at("/query/wrap/operands/0/foundry").isMissingNode());
195 assertFalse(node.at("/query/wrap/operands/0/rewrites").isMissingNode());
196 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
197 assertFalse(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200198 }
199
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200200
Michael Hanl1e18cb42015-08-06 20:57:35 +0200201 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200202 public void testFoundryInjectGroupedQueryNoErrors ()
203 throws KustvaktException {
Michael Hanl1e18cb42015-08-06 20:57:35 +0200204 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +0200205 RewriteHandler handler = new RewriteHandler();
206 handler.insertBeans(helper().getContext());
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200207 s.setQuery("[(base=laufen | tt/pos=VVFIN)]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +0200208 assertTrue(handler.add(FoundryInject.class));
Michael Hanl33829ec2016-05-28 17:03:38 +0200209 String result = handler.processQuery(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +0200210 JsonNode node = JsonUtils.readTree(result);
margaretha23aae222017-12-22 15:08:23 +0100211// System.out.println("NODDE "+ node);
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200212 assertNotNull(node);
213 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
214 assertFalse(node.at("/query/wrap/operands/0/foundry")
215 .isMissingNode());
216 assertFalse(node.at("/query/wrap/operands/0/rewrites")
217 .isMissingNode());
218 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
219 assertTrue(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
220 }
Michael Hanl1e18cb42015-08-06 20:57:35 +0200221
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200222 @Test
223 @Ignore
224 public void testFoundyBaseRewrite() throws KustvaktException {
225 QuerySerializer s = new QuerySerializer();
226 RewriteHandler handler = new RewriteHandler();
227 handler.insertBeans(helper().getContext());
228 s.setQuery("[orth=laufen]", "poliqarp");
229 assertTrue(handler.add(FoundryInject.class));
230 String result = handler.processQuery(s.toJSON(), null);
231 JsonNode node = JsonUtils.readTree(result);
margaretha23aae222017-12-22 15:08:23 +0100232// System.out.println("NODDE "+ node);
Michael Hanldaf86602016-05-12 14:31:52 +0200233 assertNotNull(node);
234 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
235 assertFalse(node.at("/query/wrap/operands/0/operands/0/foundry")
236 .isMissingNode());
237 assertFalse(node.at("/query/wrap/operands/0/operands/0/rewrites")
238 .isMissingNode());
239 assertFalse(node.at("/query/wrap/operands/0/operands/1/foundry")
240 .isMissingNode());
241 assertFalse(node.at("/query/wrap/operands/0/operands/1/rewrites")
242 .isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200243
Michael Hanldaf86602016-05-12 14:31:52 +0200244 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
245 assertTrue(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200246 }
247
Michael Hanl704211e2015-06-19 07:26:04 +0200248}