Changeset 57 in josm for test/org


Ignore:
Timestamp:
2006-02-21T13:39:40+01:00 (20 years ago)
Author:
imi
Message:

fixed bug where merged nodes and line segments were equal but not the same (aliasing)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/org/openstreetmap/josm/test/MergeVisitorTest.java

    r52 r57  
    77import org.openstreetmap.josm.data.osm.LineSegment;
    88import org.openstreetmap.josm.data.osm.Node;
     9import org.openstreetmap.josm.data.osm.OsmPrimitive;
    910import org.openstreetmap.josm.data.osm.visitor.MergeVisitor;
     11import org.openstreetmap.josm.test.framework.Bug;
    1012import org.openstreetmap.josm.test.framework.DataSetTestCaseHelper;
    1113
     
    1921        public void testMergeOldLineSegmentsWithNew() {
    2022                DataSet ds = new DataSet();
    21                 Node n1 = DataSetTestCaseHelper.createNode(ds);
    22                 n1.id = 1;
    23                 Node n2 = DataSetTestCaseHelper.createNode(ds);
    24                 n2.id = 2;
    25                 LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n1, n2);
     23                Node[] n = createNodes(ds, 2);
     24                LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n[0], n[1]);
    2625                ls1.id = 3;
    2726
    2827                Node newnode = new Node();
    29                 newnode.coor = new GeoPoint(n2.coor.lat, n2.coor.lon);
    30                 LineSegment newls = new LineSegment(n1, newnode);
     28                newnode.coor = new GeoPoint(n[1].coor.lat, n[1].coor.lon);
     29                LineSegment newls = new LineSegment(n[0], newnode);
    3130
    3231                MergeVisitor v = new MergeVisitor(ds);
     
    3433                assertEquals("line segment should have been merged.", 1, ds.lineSegments.size());
    3534        }
     35       
     36        /**
     37         * Nodes beeing merged are equal but not the same.
     38         */
     39        @Bug(54)
     40        public void testEqualNotSame() {
     41                // create a dataset with line segment a-b
     42                DataSet ds = new DataSet();
     43                Node n[] = createNodes(ds, 2);
     44                LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n[0], n[1]);
     45                ls1.id = 1;
     46               
     47                // create an other dataset with line segment a'-c (a' is equal, but not same to a)
     48                DataSet ds2 = new DataSet();
     49                Node n2[] = createNodes(ds2, 2);
     50                n2[0].coor = new GeoPoint(n[0].coor.lat, n[0].coor.lon);
     51                n2[1].id = 42;
     52                LineSegment ls2 = DataSetTestCaseHelper.createLineSegment(ds, n2[0], n2[1]);
     53               
     54                MergeVisitor v = new MergeVisitor(ds);
     55                for (OsmPrimitive osm : ds2.allPrimitives())
     56                        osm.visit(v);
     57                v.fixReferences();
     58               
     59                assertSame(ls1.start, ls2.start);
     60        }
     61       
     62       
     63        /**
     64         * Create that amount of nodes and add them to the dataset. The id will be 1,2,3,4...
     65         * @param amount Number of nodes to create.
     66         * @return The created nodes.
     67         */
     68        private Node[] createNodes(DataSet ds, int amount) {
     69                Node[] nodes = new Node[amount];
     70                for (int i = 0; i < amount; ++i) {
     71                        nodes[i] = DataSetTestCaseHelper.createNode(ds);
     72                        nodes[i].id = i+1;
     73                }
     74                return nodes;
     75        }
    3676}
Note: See TracChangeset for help on using the changeset viewer.