blob: 032b9f71a4f747bfd9f6c237786acd9f878c943d [file] [log] [blame]
Michael Hanldaf86602016-05-12 14:31:52 +02001package de.ids_mannheim.korap.resource.rewrite;
2
Michael Hanl1e18cb42015-08-06 20:57:35 +02003import com.fasterxml.jackson.databind.JsonNode;
Michael Hanldaf86602016-05-12 14:31:52 +02004import de.ids_mannheim.korap.config.BeanConfigTest;
5import de.ids_mannheim.korap.config.BeansFactory;
6import de.ids_mannheim.korap.config.ContextHolder;
Michael Hanl1e18cb42015-08-06 20:57:35 +02007import de.ids_mannheim.korap.config.KustvaktConfiguration;
Michael Hanldaf86602016-05-12 14:31:52 +02008import de.ids_mannheim.korap.exceptions.KustvaktException;
9import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
Michael Hanlbadd79c2015-06-19 07:41:03 +020010import de.ids_mannheim.korap.query.serialize.QuerySerializer;
11import de.ids_mannheim.korap.resource.LayerMapper;
Michael Hanl00b64e02016-05-24 20:24:27 +020012import de.ids_mannheim.korap.config.Attributes;
Michael Hanldaf86602016-05-12 14:31:52 +020013import de.ids_mannheim.korap.user.User;
14import de.ids_mannheim.korap.user.UserSettings;
Michael Hanl1e18cb42015-08-06 20:57:35 +020015import de.ids_mannheim.korap.utils.JsonUtils;
Michael Hanlbadd79c2015-06-19 07:41:03 +020016import org.junit.Test;
17
Michael Hanldaf86602016-05-12 14:31:52 +020018import static org.junit.Assert.*;
19
Michael Hanl704211e2015-06-19 07:26:04 +020020/**
21 * @author hanl
22 * @date 18/06/2015
23 */
Michael Hanl1e18cb42015-08-06 20:57:35 +020024//todo: refactor and structure tests
Michael Hanldaf86602016-05-12 14:31:52 +020025public class FoundryRewriteTest extends BeanConfigTest {
Michael Hanlbadd79c2015-06-19 07:41:03 +020026
27 private static String simple_add_query = "[pos=ADJA]";
28 private static String simple_rewrite_query = "[base=Haus]";
29 private static String complex_rewrite_query = "<c=INFC>";
30 private static String complex_rewrite_query2 = "[orth=laufe/i & base!=Lauf]";
Michael Hanl378af4a2015-06-19 08:03:55 +020031 private static String complex_rewrite_query3 = "[(base=laufen | base=gehen) & tt/pos=VVFIN]";
Michael Hanlbadd79c2015-06-19 07:41:03 +020032
Michael Hanl1e18cb42015-08-06 20:57:35 +020033 private static KustvaktConfiguration config;
Michael Hanlbadd79c2015-06-19 07:41:03 +020034
Michael Hanl8abaf9e2016-05-23 16:46:35 +020035
Michael Hanldaf86602016-05-12 14:31:52 +020036 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020037 public void initMethod () throws KustvaktException {
Michael Hanldaf86602016-05-12 14:31:52 +020038 config = helper().getContext().getConfiguration();
39 helper().setupAccount();
Michael Hanlbadd79c2015-06-19 07:41:03 +020040 }
41
Michael Hanl8abaf9e2016-05-23 16:46:35 +020042
Michael Hanlbadd79c2015-06-19 07:41:03 +020043 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +020044 public void testDefaultLayerMapperThrowsNoException () {
Michael Hanl1e18cb42015-08-06 20:57:35 +020045 LayerMapper m = new LayerMapper(config);
46
Michael Hanldaf86602016-05-12 14:31:52 +020047 assertEquals(config.getDefault_lemma(), m.findFoundry("lemma"));
48 assertEquals(config.getDefault_pos(), m.findFoundry("pos"));
49 assertEquals(config.getDefault_token(), m.findFoundry("surface"));
50 assertEquals(config.getDefault_dep(), m.findFoundry("d"));
51 assertEquals(config.getDefault_const(), m.findFoundry("c"));
Michael Hanlbadd79c2015-06-19 07:41:03 +020052 }
53
Michael Hanldaf86602016-05-12 14:31:52 +020054
Michael Hanl8abaf9e2016-05-23 16:46:35 +020055 @Test
56 public void testDefaultFoundryInjectLemmaThrowsNoError () {
57
58 KustvaktConfiguration c = helper().getBean(
59 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +020060
61 RewriteHandler processor = new RewriteHandler();
62 processor.insertBeans(helper().getContext());
63 processor.add(FoundryInject.class);
Michael Hanlbadd79c2015-06-19 07:41:03 +020064 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +020065 s.setQuery("[base=Haus]", "poliqarp");
66 String result = processor.preProcess(s.toJSON(), null);
67 JsonNode node = JsonUtils.readTree(result);
68
69 assertNotNull(node);
70 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020071 assertEquals(c.getDefault_lemma(), node.at("/query/wrap/foundry")
72 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +020073 assertEquals("lemma", node.at("/query/wrap/layer").asText());
74 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020075 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
76 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +020077 }
78
Michael Hanldaf86602016-05-12 14:31:52 +020079
Michael Hanl8abaf9e2016-05-23 16:46:35 +020080 @Test
81 public void testDefaultFoundryInjectPOSNoErrors () {
82
83 KustvaktConfiguration c = helper().getBean(
84 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +020085
86 QuerySerializer s = new QuerySerializer();
87 RewriteHandler handler = new RewriteHandler();
88 handler.insertBeans(helper().getContext());
Michael Hanl1e18cb42015-08-06 20:57:35 +020089 s.setQuery("[pos=ADJA]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +020090 assertTrue(handler.add(FoundryInject.class));
Michael Hanlf0785322015-11-13 16:14:45 +010091 String result = handler.preProcess(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +020092 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +020093
Michael Hanldaf86602016-05-12 14:31:52 +020094 assertNotNull(node);
95 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020096 assertEquals(c.getDefault_pos(), node.at("/query/wrap/foundry")
97 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +020098 assertEquals("pos", node.at("/query/wrap/layer").asText());
99 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200100 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
101 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200102
103 }
104
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200105
Michael Hanldaf86602016-05-12 14:31:52 +0200106 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200107 public void testRewriteFoundryInjectPOSThrowsNoError ()
Michael Hanldaf86602016-05-12 14:31:52 +0200108 throws KustvaktException {
109 User user = helper().getUser();
110
111 RewriteHandler handler = new RewriteHandler();
112 handler.insertBeans(helper().getContext());
113 handler.add(FoundryInject.class);
114 QuerySerializer s = new QuerySerializer();
115 s.setQuery("[pos=ADJA]", "poliqarp");
116 String result = handler.preProcess(s.toJSON(), user);
117 JsonNode node = JsonUtils.readTree(result);
118
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200119 UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
120 helper().getContext().getUserDataDaos(), UserSettings.class);
Michael Hanldaf86602016-05-12 14:31:52 +0200121 UserSettings settings = (UserSettings) dao.get(user);
122 assertTrue(settings.isValid());
123 String pos = (String) settings.get(Attributes.DEFAULT_POS_FOUNDRY);
124
125 assertNotNull(node);
126 assertEquals("pos", node.at("/query/wrap/layer").asText());
127 assertEquals(pos, node.at("/query/wrap/foundry").asText());
128 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200129 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
130 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200131 }
132
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200133
Michael Hanldaf86602016-05-12 14:31:52 +0200134 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200135 public void testRewriteFoundryInjectLemmaThrowsNoError ()
Michael Hanldaf86602016-05-12 14:31:52 +0200136 throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200137 KustvaktConfiguration c = helper().getBean(
138 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +0200139 User user = helper().getUser();
140
141 RewriteHandler handler = new RewriteHandler();
142 handler.insertBeans(helper().getContext());
143 handler.add(FoundryInject.class);
144 QuerySerializer s = new QuerySerializer();
145 s.setQuery("[base=Haus]", "poliqarp");
146 String result = handler.preProcess(s.toJSON(), user);
147 JsonNode node = JsonUtils.readTree(result);
148
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200149 UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
150 helper().getContext().getUserDataDaos(), UserSettings.class);
Michael Hanldaf86602016-05-12 14:31:52 +0200151 UserSettings settings = (UserSettings) dao.get(user);
152 assertTrue(settings.isValid());
153 String lemma = (String) settings.get(Attributes.DEFAULT_LEMMA_FOUNDRY);
154
155 assertNotNull(node);
156 assertEquals("lemma", node.at("/query/wrap/layer").asText());
157 assertEquals(lemma, node.at("/query/wrap/foundry").asText());
158 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200159 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
160 .asText());
Michael Hanlbadd79c2015-06-19 07:41:03 +0200161 }
Michael Hanl1e18cb42015-08-06 20:57:35 +0200162
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200163
Michael Hanl1e18cb42015-08-06 20:57:35 +0200164 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200165 public void testFoundryInjectJoinedQueryNoErrors () {
166 KustvaktConfiguration c = helper().getBean(
167 ContextHolder.KUSTVAKT_CONFIG);
Michael Hanldaf86602016-05-12 14:31:52 +0200168
Michael Hanl1e18cb42015-08-06 20:57:35 +0200169 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +0200170 RewriteHandler handler = new RewriteHandler();
171 handler.insertBeans(helper().getContext());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200172 s.setQuery("[orth=laufe/i & base!=Lauf]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +0200173 assertTrue(handler.add(FoundryInject.class));
Michael Hanlf0785322015-11-13 16:14:45 +0100174 String result = handler.preProcess(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +0200175 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +0200176
Michael Hanldaf86602016-05-12 14:31:52 +0200177 assertNotNull(node);
178 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
179 assertFalse(node.at("/query/wrap/operands/0/foundry").isMissingNode());
180 assertFalse(node.at("/query/wrap/operands/0/rewrites").isMissingNode());
181 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
182 assertFalse(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200183 }
184
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200185
Michael Hanl1e18cb42015-08-06 20:57:35 +0200186 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200187 public void testFoundryInjectGroupedQueryNoErrors () {
Michael Hanl1e18cb42015-08-06 20:57:35 +0200188 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +0200189 RewriteHandler handler = new RewriteHandler();
190 handler.insertBeans(helper().getContext());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200191 s.setQuery("[(base=laufen | base=gehen) & tt/pos=VVFIN]", "poliqarp");
Michael Hanldaf86602016-05-12 14:31:52 +0200192 assertTrue(handler.add(FoundryInject.class));
Michael Hanlf0785322015-11-13 16:14:45 +0100193 String result = handler.preProcess(s.toJSON(), null);
Michael Hanl1e18cb42015-08-06 20:57:35 +0200194 JsonNode node = JsonUtils.readTree(result);
195
Michael Hanldaf86602016-05-12 14:31:52 +0200196 assertNotNull(node);
197 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
198 assertFalse(node.at("/query/wrap/operands/0/operands/0/foundry")
199 .isMissingNode());
200 assertFalse(node.at("/query/wrap/operands/0/operands/0/rewrites")
201 .isMissingNode());
202 assertFalse(node.at("/query/wrap/operands/0/operands/1/foundry")
203 .isMissingNode());
204 assertFalse(node.at("/query/wrap/operands/0/operands/1/rewrites")
205 .isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200206
Michael Hanldaf86602016-05-12 14:31:52 +0200207 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
208 assertTrue(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200209 }
210
Michael Hanl704211e2015-06-19 07:26:04 +0200211}