source: josm/trunk/test/unit/org/openstreetmap/josm/command/SelectCommandTest.java@ 12859

Last change on this file since 12859 was 12726, checked in by Don-vip, 7 years ago

see #13036 - deprecate Command() default constructor, fix unit tests and java warnings

File size: 5.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.command;
3
4import static org.junit.Assert.assertArrayEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertTrue;
7
8import java.util.ArrayList;
9import java.util.Arrays;
10import java.util.List;
11
12import org.junit.Before;
13import org.junit.Rule;
14import org.junit.Test;
15import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
16import org.openstreetmap.josm.data.osm.DataSet;
17import org.openstreetmap.josm.data.osm.OsmPrimitive;
18import org.openstreetmap.josm.data.osm.User;
19import org.openstreetmap.josm.gui.layer.OsmDataLayer;
20import org.openstreetmap.josm.testutils.JOSMTestRules;
21
22import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
23import nl.jqno.equalsverifier.EqualsVerifier;
24import nl.jqno.equalsverifier.Warning;
25
26/**
27 * Unit tests of {@link SelectCommand} class.
28 */
29public class SelectCommandTest {
30
31 /**
32 * We need prefs for nodes.
33 */
34 @Rule
35 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
36 public JOSMTestRules test = new JOSMTestRules().preferences();
37 private CommandTestDataWithRelation testData;
38
39 /**
40 * Set up the test data.
41 */
42 @Before
43 public void createTestData() {
44 testData = new CommandTestDataWithRelation();
45 }
46
47 /**
48 * Test {@link SelectCommand#executeCommand()}
49 */
50 @Test
51 public void testExecute() {
52 SelectCommand command = new SelectCommand(testData.layer.data, Arrays.asList(testData.existingNode, testData.existingWay));
53
54 testData.layer.data.setSelected(Arrays.asList(testData.existingNode2));
55
56 command.executeCommand();
57
58 assertTrue(testData.existingNode.isSelected());
59 assertFalse(testData.existingNode2.isSelected());
60 assertTrue(testData.existingWay.isSelected());
61 }
62
63 /**
64 * Test {@link SelectCommand#executeCommand()}
65 */
66 @Test
67 public void testExecuteAfterModify() {
68 List<OsmPrimitive> list = new ArrayList<>(Arrays.asList(testData.existingNode, testData.existingWay));
69 SelectCommand command = new SelectCommand(testData.layer.data, list);
70
71 list.remove(testData.existingNode);
72 list.add(testData.existingNode2);
73
74 command.executeCommand();
75
76 assertTrue(testData.existingNode.isSelected());
77 assertFalse(testData.existingNode2.isSelected());
78 assertTrue(testData.existingWay.isSelected());
79 }
80
81 /**
82 * Test {@link SelectCommand#undoCommand()}
83 */
84 @Test
85 public void testUndo() {
86 SelectCommand command = new SelectCommand(testData.layer.data, Arrays.asList(testData.existingNode, testData.existingWay));
87 testData.layer.data.setSelected(Arrays.asList(testData.existingNode2));
88
89 command.executeCommand();
90
91 command.undoCommand();
92
93 assertFalse(testData.existingNode.isSelected());
94 assertTrue(testData.existingNode2.isSelected());
95 assertFalse(testData.existingWay.isSelected());
96
97 command.executeCommand();
98
99 assertTrue(testData.existingNode.isSelected());
100 assertFalse(testData.existingNode2.isSelected());
101 assertTrue(testData.existingWay.isSelected());
102 }
103
104 /**
105 * Tests {@link SelectCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
106 */
107 @Test
108 public void testFillModifiedData() {
109 ArrayList<OsmPrimitive> modified = new ArrayList<>();
110 ArrayList<OsmPrimitive> deleted = new ArrayList<>();
111 ArrayList<OsmPrimitive> added = new ArrayList<>();
112 SelectCommand command = new SelectCommand(testData.layer.data, Arrays.asList(testData.existingNode, testData.existingWay));
113 command.fillModifiedData(modified, deleted, added);
114 // intentionally empty.
115 assertArrayEquals(new Object[] {}, modified.toArray());
116 assertArrayEquals(new Object[] {}, deleted.toArray());
117 assertArrayEquals(new Object[] {}, added.toArray());
118 }
119
120 /**
121 * Tests {@link SelectCommand#getParticipatingPrimitives()}
122 */
123 @Test
124 public void testGetParticipatingPrimitives() {
125 SelectCommand command = new SelectCommand(testData.layer.data, Arrays.asList(testData.existingNode));
126 command.executeCommand();
127 assertArrayEquals(new Object[] {testData.existingNode}, command.getParticipatingPrimitives().toArray());
128 }
129
130 /**
131 * Test {@link SelectCommand#getDescriptionText()}
132 */
133 @Test
134 public void testDescription() {
135 DataSet ds = testData.layer.data;
136 assertTrue(new SelectCommand(ds, Arrays.<OsmPrimitive>asList(testData.existingNode))
137 .getDescriptionText().matches("Selected 1 object"));
138 assertTrue(new SelectCommand(ds, Arrays.asList(testData.existingNode, testData.existingWay))
139 .getDescriptionText().matches("Selected 2 objects"));
140 assertTrue(new SelectCommand(ds, Arrays.<OsmPrimitive>asList())
141 .getDescriptionText().matches("Selected 0 objects"));
142 assertTrue(new SelectCommand(ds, null)
143 .getDescriptionText().matches("Selected 0 objects"));
144 }
145
146 /**
147 * Unit test of methods {@link SelectCommand#equals} and {@link SelectCommand#hashCode}.
148 */
149 @Test
150 public void testEqualsContract() {
151 EqualsVerifier.forClass(SelectCommand.class).usingGetClass()
152 .withPrefabValues(DataSet.class,
153 new DataSet(), new DataSet())
154 .withPrefabValues(User.class,
155 User.createOsmUser(1, "foo"), User.createOsmUser(2, "bar"))
156 .withPrefabValues(OsmDataLayer.class,
157 new OsmDataLayer(new DataSet(), "1", null), new OsmDataLayer(new DataSet(), "2", null))
158 .suppress(Warning.NONFINAL_FIELDS)
159 .verify();
160 }
161}
Note: See TracBrowser for help on using the repository browser.