Index: trunk/test/data/mergelayers/Layer1.gpx
===================================================================
--- trunk/test/data/mergelayers/Layer1.gpx	(revision 14338)
+++ trunk/test/data/mergelayers/Layer1.gpx	(revision 14338)
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <metadata>
+    <bounds minlat="-44.6794593" minlon="168.9676659" maxlat="-44.6267934" maxlon="169.114549"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64903055828478" lon="168.9688660654368">
+        <time>2018-08-01T04:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.627129349" lon="168.96766593933">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67377988143" lon="169.10087551117">
+        <time>2018-08-01T01:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67574681965" lon="169.08905899514">
+        <time>2018-08-01T01:20:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67945926209" lon="169.08388386828">
+        <time>2018-08-01T01:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67193249915" lon="169.05767836406">
+      </trkpt>
+      <trkpt lat="-44.67829447303" lon="169.03051544255">
+        <time>2018-08-01T02:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67601752425" lon="169.02167947454">
+        <time>2018-08-01T02:40:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67302186733" lon="169.01440310326">
+        <time>2018-08-01T02:50:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67206867129" lon="169.00865859961">
+        <time>2018-08-01T02:55:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6715239808" lon="168.98031904829">
+        <time>2018-08-01T03:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.6716601539" lon="169.11454895015">
+        <time>2018-08-01T01:05:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67261335666" lon="169.10708109541">
+        <time>2018-08-01T01:10:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.62679341842" lon="169.09608703937">
+        <time>2018-08-01T06:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.64397805726" lon="169.10662502858">
+        <time>2018-08-01T07:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
Index: trunk/test/data/mergelayers/Layer2.gpx
===================================================================
--- trunk/test/data/mergelayers/Layer2.gpx	(revision 14338)
+++ trunk/test/data/mergelayers/Layer2.gpx	(revision 14338)
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <metadata>
+    <bounds minlat="-44.6918439" minlon="168.9588303" maxlat="-44.6149174" maxlon="169.1237066"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.63074821844668" lon="168.95976943655546">
+        <time>2018-08-01T04:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61491742259" lon="168.97007025177">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61710528856" lon="169.04603159064">
+        <time>2018-08-01T05:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.61835546068" lon="169.08598813305">
+        <time>2018-08-01T06:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.62322244297" lon="169.08944198935">
+      </trkpt>
+      <trkpt lat="-44.63880660641" lon="169.09324299504">
+        <time>2018-08-01T07:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.65772210426" lon="169.10838136012">
+        <time>2018-08-01T08:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67719792038" lon="169.12370664597">
+        <time>2018-08-01T01:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6918438522" lon="169.04766065598">
+        <time>2018-08-01T02:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67329159113" lon="168.99993862152">
+        <time>2018-08-01T03:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.677348434487726" lon="168.9702040298994">
+        <time>2018-08-01T03:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.66921934791758" lon="168.96284277369952">
+        <time>2018-08-01T03:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.659434880491546" lon="168.95883032510446">
+        <time>2018-08-01T04:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
Index: trunk/test/data/mergelayers/Merged-all.gpx
===================================================================
--- trunk/test/data/mergelayers/Merged-all.gpx	(revision 14338)
+++ trunk/test/data/mergelayers/Merged-all.gpx	(revision 14338)
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <metadata>
+    <bounds minlat="-44.6918439" minlon="168.9588303" maxlat="-44.6149174" maxlon="169.1237066"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64903055828478" lon="168.9688660654368">
+        <time>2018-08-01T04:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.627129349" lon="168.96766593933">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67377988143" lon="169.10087551117">
+        <time>2018-08-01T01:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67574681965" lon="169.08905899514">
+        <time>2018-08-01T01:20:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67945926209" lon="169.08388386828">
+        <time>2018-08-01T01:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67193249915" lon="169.05767836406"/>
+      <trkpt lat="-44.67829447303" lon="169.03051544255">
+        <time>2018-08-01T02:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67601752425" lon="169.02167947454">
+        <time>2018-08-01T02:40:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67302186733" lon="169.01440310326">
+        <time>2018-08-01T02:50:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67206867129" lon="169.00865859961">
+        <time>2018-08-01T02:55:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6715239808" lon="168.98031904829">
+        <time>2018-08-01T03:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.6716601539" lon="169.11454895015">
+        <time>2018-08-01T01:05:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67261335666" lon="169.10708109541">
+        <time>2018-08-01T01:10:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.62679341842" lon="169.09608703937">
+        <time>2018-08-01T06:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.64397805726" lon="169.10662502858">
+        <time>2018-08-01T07:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.63074821844668" lon="168.95976943655546">
+        <time>2018-08-01T04:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61491742259" lon="168.97007025177">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61710528856" lon="169.04603159064">
+        <time>2018-08-01T05:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.61835546068" lon="169.08598813305">
+        <time>2018-08-01T06:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.62322244297" lon="169.08944198935"/>
+      <trkpt lat="-44.63880660641" lon="169.09324299504">
+        <time>2018-08-01T07:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.65772210426" lon="169.10838136012">
+        <time>2018-08-01T08:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67719792038" lon="169.12370664597">
+        <time>2018-08-01T01:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6918438522" lon="169.04766065598">
+        <time>2018-08-01T02:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67329159113" lon="168.99993862152">
+        <time>2018-08-01T03:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.677348434487726" lon="168.9702040298994">
+        <time>2018-08-01T03:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.66921934791758" lon="168.96284277369952">
+        <time>2018-08-01T03:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.659434880491546" lon="168.95883032510446">
+        <time>2018-08-01T04:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
Index: trunk/test/data/mergelayers/Merged-cut-connect.gpx
===================================================================
--- trunk/test/data/mergelayers/Merged-cut-connect.gpx	(revision 14338)
+++ trunk/test/data/mergelayers/Merged-cut-connect.gpx	(revision 14338)
@@ -0,0 +1,186 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <metadata>
+    <bounds minlat="-44.6794593" minlon="168.9588303" maxlat="-44.6149174" maxlon="169.1237066"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64903055828478" lon="168.9688660654368">
+        <time>2018-08-01T04:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.627129349" lon="168.96766593933">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67377988143" lon="169.10087551117">
+        <time>2018-08-01T01:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67574681965" lon="169.08905899514">
+        <time>2018-08-01T01:20:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67945926209" lon="169.08388386828">
+        <time>2018-08-01T01:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67193249915" lon="169.05767836406"/>
+      <trkpt lat="-44.67829447303" lon="169.03051544255">
+        <time>2018-08-01T02:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67601752425" lon="169.02167947454">
+        <time>2018-08-01T02:40:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67302186733" lon="169.01440310326">
+        <time>2018-08-01T02:50:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67206867129" lon="169.00865859961">
+        <time>2018-08-01T02:55:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6715239808" lon="168.98031904829">
+        <time>2018-08-01T03:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.6716601539" lon="169.11454895015">
+        <time>2018-08-01T01:05:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67261335666" lon="169.10708109541">
+        <time>2018-08-01T01:10:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.62679341842" lon="169.09608703937">
+        <time>2018-08-01T06:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.64397805726" lon="169.10662502858">
+        <time>2018-08-01T07:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64903055828478" lon="168.9688660654368">
+        <time>2018-08-01T04:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.627129349" lon="168.96766593933">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61491742259" lon="168.97007025177">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61710528856" lon="169.04603159064">
+        <time>2018-08-01T05:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.61835546068" lon="169.08598813305">
+        <time>2018-08-01T06:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.62322244297" lon="169.08944198935"/>
+      <trkpt lat="-44.62679341842" lon="169.09608703937">
+        <time>2018-08-01T06:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64397805726" lon="169.10662502858">
+        <time>2018-08-01T07:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.65772210426" lon="169.10838136012">
+        <time>2018-08-01T08:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67719792038" lon="169.12370664597">
+        <time>2018-08-01T01:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6716601539" lon="169.11454895015">
+        <time>2018-08-01T01:05:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67261335666" lon="169.10708109541">
+        <time>2018-08-01T01:10:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67377988143" lon="169.10087551117">
+        <time>2018-08-01T01:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67829447303" lon="169.03051544255">
+        <time>2018-08-01T02:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67601752425" lon="169.02167947454">
+        <time>2018-08-01T02:40:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67302186733" lon="169.01440310326">
+        <time>2018-08-01T02:50:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67206867129" lon="169.00865859961">
+        <time>2018-08-01T02:55:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67574681965" lon="169.08905899514">
+        <time>2018-08-01T01:20:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67945926209" lon="169.08388386828">
+        <time>2018-08-01T01:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.6715239808" lon="168.98031904829">
+        <time>2018-08-01T03:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.677348434487726" lon="168.9702040298994">
+        <time>2018-08-01T03:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.66921934791758" lon="168.96284277369952">
+        <time>2018-08-01T03:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.659434880491546" lon="168.95883032510446">
+        <time>2018-08-01T04:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
Index: trunk/test/data/mergelayers/Merged-cut.gpx
===================================================================
--- trunk/test/data/mergelayers/Merged-cut.gpx	(revision 14338)
+++ trunk/test/data/mergelayers/Merged-cut.gpx	(revision 14338)
@@ -0,0 +1,124 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <metadata>
+    <bounds minlat="-44.6794593" minlon="168.9588303" maxlat="-44.6149174" maxlon="169.1237066"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.64903055828478" lon="168.9688660654368">
+        <time>2018-08-01T04:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.627129349" lon="168.96766593933">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67377988143" lon="169.10087551117">
+        <time>2018-08-01T01:15:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67574681965" lon="169.08905899514">
+        <time>2018-08-01T01:20:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67945926209" lon="169.08388386828">
+        <time>2018-08-01T01:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67193249915" lon="169.05767836406"/>
+      <trkpt lat="-44.67829447303" lon="169.03051544255">
+        <time>2018-08-01T02:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67601752425" lon="169.02167947454">
+        <time>2018-08-01T02:40:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67302186733" lon="169.01440310326">
+        <time>2018-08-01T02:50:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67206867129" lon="169.00865859961">
+        <time>2018-08-01T02:55:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.6715239808" lon="168.98031904829">
+        <time>2018-08-01T03:15:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.6716601539" lon="169.11454895015">
+        <time>2018-08-01T01:05:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.67261335666" lon="169.10708109541">
+        <time>2018-08-01T01:10:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.62679341842" lon="169.09608703937">
+        <time>2018-08-01T06:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.64397805726" lon="169.10662502858">
+        <time>2018-08-01T07:30:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.61491742259" lon="168.97007025177">
+        <time>2018-08-01T04:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.61710528856" lon="169.04603159064">
+        <time>2018-08-01T05:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.61835546068" lon="169.08598813305">
+        <time>2018-08-01T06:00:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.62322244297" lon="169.08944198935"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.65772210426" lon="169.10838136012">
+        <time>2018-08-01T08:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.67719792038" lon="169.12370664597">
+        <time>2018-08-01T01:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <trkseg>
+      <trkpt lat="-44.677348434487726" lon="168.9702040298994">
+        <time>2018-08-01T03:30:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.66921934791758" lon="168.96284277369952">
+        <time>2018-08-01T03:45:00.000Z</time>
+      </trkpt>
+      <trkpt lat="-44.659434880491546" lon="168.95883032510446">
+        <time>2018-08-01T04:00:00.000Z</time>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
Index: trunk/test/unit/org/openstreetmap/josm/data/gpx/GpxDataTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/gpx/GpxDataTest.java	(revision 14337)
+++ trunk/test/unit/org/openstreetmap/josm/data/gpx/GpxDataTest.java	(revision 14338)
@@ -8,4 +8,5 @@
 import static org.junit.Assert.assertTrue;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,6 +29,8 @@
 import org.openstreetmap.josm.data.gpx.GpxData.GpxDataChangeListener;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
