Implemented dynamic window for sorting in FocusSpans.

Change-Id: Ie59bae8a116e6377f4fe9f7d400cdc55207785c1
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
new file mode 100644
index 0000000..2f668e2
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
@@ -0,0 +1,46 @@
+package de.ids_mannheim.korap.index;
+
+import java.io.IOException;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.spans.SpanTermQuery;
+import org.junit.Test;
+
+import de.ids_mannheim.korap.KrillIndex;
+import de.ids_mannheim.korap.query.SpanFocusQuery;
+import de.ids_mannheim.korap.query.SpanNextQuery;
+import de.ids_mannheim.korap.query.SpanRelationQuery;
+import de.ids_mannheim.korap.response.Match;
+import de.ids_mannheim.korap.response.Result;
+
+public class TestFocusIndex {
+    private KrillIndex ki;
+    private Result kr;
+
+    public TestFocusIndex () throws IOException {
+        ki = new KrillIndex();
+    }
+
+    /**
+     * Check Skipto focus spans
+     * */
+    @Test
+    public void testCase12() throws IOException {
+        ki.addDoc(TestRelationIndex.createFieldDoc0());
+        ki.addDoc(TestRelationIndex.createFieldDoc1());
+        ki.commit();
+        SpanRelationQuery sq = new SpanRelationQuery(new SpanTermQuery(
+                new Term("base", ">:xip/syntax-dep_rel")), true);
+        sq.setSourceClass((byte) 1);
+
+        SpanFocusQuery sfq = new SpanFocusQuery(sq, (byte) 1);
+        sfq.setSorted(false);
+        SpanTermQuery stq = new SpanTermQuery(new Term("base", "s:c"));
+        SpanNextQuery snq = new SpanNextQuery(stq, sfq);
+
+        kr = ki.search(snq, (short) 20);
+        for (Match m : kr.getMatches()) {
+            System.out.println(m.getStartPos() + " " + m.getEndPos());
+        }
+    }
+}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
index 23674b6..0465585 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
@@ -13,9 +13,12 @@
 import org.junit.runners.JUnit4;
 
 import de.ids_mannheim.korap.KrillIndex;
+import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.query.SpanElementQuery;
+import de.ids_mannheim.korap.query.SpanFocusQuery;
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.wrap.SpanSequenceQueryWrapper;
+import de.ids_mannheim.korap.response.Match;
 import de.ids_mannheim.korap.response.Result;
 
 @RunWith(JUnit4.class)
@@ -262,6 +265,23 @@
         assertEquals("StartPos", 0, kr.getMatch(0).startPos);
         assertEquals("EndPos", 3, kr.getMatch(0).endPos);
 
+        sq = new SpanNextQuery(new SpanTermQuery(new Term("base", "s:c")),
+                new SpanNextQuery(new SpanFocusQuery(new SpanClassQuery(
+                        new SpanTermQuery(new Term("base", "s:d")), (byte) 1),
+                        (byte) 1), new SpanFocusQuery(new SpanClassQuery(
+                        new SpanTermQuery(new Term("base", "s:b")), (byte) 2),
+                        (byte) 2)));
+
+        kr = ki.search(sq, (short) 10);
+        assertEquals("doc-number", 2, kr.getMatch(0).getLocalDocID());
+        assertEquals("StartPos", 0, kr.getMatch(0).startPos);
+        assertEquals("EndPos", 3, kr.getMatch(0).endPos);
+
+        // for (Match km : kr.getMatches()) {
+        // System.out.println(km.getStartPos() + "," + km.getEndPos()
+        // + " "
+        // + km.getSnippetBrackets());
+        // }
     }
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
index d8f79a7..7df32ea 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
@@ -14,6 +14,7 @@
 import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.query.SpanElementQuery;
 import de.ids_mannheim.korap.query.SpanFocusQuery;
+import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanRelationMatchQuery;
 import de.ids_mannheim.korap.query.SpanRelationQuery;
 import de.ids_mannheim.korap.query.SpanSegmentQuery;
@@ -71,7 +72,7 @@
     }
 
 
-    private FieldDocument createFieldDoc0 () {
+    public static FieldDocument createFieldDoc0() {
         FieldDocument fd = new FieldDocument();
         fd.addString("ID", "doc-0");
         fd.addTV(
@@ -96,7 +97,7 @@
     }
 
 
-    private FieldDocument createFieldDoc1 () {
+    public static FieldDocument createFieldDoc1() {
         FieldDocument fd = new FieldDocument();
         fd.addString("ID", "doc-1");
         fd.addTV(
@@ -903,9 +904,6 @@
         assertEquals((long) 1, kr.getTotalResults());
         assertEquals(2, kr.getMatch(0).getStartPos());
         assertEquals(7, kr.getMatch(0).getEndPos());
-
-        // for (Match m : kr.getMatches()) {
-        // System.out.println(m.getStartPos() + " " + m.getEndPos());
-        // }
     }
+
 }