Index: /trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java	(revision 6225)
+++ /trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java	(revision 6226)
@@ -116,5 +116,5 @@
     public int hashCode() {
         final int prime = 31;
-        int result = super.hashCode();
+        int result = 1;
         long temp;
         temp = java.lang.Double.doubleToLongBits(x);
Index: /trunk/src/org/openstreetmap/josm/data/osm/Storage.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Storage.java	(revision 6225)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Storage.java	(revision 6226)
@@ -150,5 +150,5 @@
      * @param capacity
      * @param safeIterator If set to false, you must not modify the Storage
-     *          while iterating over it. If set to true, you can savely
+     *          while iterating over it. If set to true, you can safely
      *          modify, but the read-only iteration will happen on a copy
      *          of the unmodified Storage.
Index: /trunk/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java	(revision 6225)
+++ /trunk/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java	(revision 6226)
@@ -21,6 +21,9 @@
            };
     
+    /**
+     * Test of {@link LatLon#roundToOsmPrecisionStrict}
+     */
     @Test
-    public void roundingTests() {
+    public void testRoundToOsmPrecisionStrict() {
         
         for (double value : sampleValues) {
@@ -74,6 +77,9 @@
     }
     
+    /**
+     * Test of {@link LatLon#toIntervalLon}
+     */
     @Test
-    public void toIntervalLonTests() {
+    public void testToIntervalLon() {
         assertEquals(-180.0, LatLon.toIntervalLon(-180.0), 0);
         assertEquals(0.0, LatLon.toIntervalLon(0.0), 0);
@@ -95,3 +101,27 @@
         assertEquals(179.0, LatLon.toIntervalLon(-541.0), 0);
     }
+
+    /**
+     * Test of {@link LatLon#equals}
+     */
+    @Test
+    public void testEquals() {
+        for (int i = 1; i < sampleValues.length; i++) {
+            LatLon a = new LatLon(sampleValues[i-1], sampleValues[i]);
+            LatLon b = new LatLon(sampleValues[i-1], sampleValues[i]);
+            assertEquals(a, b);
+        }
+    }
+
+    /**
+     * Test of {@link LatLon#hashCode}
+     */
+    @Test
+    public void testHashCode() {
+        for (int i = 1; i < sampleValues.length; i++) {
+            LatLon a = new LatLon(sampleValues[i-1], sampleValues[i]);
+            LatLon b = new LatLon(sampleValues[i-1], sampleValues[i]);
+            assertEquals(a.hashCode(), b.hashCode());
+        }
+    }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java	(revision 6226)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java	(revision 6226)
@@ -0,0 +1,49 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.validation.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+
+/**
+ * JUnit Test of "Duplicate node" validation test. 
+ */
+public class DuplicateNodeTest {
+
+    /**
+     * Setup test by initializing JOSM preferences and projection. 
+     */
+    @BeforeClass
+    public static void setUp() {
+        Main.setProjection(Projections.getProjectionByCode("EPSG:3857")); // Mercator
+        Main.pref = new Preferences();
+    }
+
+    /**
+     * Test of "Duplicate node" validation test.
+     */
+    @Test
+    public void test() {
+        DataSet ds = new DataSet();
+
+        Node a = new Node(new LatLon(10.0, 5.0));
+        Node b = new Node(new LatLon(10.0, 5.0));
+        ds.addPrimitive(a);
+        ds.addPrimitive(b);
+
+        DuplicateNode test = new DuplicateNode();
+        test.startTest(NullProgressMonitor.INSTANCE);
+        test.visit(ds.allPrimitives());
+        test.endTest();
+        
+        assertEquals(1, test.getErrors().size());
+    }
+}
