/******************************************************************************* * Copyright 2013 * Ubiquitous Knowledge Processing (UKP) Lab * Technische Universität Darmstadt * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package de.tudarmstadt.ukp.csniper.webapp.search.cqp; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.springframework.dao.InvalidDataAccessResourceUsageException; import de.tudarmstadt.ukp.csniper.webapp.evaluation.model.EvaluationItem; // FIXME fix the tests @Ignore("Does not run on Jenkins (yet)") public class CQPQueryTest { private CqpEngine engine; @Before public void setup() { engine = new CqpEngine(); engine.setCqpExecutable(new File("/Users/bluefire/bin/cwb-3.2.0-snapshot-282/cqp")); // engine.setRegistryPath(new File("/Users/bluefire/UKP/Library/IMSCWB/loewe-ncc/registry")); engine.setMacrosLocation("classpath:/BNC_macros.txt"); } @Test public void testBncOffsets() throws IOException { CqpQuery query = engine.createQuery("type", "BNC", "\"unattractive\" \"girls\""); query.setContext(1, 1, ContextUnit.SENTENCE); List<EvaluationItem> actual = query.execute(); List<EvaluationItem> expected = new ArrayList<EvaluationItem>(); expected.add(new EvaluationItem("BNC", "A05", "type", 155175, 155239, "Because unattractive men do n't want unattractive girls , you see .")); expected.add(new EvaluationItem("BNC", "A05", "type", 155268, 155303, "They merely get unattractive girls .")); assertEquals(expected.size(), actual.size()); for (int i = 0; i < actual.size(); i++) { assertEquals(expected.get(i), actual.get(i)); } } @Test public void testCorrect() throws IOException { CqpQuery query = engine.createQuery("type", "TUEBADZ5", "\"auf\" \"dem\" [pos=\"NN\"] [lemma=\"stehen\"]"); query.setContext(1, 1, ContextUnit.SENTENCE); List<EvaluationItem> actual = query.execute(); List<EvaluationItem> expected = new ArrayList<EvaluationItem>(); expected.add(new EvaluationItem("TUEBADZ5", "T990430.148", "type", 1985, 2156, "Gewohnt trocken hat Weiner zweisprachig den Satz \" What is set upon the table sits upon the table - was auf dem Tisch steht steht auf dem Tisch \" an die Wand geschrieben .")); expected.add(new EvaluationItem("TUEBADZ5", "T920713.79", "type", 588, 898, "Aber nun , da unter dem Titel \" Zukunft der Gegenwart - neues Bauen im historischen Kontext \" keine politische Geste , sondern höchst praktische Fragen von einiger Dringlichkeit auf dem Programm standen , herrschte betretenes Schweigen zwischen den Systemfronten , die es offiziell doch nicht mehr geben darf .")); expected.add(new EvaluationItem("TUEBADZ5", "T951014.95", "type", 3181, 3405, "Und obwohl weit und breit keiner ernsthaft glaubt , daß tatsächlich irgendeine Ehre auf dem Spiel steht , ist da ein Mensch , der sich bei jeder Gelegenheit bemüßigt fühlt zu betonen , daß er \" keine Ehre verlieren \" könne .")); assertEquals(expected.size(), query.size()); assertEquals(expected.size(), actual.size()); for (int i = 0; i < actual.size(); i++) { assertEquals(expected.get(i), actual.get(i)); } query.close(); } @Test public void testLimitedResult() throws IOException { int expectedCount = 4; int customLimit = 2; CqpQuery query = engine.createQuery("type", "TUEBADZ5", "\"er\" \"war\""); query.setContext(1, 1, ContextUnit.SENTENCE); query.setMaxResults(customLimit); List<EvaluationItem> actual = query.execute(); List<EvaluationItem> expected = new ArrayList<EvaluationItem>(); expected.add(new EvaluationItem("TUEBADZ5", "T990506.255", "type", 5161, 5224, "Es war , als ob der Krieg zu Ende wäre , aber er war es nicht .")); expected.add(new EvaluationItem("TUEBADZ5", "T990430.292", "type", 928, 1070, "Zu dieser Zeit war Drakovic natürlich nicht in der Regierung , er war der bekannteste Andersdenkende und zugleich Miloevic' härtester Gegner .")); assertEquals(expectedCount, query.size()); assertEquals(expected.size(), actual.size()); for (int i = 0; i < actual.size(); i++) { assertEquals(expected.get(i), actual.get(i)); } } @Test(expected = InvalidDataAccessResourceUsageException.class) public void testError() throws IOException { // query error: missing closing " CqpQuery query = engine.createQuery("type", "TUEBADZ5", "\"Drachen"); query.setContext(1, 1, ContextUnit.SENTENCE); query.execute(); } @Test public void testVersion() { CqpQuery m = new CqpQuery(engine, "type", "TUEBADZ5"); String expectedVersion = "3.4.1"; String actualVersion = m.getVersion(); assertEquals(expectedVersion, actualVersion); m.close(); } }