source: josm/trunk/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java@ 8937

Last change on this file since 8937 was 8876, checked in by Don-vip, 9 years ago

cleanup unit tests

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.junit.Assert.assertSame;
5import static org.junit.Assert.assertTrue;
6
7import java.util.Arrays;
8
9import org.junit.BeforeClass;
10import org.junit.Test;
11import org.openstreetmap.josm.JOSMFixture;
12import org.openstreetmap.josm.Main;
13import org.openstreetmap.josm.data.coor.EastNorth;
14import org.openstreetmap.josm.data.osm.DataSet;
15import org.openstreetmap.josm.data.osm.Node;
16import org.openstreetmap.josm.data.osm.Way;
17import org.openstreetmap.josm.gui.layer.OsmDataLayer;
18
19/**
20 * Unit tests for class {@link SplitWayAction}.
21 */
22public final class SplitWayActionTest {
23
24 /** Class under test. */
25 private static SplitWayAction action;
26
27 /**
28 * Setup test.
29 */
30 @BeforeClass
31 public static void setUp() {
32 JOSMFixture.createUnitTestFixture().init(true);
33
34 // Enable "Align in line" feature.
35 action = Main.main.menu.splitWay;
36 action.setEnabled(true);
37 }
38
39 /**
40 * Test case: When node is share by multiple ways, split selected way.
41 * see #11184
42 */
43 @Test
44 public void testTicket11184() {
45 DataSet dataSet = new DataSet();
46 OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
47
48 Node n1 = new Node(new EastNorth(0, 0));
49 Node n2 = new Node(new EastNorth(-1, 1));
50 Node n3 = new Node(new EastNorth(1, 1));
51 Node n4 = new Node(new EastNorth(-1, -1));
52 Node n5 = new Node(new EastNorth(1, -1));
53 Node n6 = new Node(new EastNorth(-1, 0));
54 Node n7 = new Node(new EastNorth(1, 0));
55 dataSet.addPrimitive(n1);
56 dataSet.addPrimitive(n2);
57 dataSet.addPrimitive(n3);
58 dataSet.addPrimitive(n4);
59 dataSet.addPrimitive(n5);
60 dataSet.addPrimitive(n6);
61 dataSet.addPrimitive(n7);
62
63 Way w1 = new Way();
64 Node[] w1NodesArray = new Node[] {n6, n1, n7};
65 w1.setNodes(Arrays.asList(w1NodesArray));
66 Way w2 = new Way();
67 w2.setNodes(Arrays.asList(new Node[] {n1, n2, n3, n1, n4, n5, n1}));
68 dataSet.addPrimitive(w1);
69 dataSet.addPrimitive(w2);
70
71 dataSet.addSelected(n1);
72 dataSet.addSelected(w2);
73
74 try {
75 Main.main.addLayer(layer);
76 action.actionPerformed(null);
77 } finally {
78 // Ensure we clean the place before leaving, even if test fails.
79 Main.map.mapView.removeLayer(layer);
80 }
81
82 // Ensures 3 ways.
83 assertSame(String.format("Found %d ways after split action instead of 3.", dataSet.getWays().size()),
84 dataSet.getWays().size(), 3);
85
86 // Ensures way w1 is unchanged.
87 assertTrue("Unselected ways disappear during split action.",
88 dataSet.getWays().contains(w1));
89 assertSame("Unselected way seems to have change during split action.",
90 w1.getNodesCount(), 3);
91 for (int i = 0; i < 3; i++) {
92 assertSame("Node change in unselected way during split action.",
93 w1.getNode(i), w1NodesArray[i]);
94 }
95 }
96}
Note: See TracBrowser for help on using the repository browser.