diff --git a/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java
new file mode 100644
index 0000000..3dca921
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java
@@ -0,0 +1,50 @@
+import java.util.*;
+import java.io.*;
+
+import de.ids_mannheim.korap.KorapCollection;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.junit.Ignore;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class TestKorapCollectionJSON {
+
+    @Test
+    public void metaQuery1 () {
+	String metaQuery = getString(getClass().getResource("/queries/metaquery.json").getFile());
+	KorapCollection kc = new KorapCollection(metaQuery);
+	assertEquals(3,kc.getCount());
+	assertEquals("filter with QueryWrapperFilter(+textClass:wissenschaft)",kc.getFilter(0).toString());
+	assertEquals("filter with QueryWrapperFilter(+pubPlace:Erfurt +author:Hesse)",kc.getFilter(1).toString());
+	assertEquals("extend with QueryWrapperFilter(+pubDate:[20110429 TO 20131231] +textClass:freizeit)",kc.getFilter(2).toString());
+    };
+
+
+    @Test
+    public void metaQuery2 () {
+	String metaQuery = getString(getClass().getResource("/queries/metaquery2.json").getFile());
+	KorapCollection kc = new KorapCollection(metaQuery);
+	assertEquals(1,kc.getCount());
+	assertEquals("filter with QueryWrapperFilter(+author:Hesse +pubDate:[0 TO 20131205])",kc.getFilter(0).toString());
+    };
+
+
+    public static String getString (String path) {
+	StringBuilder contentBuilder = new StringBuilder();
+	try {
+	    BufferedReader in = new BufferedReader(new FileReader(path));
+	    String str;
+	    while ((str = in.readLine()) != null) {
+		contentBuilder.append(str);
+	    };
+	    in.close();
+	} catch (IOException e) {
+	    fail(e.getMessage());
+	}
+	return contentBuilder.toString();
+    };
+
+};
\ No newline at end of file
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 763697a..3314648 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
@@ -104,14 +104,20 @@
 	};
 	ki.commit();
 
-	String json = getString(getClass().getResource("/queries/metaquery.json").getFile());
-
+	String json = getString(getClass().getResource("/queries/metaquery3.json").getFile());
 
 	KorapResult kr = new KorapSearch(json).run(ki);
 	assertEquals(29, kr.getTotalResults());
 	assertEquals(5, kr.getItemsPerPage());
 	assertEquals(5, kr.getStartIndex());
 	assertEquals("... a: A ist [der klangreichste] der V ...", kr.getMatch(0).getSnippetBrackets());
+
+	json = getString(getClass().getResource("/queries/metaquery4.json").getFile());
+
+	kr = new KorapSearch(json).run(ki);
+	assertEquals(0, kr.getTotalResults());
+	assertEquals(5, kr.getItemsPerPage());
+	assertEquals(5, kr.getStartIndex());
     };
 
 
diff --git a/src/test/resources/queries/metaquery2.json b/src/test/resources/queries/metaquery2.json
index 8dd978f..c80b044 100644
--- a/src/test/resources/queries/metaquery2.json
+++ b/src/test/resources/queries/metaquery2.json
@@ -78,7 +78,7 @@
                             "operands": [
                                 {
                                     "@type": "korap:date",
-                                    "@value": "2013-12-5"
+                                    "@value": "2013-12-05"
                                 }
                             ]
                         }
diff --git a/src/test/resources/queries/metaquery3.json b/src/test/resources/queries/metaquery3.json
new file mode 100644
index 0000000..fd46052
--- /dev/null
+++ b/src/test/resources/queries/metaquery3.json
@@ -0,0 +1,62 @@
+{
+    "@context": {
+        "korap": "http://korap.ids-mannheim.de/ns/query",
+        "@language": "de",
+        "operands": {
+            "@id": "korap:operands",
+            "@container": "@list"
+        },
+        "relation": {
+            "@id": "korap:relation",
+            "@type": "korap:relation#types"
+        },
+        "class": {
+            "@id": "korap:class",
+            "@type": "xsd:integer"
+        },
+        "query": "korap:query",
+        "filter": "korap:filter",
+        "meta": "korap:meta"
+    },
+    "startPage" : 2,
+    "count" : 5,
+    "context" : {
+      "left" : [ "token", 3 ],
+      "right" : [ "char", 6 ]
+    },
+   "query":{
+      "@type":"korap:group",
+      "relation":"or",
+      "operands":[
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"base:Vokal",
+               "relation":"="
+            }
+         },
+         {
+            "@type":"korap:sequence",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:der",
+                     "relation":"="
+                  }
+               },
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"mate/p:ADJA",
+                     "relation":"="
+                  }
+               }
+            ]
+         }
+      ]
+   }
+}
\ No newline at end of file
diff --git a/src/test/resources/queries/metaquery4.json b/src/test/resources/queries/metaquery4.json
new file mode 100644
index 0000000..6b82550
--- /dev/null
+++ b/src/test/resources/queries/metaquery4.json
@@ -0,0 +1,73 @@
+{
+    "@context": {
+        "korap": "http://korap.ids-mannheim.de/ns/query",
+        "@language": "de",
+        "operands": {
+            "@id": "korap:operands",
+            "@container": "@list"
+        },
+        "relation": {
+            "@id": "korap:relation",
+            "@type": "korap:relation#types"
+        },
+        "class": {
+            "@id": "korap:class",
+            "@type": "xsd:integer"
+        },
+        "query": "korap:query",
+        "filter": "korap:filter",
+        "meta": "korap:meta"
+    },
+    "startPage" : 2,
+    "count" : 5,
+    "context" : {
+      "left" : [ "token", 3 ],
+      "right" : [ "char", 6 ]
+    },
+   "query":{
+      "@type":"korap:group",
+      "relation":"or",
+      "operands":[
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"base:Vokal",
+               "relation":"="
+            }
+         },
+         {
+            "@type":"korap:sequence",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:der",
+                     "relation":"="
+                  }
+               },
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"mate/p:ADJA",
+                     "relation":"="
+                  }
+               }
+            ]
+         }
+      ]
+   },
+    "meta": [
+        {
+            "@type": "korap:meta-filter",
+            "@id": "korap-filter#id-1223232",
+            "@value": {
+                "@type": "korap:term",
+                "@field": "korap:field#textClass",
+                "@value": "baum"
+            }
+        }
+    ]
+}
\ No newline at end of file