+import org.openstreetmap.josm.io.GpxReaderTest;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.xml.sax.SAXException;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -55,5 +58,4 @@
         data = new GpxData();
     }
-
 
     /**
@@ -83,4 +85,27 @@
         assertTrue(data.getWaypoints().contains(newWP));
         assertTrue(data.getWaypoints().contains(existingWP));
+    }
+
+    /**
+     * Test method for {@link GpxData#mergeFrom(GpxData, boolean, boolean)} including cutting/connecting tracks using actual files.
+     * @throws Exception if the track cannot be parsed
+     */
+    @Test
+    public void testMergeFromFiles() throws Exception {
+        testMerge(false, false, "Merged-all"); // regular merging
+        testMerge(true, false, "Merged-cut"); // cut overlapping tracks, but do not connect them
+        testMerge(true, true, "Merged-cut-connect"); // cut overlapping tracks and connect them
+    }
+
+    private static void testMerge(boolean cut, boolean connect, String exp) throws IOException, SAXException {
+        final GpxData own = getGpx("Layer1");
+        final GpxData other = getGpx("Layer2");
+        final GpxData expected = getGpx(exp);
+        own.mergeFrom(other, cut, connect);
+        assertEquals(expected, own);
+    }
+
+    private static GpxData getGpx(String file) throws IOException, SAXException {
+        return GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "mergelayers/" + file + ".gpx");
     }
 
@@ -449,5 +474,5 @@
         TestUtils.assumeWorkingEqualsVerifier();
         EqualsVerifier.forClass(GpxData.class).usingGetClass()
-            .withIgnoredFields("attr", "creator", "fromServer", "storageFile", "listeners", "tracks", "routes", "waypoints", "proxy")
+            .withIgnoredFields("attr", "creator", "fromServer", "storageFile", "listeners", "tracks", "routes", "waypoints", "proxy", "segSpans")
             .withPrefabValues(WayPoint.class, new WayPoint(LatLon.NORTH_POLE), new WayPoint(LatLon.SOUTH_POLE))
             .withPrefabValues(ListenerList.class, ListenerList.create(), ListenerList.create())
