added services and filters
diff --git a/src/test/java/CollectionQueryBuilderTest.java b/src/test/java/CollectionQueryBuilderTest.java
new file mode 100644
index 0000000..de9a089
--- /dev/null
+++ b/src/test/java/CollectionQueryBuilderTest.java
@@ -0,0 +1,87 @@
+import com.fasterxml.jackson.databind.JsonNode;
+import de.ids_mannheim.korap.utils.CollectionQueryBuilder3;
+import de.ids_mannheim.korap.utils.JsonUtils;
+import org.junit.Test;
+
+/**
+ * @author hanl
+ * @date 12/08/2015
+ */
+public class CollectionQueryBuilderTest {
+
+    @Test
+    public void testsimpleAdd() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "WPD");
+        //        System.out.println(b.toJSON());
+    }
+
+    @Test
+    public void testSimpleConjunctive() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "WPD").and()
+                .addSegment("textClass", CollectionQueryBuilder3.EQ.EQUAL,
+                        "freizeit");
+        //        System.out.println(b.toJSON());
+    }
+
+    @Test
+    public void testSimpleDisjunctive() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "WPD").and()
+                .addSegment("textClass", CollectionQueryBuilder3.EQ.EQUAL,
+                        "freizeit");
+        //        System.out.println(b.toJSON());
+    }
+
+    @Test
+    public void testComplexSubQuery() {
+
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "ADF").and()
+                .addSub("textClass=freizeit & corpusID=WPD");
+        //        System.out.println(b.toJSON());
+    }
+
+    @Test // basically joining two or more resource queries
+    public void testAddResourceQueryAfter() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "ADF").and()
+                .addSub("textClass=freizeit & corpusID=WPD");
+        //        System.out.println(b.toJSON());
+
+        //        join.addSegment("textClass", "politik");
+    }
+
+    @Test // basically joining two or more resource queries
+    public void testAddResourceQueryBefore() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "ADF").and()
+                .addSub("textClass!=freizeit & corpusID=WPD");
+
+        //        CollectionQueryBuilder3 join = new CollectionQueryBuilder3();
+        //        join.addRaw(b.toJSON());
+        //        join.addSegment("textClass", "politik");
+        //        System.out.println("JOINED " + join.toJSON());
+    }
+
+    @Test
+    public void test1() {
+        CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
+        b.addSegment("corpusID", CollectionQueryBuilder3.EQ.EQUAL, "ADF").or()
+                .addSub("textClass=freizeit & corpusID=WPD");
+
+        CollectionQueryBuilder3 c = new CollectionQueryBuilder3();
+        c.setBaseQuery(b.toJSON());
+        c.addSub("textClass=wissenschaft");
+
+        JsonNode node = JsonUtils.readTree(c.toJSON());
+
+        assert node != null;
+        assert node.at("/collection/operands/2/@type").asText()
+                .equals("koral:doc");
+        assert node.at("/collection/operands/2/value").asText()
+                .equals("wissenschaft");
+    }
+
+}