string to json bug hot fix
diff --git a/src/test/java/CollectionQueryBuilderTest.java b/src/test/java/CollectionQueryBuilderTest.java
index 38a5ac4..407608d 100644
--- a/src/test/java/CollectionQueryBuilderTest.java
+++ b/src/test/java/CollectionQueryBuilderTest.java
@@ -2,6 +2,7 @@
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
 import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -84,12 +85,19 @@
         c.with("corpusSigle=WPD");
 
         JsonNode node = JsonUtils.readTree(c.toJSON());
-
         assertNotNull(node);
-        assertEquals("koral:doc", node.at("/collection/operands/0/@type")
+        assertEquals("koral:doc", node.at("/collection/operands/1/@type")
                 .asText());
-        assertEquals("WPD", node.at("/collection/operands/0/value").asText());
+        assertEquals("koral:docGroup", node.at("/collection/operands/0/@type")
+                .asText());
         assertEquals(2, node.at("/collection/operands").size());
+        assertEquals(2, node.at("/collection/operands/0/operands").size());
+        assertEquals(2, node.at("/collection/operands/0/operands/0/operands").size());
+
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals("operation:or", node.at("/collection/operands/0/operation").asText());
+        assertEquals("operation:and", node.at("/collection/operands/0/operands/0/operation").asText());
+        assertEquals("WPD", node.at("/collection/operands/1/value").asText());
     }
 
 
@@ -109,13 +117,13 @@
         assertEquals("koral:docGroup", node.at("/collection/operands/1/@type")
                 .asText());
         assertEquals("BRZ13", node
-                .at("/collection/operands/0/operands/0/value").asText());
-        assertEquals("AZPS", node.at("/collection/operands/0/operands/1/value")
+                .at("/collection/operands/1/operands/0/value").asText());
+        assertEquals("AZPS", node.at("/collection/operands/1/operands/1/value")
                 .asText());
         assertEquals("random title",
-                node.at("/collection/operands/1/operands/0/value").asText());
+                node.at("/collection/operands/0/operands/0/value").asText());
         assertEquals("wissenschaft",
-                node.at("/collection/operands/1/operands/1/value").asText());
+                node.at("/collection/operands/0/operands/1/value").asText());
     }
 
 
@@ -137,14 +145,14 @@
         assertEquals("operation:and", res.at("/collection/operation").asText());
         assertEquals("koral:doc", res.at("/collection/operands/0/@type")
                 .asText());
-        assertEquals("freizeit", res.at("/collection/operands/0/value")
+        assertEquals("freizeit", res.at("/collection/operands/1/value")
                 .asText());
-        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("textClass", res.at("/collection/operands/1/key").asText());
 
         assertEquals("koral:doc", res.at("/collection/operands/1/@type")
                 .asText());
-        assertEquals("WPD", res.at("/collection/operands/1/value").asText());
-        assertEquals("corpusSigle", res.at("/collection/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/0/value").asText());
+        assertEquals("corpusSigle", res.at("/collection/operands/0/key").asText());
 
         // check also that query is still there
         assertEquals("koral:token", res.at("/query/@type").asText());
@@ -166,12 +174,12 @@
         JsonNode base = (JsonNode) c.rebaseCollection();
         assertNotNull(base);
         assertEquals(base.at("/collection/@type").asText(), "koral:docGroup");
-        assertEquals(base.at("/collection/operands/0/@type").asText(),
-                "koral:doc");
-        assertEquals(base.at("/collection/operands/0/value").asText(), "BRZ13");
         assertEquals(base.at("/collection/operands/1/@type").asText(),
+                "koral:doc");
+        assertEquals(base.at("/collection/operands/1/value").asText(), "BRZ13");
+        assertEquals(base.at("/collection/operands/0/@type").asText(),
                 "koral:docGroup");
-        assertEquals(base.at("/collection/operands/1/operands").size(), 2);
+        assertEquals(base.at("/collection/operands/0/operands").size(), 2);
     }
 
     @Test
@@ -201,4 +209,80 @@
 
     }
 
+    @Test
+    public void testAddOROperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.or().with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:or", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    public void testAddANDOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.and().with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    public void testAddDefaultOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    @Ignore
+    public void testMergeOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+        b.setBaseQuery(check.toJSON());
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        node = b.mergeWith(node);
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands").size());
+    }
+
 }