Ignore:
Timestamp:
2017-06-23T22:52:03+02:00 (8 years ago)
Author:
giackserva
Message:

[pt_assistant] #josm14933 - now supports multiple instances of the roundabout inside the same relation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutTest.java

    r33412 r33413  
    4141    private OsmDataLayer layer;
    4242    private SplitRoundaboutAction action;
    43     private Way r1, r2, r3;
     43    private Way r1, r2, r3, r4;
    4444
    4545    @Before
     
    5454        r2 = (Way) ds.getPrimitiveById(new SimplePrimitiveId(205833435L, OsmPrimitiveType.WAY));
    5555        r3 = (Way) ds.getPrimitiveById(new SimplePrimitiveId(25739002L, OsmPrimitiveType.WAY));
     56        r4 = (Way) ds.getPrimitives(p -> p.hasTag("name", "r4")).iterator().next();
    5657    }
    5758
    5859    private Collection<Way> splitWay(Way w) {
    59         Map<Relation, Integer> savedPositions = action.getSavedPositions(w);
     60        Map<Relation, List<Integer>> savedPositions = action.getSavedPositions(w);
    6061        List<Node> splitNodes = action.getSplitNodes(w);
    61         assertEquals(4, splitNodes.size());
    6262        SplitWayResult result = SplitWayAction.split(layer, w, splitNodes, Collections.emptyList());
    6363        result.getCommand().executeCommand();
    6464        Collection<Way> splitWays = result.getNewWays();
     65        splitWays.add(result.getOriginalWay());
    6566        action.updateRelations(savedPositions, splitNodes, splitWays);
    6667        return splitWays;
     
    6970    @Test
    7071    public void test1() {
    71         splitWay(r1).forEach(w -> {
    72                 if (w.firstNode().getUniqueId() == 267843779L && w.lastNode().getUniqueId() == 2968718407L)
     72        Collection<Way> sw1 = splitWay(r1);
     73        assertEquals(4, sw1.size());
     74        sw1.forEach(w -> {
     75            if (w.firstNode().getUniqueId() == 267843779L && w.lastNode().getUniqueId() == 2968718407L)
    7376                assertEquals(w.getReferrers().size(), 5);
    7477            else if (w.firstNode().getUniqueId() == 2968718407L && w.lastNode().getUniqueId() == 2383688231L)
     
    8588    @Test
    8689    public void test2() {
    87         splitWay(r2).forEach(w -> {
     90        Collection<Way> sw2 = splitWay(r2);
     91        assertEquals(4, sw2.size());
     92        sw2.forEach(w -> {
    8893            if(w.firstNode().getUniqueId() == 2158181809L && w.lastNode().getUniqueId() == 2158181798L)
    8994                assertEquals(w.getReferrers().size(), 8);
     
    101106    @Test
    102107    public void test3() {
    103         splitWay(r3).forEach(w -> {
     108        Collection<Way> sw3 = splitWay(r3);
     109        assertEquals(4, sw3.size());
     110        sw3.forEach(w -> {
    104111            if(w.firstNode().getUniqueId() == 280697532L && w.lastNode().getUniqueId() == 280697452L)
    105112                assertEquals(w.getReferrers().size(), 0);
     
    114121        });
    115122    }
     123
     124    @Test
     125    public void test4() {
     126        Collection<Way> sw4 = splitWay(r4);
     127        assertEquals(10, sw4.size());
     128        Node entry11 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nentry1-1")).iterator().next();
     129        Node exit11 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nexit1-1")).iterator().next();
     130        Node entry12 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nentry1-2")).iterator().next();
     131        Node exit12 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nexit1-2")).iterator().next();
     132        Node entry21 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nentry2-1")).iterator().next();
     133        Node exit21 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nexit2-1")).iterator().next();
     134        Node entry22 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nentry2-2")).iterator().next();
     135        Node exit22 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nexit2-2")).iterator().next();
     136        Node entry3 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nentry3")).iterator().next();
     137        Node exit3 = (Node) ds.getPrimitives(p -> p.hasTag("name", "nexit3")).iterator().next();
     138
     139        sw4.forEach(w -> {
     140            if(w.firstNode().equals(entry11) && w.lastNode().equals(exit22))
     141                assertEquals(2, w.getReferrers().size());
     142            else if(w.firstNode().equals(exit22) && w.lastNode().equals(entry21))
     143                assertEquals(1, w.getReferrers().size());
     144            else if(w.firstNode().equals(entry21) && w.lastNode().equals(exit11))
     145                assertEquals(2, w.getReferrers().size());
     146            else if(w.firstNode().equals(exit11) && w.lastNode().equals(entry12))
     147                assertEquals(1, w.getReferrers().size());
     148            else if(w.firstNode().equals(entry12) && w.lastNode().equals(entry3))
     149                assertEquals(2, w.getReferrers().size());
     150            else if(w.firstNode().equals(entry3) && w.lastNode().equals(exit21))
     151                assertEquals(3, w.getReferrers().size());
     152            else if(w.firstNode().equals(exit21) && w.lastNode().equals(entry22))
     153                assertEquals(2, w.getReferrers().size());
     154            else if(w.firstNode().equals(entry22) && w.lastNode().equals(exit3))
     155                assertEquals(3, w.getReferrers().size());
     156            else if(w.firstNode().equals(exit3) && w.lastNode().equals(exit12))
     157                assertEquals(2, w.getReferrers().size());
     158            else if(w.firstNode().equals(exit12) && w.lastNode().equals(entry11))
     159                assertEquals(1, w.getReferrers().size());
     160            else
     161                fail();
     162        });
     163    }
    116164}
Note: See TracChangeset for help on using the changeset viewer.