Index: trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java
===================================================================
--- trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java	(revision 5555)
+++ trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java	(revision 5556)
@@ -12,5 +12,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.I18n;
@@ -68,5 +68,5 @@
 
         // init projection
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
 
         // make sure we don't upload to or test against production
Index: trunk/test/functional/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergerTest.java
===================================================================
--- trunk/test/functional/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergerTest.java	(revision 5555)
+++ trunk/test/functional/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergerTest.java	(revision 5556)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.projection.Epsg4326;
+import org.openstreetmap.josm.data.projection.Projections;
 
 public class PropertiesMergerTest extends JFrame{
@@ -18,5 +18,5 @@
 
     protected void build() {
-        Main.setProjection(new Epsg4326());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:4326")); // WGS 84
 
         setLayout(new BorderLayout());
Index: trunk/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTest.java
===================================================================
--- trunk/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTest.java	(revision 5555)
+++ trunk/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTest.java	(revision 5556)
@@ -19,5 +19,5 @@
 import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerHistoryReader;
@@ -58,5 +58,5 @@
 
         // init projection
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
     }
 
Index: trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
===================================================================
--- trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java	(revision 5555)
+++ trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java	(revision 5556)
@@ -31,5 +31,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.io.UploadStrategy;
 import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
@@ -176,5 +176,5 @@
         //
         Main.pref.put("osm-server.atomic-upload", false);
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
 
         File dataSetCacheOutputFile = new File(tempOutputDir, MultiFetchServerObjectReaderTest.class.getName() + ".dataset");
Index: trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
===================================================================
--- trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 5555)
+++ trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 5556)
@@ -32,5 +32,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.io.UploadStrategy;
 import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
@@ -183,5 +183,5 @@
         //
         Main.pref.put("osm-server.atomic-upload", false);
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
 
         File dataSetCacheOutputFile = new File(tempOutputDir, MultiFetchServerObjectReaderTest.class.getName() + ".dataset");
Index: trunk/test/performance/org/openstreetmap/josm/data/osm/MapPaintVisitorPerformanceTest.java
===================================================================
--- trunk/test/performance/org/openstreetmap/josm/data/osm/MapPaintVisitorPerformanceTest.java	(revision 5555)
+++ trunk/test/performance/org/openstreetmap/josm/data/osm/MapPaintVisitorPerformanceTest.java	(revision 5556)
@@ -12,5 +12,5 @@
 import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
@@ -32,5 +32,5 @@
     @BeforeClass
     public static void load() throws Exception {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         img = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_3BYTE_BGR);
         g = (Graphics2D)img.getGraphics();
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java	(revision 5556)
@@ -20,5 +20,5 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 
 public class DataSetMergerTest {
@@ -76,5 +76,5 @@
         their = new DataSet();
         their.setVersion("0.6");
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java	(revision 5556)
@@ -19,5 +19,5 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
@@ -29,5 +29,5 @@
     @BeforeClass
     public static void setUp() {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         Main.pref = new Preferences();
     }
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java	(revision 5556)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 
 public class OsmPrimitiveTest {
@@ -29,5 +29,5 @@
     @BeforeClass
     public static void setUp() {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java	(revision 5556)
@@ -16,5 +16,5 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmReader;
@@ -66,5 +66,5 @@
     @Test
     public void testRemove() throws Exception {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         DataSet ds = OsmReader.parseDataSet(new FileInputStream("data_nodist/restriction.osm"), NullProgressMonitor.INSTANCE);
         removeAllTest(ds);
@@ -73,5 +73,5 @@
     @Test
     public void testMove() throws Exception {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         DataSet ds = OsmReader.parseDataSet(new FileInputStream("data_nodist/restriction.osm"), NullProgressMonitor.INSTANCE);
 
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java	(revision 5556)
@@ -10,5 +10,5 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 
 public class RelationTest {
@@ -16,5 +16,5 @@
     @BeforeClass
     public static void setUp() {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         Main.pref = new Preferences();
     }
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java	(revision 5556)
@@ -21,5 +21,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.data.projection.Projections;
 
 public class MergeSourceBuildingVisitorTest {
@@ -37,5 +37,5 @@
     @BeforeClass
     public static void setUp() {
-        Main.setProjection(new Mercator());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         Main.pref = new Preferences();
     }
Index: trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java	(revision 5556)
@@ -23,41 +23,33 @@
         text = "";
 
-        testProj(new Epsg4326());
-        testProj(new Mercator());
+        testProj(Projections.getProjectionByCode("EPSG:4326")); // WGS 84
+        testProj(Projections.getProjectionByCode("EPSG:3857")); // Mercator
         if (!"yes".equals(System.getProperty("suppressPermanentFailure"))) {
-            testProj(new LambertEST());
+            testProj(Projections.getProjectionByCode("EPSG:3301")); // Lambert EST
         }
 
         for (int i=0; i<=3; ++i) {
-            testProj(new Lambert(i));
+            testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(27561+i))); // Lambert 4 Zones France
         }
 
         for (int i=0; i<=4; ++i) {
-            testProj(new Puwg(i));
+            testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(2176+i))); // PUWG Poland
         }
 
-        testProj(new SwissGrid());
+        testProj(Projections.getProjectionByCode("EPSG:21781")); // Swiss grid
 
-        for (int i=0; i<=6; ++i) {
-            int zone;
-            if (i==0) {
-                zone = 1;
-            } else if (i==6) {
-                zone = 60;
-            } else {
-                zone = rand.nextInt(60) + 1;
-            }
-            UTM.Hemisphere hem = rand.nextBoolean() ? UTM.Hemisphere.North : UTM.Hemisphere.South;
-            testProj(new UTM(zone, hem));
+        for (int i=0; i<=60; ++i) {
+            testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(32601+i))); // UTM North
+            testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(32701+i))); // UTM South
         }
 
         if (!"yes".equals(System.getProperty("suppressPermanentFailure"))) {
             for (int i=0; i<=4; ++i) {
-                testProj(new UTM_France_DOM(i));
+                testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(2969+i))); // UTM France DOM
             }
         }
 
         for (int i=0; i<=8; ++i) {
-            testProj(new LambertCC9Zones(i));
+            testProj(Projections.getProjectionByCode("EPSG:"+Integer.toString(3942+i))); // Lambert CC9 Zones France
         }
 
