Index: trunk/test/unit/org/openstreetmap/josm/io/MultiFetchOverpassObjectReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/MultiFetchOverpassObjectReaderTest.java	(revision 15810)
+++ trunk/test/unit/org/openstreetmap/josm/io/MultiFetchOverpassObjectReaderTest.java	(revision 15811)
@@ -5,12 +5,13 @@
 
 import java.util.Arrays;
-import java.util.TreeSet;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import org.junit.Rule;
-import org.junit.Test;
-import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -30,8 +31,40 @@
      */
     @Test
-    public void testBuildRequestString() {
-        String requestString = new MultiFetchOverpassObjectReader()
-                .buildRequestString(OsmPrimitiveType.WAY, new TreeSet<>(Arrays.asList(130L, 123L, 126L)));
-        assertEquals("interpreter?data=" + Utils.encodeUrl("(way(123);>;way(126);>;way(130);>;);out meta;"), requestString);
+    public void testBuildRequestWaysString() {
+        MultiFetchOverpassObjectReader reader = new MultiFetchOverpassObjectReader();
+        reader.append(Arrays.asList(new Way(123), new Way(126), new Way(130)));
+        String requestString = reader.buildComplexRequestString();
+        assertEquals("(way(id:123,126,130);>;);out meta;", requestString);
+    }
+
+    /**
+     * Test {@link MultiFetchOverpassObjectReader#buildRequestString}
+     */
+    @Test
+    public void testBuildRequestRelationsString() {
+        MultiFetchOverpassObjectReader reader = new MultiFetchOverpassObjectReader();
+        reader.append(Arrays.asList(new Relation(123), new Relation(126), new Relation(130)));
+        reader.setRecurseDownRelations(true);
+        String requestString = reader.buildComplexRequestString();
+        assertEquals("relation(id:123,126,130);>>;out meta;", requestString);
+        reader.setRecurseDownRelations(false);
+        requestString = reader.buildComplexRequestString();
+        assertEquals("relation(id:123,126,130);out meta;", requestString);
+    }
+
+    /**
+     * Test {@link MultiFetchOverpassObjectReader#buildRequestString}
+     */
+    @Test
+    public void testBuildComplexString() {
+        MultiFetchOverpassObjectReader reader = new MultiFetchOverpassObjectReader();
+        reader.setRecurseDownRelations(true);
+        reader.append(Arrays.asList(new Relation(123), new Relation(126), new Relation(130), new Way(88), new Way(99),
+                new Node(1)));
+        String requestString = reader.buildComplexRequestString();
+        assertEquals("(relation(id:123,126,130);>>;(way(id:88,99);>;);node(1););out meta;", requestString);
+        reader.setRecurseDownRelations(false);
+        requestString = reader.buildComplexRequestString();
+        assertEquals("(relation(id:123,126,130);(way(id:88,99);>;);node(1););out meta;", requestString);
     }
 
