New feature: itemsPerResource
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
index 215c82a..023ad9a 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
@@ -285,10 +285,87 @@
 	KorapCollection kc = new KorapCollection(json);
 	kc.setIndex(ki);
 	assertEquals(7, kc.numberOf("documents"));
-	
     };
 
     @Test
+    public void searchJSONitemsPerResource () throws IOException {
+
+	// Construct index
+	KorapIndex ki = new KorapIndex();
+	// Indexing test files
+	for (String i : new String[] {"00001", "00002", "00003", "00004", "00005", "00006", "02439"}) {
+	    ki.addDocFile(
+	      getClass().getResource("/wiki/" + i + ".json.gz").getFile(), true
+            );
+	};
+	ki.commit();
+
+	String json = getString(getClass().getResource("/queries/bsp-itemsPerResource.jsonld").getFile());
+
+	KorapSearch ks = new KorapSearch(json);
+	KorapResult kr = ks.run(ki);
+	assertEquals(10, kr.getTotalResults());
+	assertEquals(0, kr.getStartIndex());
+	assertEquals(20, kr.getItemsPerPage());
+
+	assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+	assertEquals("WPD_AAA.00001", kr.getMatch(1).getDocID());
+	assertEquals("WPD_AAA.00001", kr.getMatch(6).getDocID());
+	assertEquals("WPD_AAA.00002", kr.getMatch(7).getDocID());
+	assertEquals("WPD_AAA.00002", kr.getMatch(8).getDocID());
+	assertEquals("WPD_AAA.00004", kr.getMatch(9).getDocID());
+
+	ks = new KorapSearch(json);
+	ks.setItemsPerResource(1);
+
+	kr = ks.run(ki);
+
+	assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+	assertEquals("WPD_AAA.00002", kr.getMatch(1).getDocID());
+	assertEquals("WPD_AAA.00004", kr.getMatch(2).getDocID());
+
+	assertEquals(3, kr.getTotalResults());
+	assertEquals(0, kr.getStartIndex());
+	assertEquals(20, kr.getItemsPerPage());
+
+
+	ks = new KorapSearch(json);
+	ks.setItemsPerResource(2);
+
+	kr = ks.run(ki);
+
+	//	System.err.println(kr.toJSON());
+
+	assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+	assertEquals("WPD_AAA.00001", kr.getMatch(1).getDocID());
+	assertEquals("WPD_AAA.00002", kr.getMatch(2).getDocID());
+	assertEquals("WPD_AAA.00002", kr.getMatch(3).getDocID());
+	assertEquals("WPD_AAA.00004", kr.getMatch(4).getDocID());
+
+	assertEquals(5, kr.getTotalResults());
+	assertEquals(0, kr.getStartIndex());
+	assertEquals(20, kr.getItemsPerPage());
+
+
+	ks = new KorapSearch(json);
+	ks.setItemsPerResource(1);
+	ks.setStartIndex(1);
+	ks.setCount(1);
+
+	kr = ks.run(ki);
+	
+	assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
+
+	assertEquals(3, kr.getTotalResults());
+	assertEquals(1, kr.getStartIndex());
+	assertEquals(1, kr.getItemsPerPage());
+
+	assertEquals((short) 1, kr.getItemsPerResource());
+    };
+
+    
+
+    @Test
     public void searchJSONCollection () throws IOException {
 
 	// Construct index
diff --git a/src/test/resources/queries/bsp-itemsPerResource.jsonld b/src/test/resources/queries/bsp-itemsPerResource.jsonld
new file mode 100644
index 0000000..d4be7fe
--- /dev/null
+++ b/src/test/resources/queries/bsp-itemsPerResource.jsonld
@@ -0,0 +1,21 @@
+{
+  "@context": "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
+  "query": {
+    "@type": "korap:token", 
+    "wrap": {
+      "@type": "korap:term", 
+      "foundry": "mate",
+      "layer" : "lemma",
+      "key":"alphabet", 
+      "match": "match:eq"
+    }
+  },
+  "meta":{
+    "startPage":1,
+    "count": 20,
+    "context":{
+      "left":["char",90],
+      "right":["char",90]
+    }
+  }
+}