@@ -69,30 +61,31 @@
 
     private void testProj(Projection p) {
-        double maxErrLat = 0, maxErrLon = 0;
-
-        Bounds b = p.getWorldBoundsLatLon();
-
-        text += String.format("*** %s %s\n", p.toString(), p.toCode());
-        for (int num=0; num < 1000; ++num) {
-
-            double lat = rand.nextDouble() * (b.getMax().lat() - b.getMin().lat()) + b.getMin().lat();
-            double lon = rand.nextDouble() * (b.getMax().lon() - b.getMin().lon()) + b.getMin().lon();
-
-            LatLon ll = new LatLon(lat, lon);
-
-            for (int i=0; i<10; ++i) {
-                EastNorth en = p.latlon2eastNorth(ll);
-                ll = p.eastNorth2latlon(en);
+        if (p != null) {
+            double maxErrLat = 0, maxErrLon = 0;
+            Bounds b = p.getWorldBoundsLatLon();
+    
+            text += String.format("*** %s %s\n", p.toString(), p.toCode());
+            for (int num=0; num < 1000; ++num) {
+    
+                double lat = rand.nextDouble() * (b.getMax().lat() - b.getMin().lat()) + b.getMin().lat();
+                double lon = rand.nextDouble() * (b.getMax().lon() - b.getMin().lon()) + b.getMin().lon();
+    
+                LatLon ll = new LatLon(lat, lon);
+    
+                for (int i=0; i<10; ++i) {
+                    EastNorth en = p.latlon2eastNorth(ll);
+                    ll = p.eastNorth2latlon(en);
+                }
+                maxErrLat = Math.max(maxErrLat, Math.abs(lat - ll.lat()));
+                maxErrLon = Math.max(maxErrLon, Math.abs(lon - ll.lon()));
             }
-            maxErrLat = Math.max(maxErrLat, Math.abs(lat - ll.lat()));
-            maxErrLon = Math.max(maxErrLon, Math.abs(lon - ll.lon()));
+    
+            String mark = "";
+            if (maxErrLat + maxErrLon > 1e-5) {
+                mark = "--FAILED-- ";
+                error = true;
+            }
+            text += String.format("%s errorLat: %s errorLon: %s\n", mark, maxErrLat, maxErrLon);
         }
-
-        String mark = "";
-        if (maxErrLat + maxErrLon > 1e-5) {
-            mark = "--FAILED-- ";
-            error = true;
-        }
-        text += String.format("%s errorLat: %s errorLon: %s\n", mark, maxErrLat, maxErrLon);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java	(revision 5556)
@@ -15,5 +15,5 @@
     @BeforeClass
     public static void setUp() {
-        Main.setProjection(new SwissGrid());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:21781")); // Swiss grid
     }
 
@@ -47,5 +47,5 @@
     @Test
     public void projReferenceTest() {
-        Projection swiss = new SwissGrid();
+        Projection swiss = Projections.getProjectionByCode("EPSG:21781"); // Swiss grid
         String errs = "";
         for (ProjData pd : data) {
Index: trunk/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java	(revision 5555)
+++ trunk/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java	(revision 5556)
@@ -21,5 +21,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.projection.Epsg4326;
+import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 import org.openstreetmap.josm.gui.conflict.pair.properties.PropertiesMergeModel;
@@ -47,5 +47,5 @@
     @BeforeClass
     public static void init() {
-        Main.setProjection(new Epsg4326());
+        Main.setProjection(Projections.getProjectionByCode("EPSG:4326"));
         Main.pref = new Preferences();
     }
