Index: trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 8799)
+++ trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 8803)
@@ -2,7 +2,9 @@
 package org.openstreetmap.josm.io.session;
 
+import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
@@ -16,4 +18,5 @@
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -112,3 +115,14 @@
         assertEquals(marker.getName(), "Marker layer name");
     }
+
+    @Test
+    public void testReadImage() throws IOException, IllegalDataException {
+        final List<Layer> layers = testRead("bing.jos");
+        assertSame(layers.size(), 1);
+        assertTrue(layers.get(0) instanceof ImageryLayer);
+        final ImageryLayer image = (ImageryLayer) layers.get(0);
+        assertThat(image.getName(), is("Bing aerial imagery"));
+        assertEquals(image.getDx(), 12.34, 1e-9);
+        assertEquals(image.getDy(), -56.78, 1e-9);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(revision 8799)
+++ trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(revision 8803)
@@ -4,4 +4,5 @@
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -15,12 +16,14 @@
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Pair;
 
 /**
@@ -124,4 +127,10 @@
     }
 
+    private ImageryLayer createImageryLayer() {
+        ImageryLayer layer = new TMSLayer(new ImageryInfo("the name", "http://www.url.com/"));
+        layer.setOffset(12, 34);
+        return layer;
+    }
+
     /**
      * Tests to write an empty .jos file.
@@ -185,5 +194,11 @@
     public void testWriteGpxAndMarkerJoz() throws IOException {
         GpxLayer gpx = createGpxLayer();
-        testWrite(Pair.toList(new Pair<Layer, Layer>(gpx, createMarkerLayer(gpx))), true);
+        testWrite(Arrays.asList(gpx, createMarkerLayer(gpx)), true);
+    }
+
+    @Test
+    public void testWriteImageryLayer() throws IOException {
+        final Layer layer = createImageryLayer();
+        testWrite(Collections.singletonList(layer), true);
     }
 }
