source: josm/trunk/test/unit/org/openstreetmap/josm/command/ChangeMembersCommandTest.java@ 17442

Last change on this file since 17442 was 17275, checked in by Don-vip, 3 years ago

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

File size: 4.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.command;
3
4import static org.junit.jupiter.api.Assertions.assertEquals;
5import static org.junit.jupiter.api.Assertions.assertTrue;
6
7import java.util.Collections;
8import java.util.List;
9
10import org.junit.jupiter.api.BeforeEach;
11import org.junit.jupiter.api.Test;
12import org.junit.jupiter.api.extension.RegisterExtension;
13import org.openstreetmap.josm.TestUtils;
14import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
15import org.openstreetmap.josm.data.osm.DataSet;
16import org.openstreetmap.josm.data.osm.Node;
17import org.openstreetmap.josm.data.osm.OsmPrimitive;
18import org.openstreetmap.josm.data.osm.RelationMember;
19import org.openstreetmap.josm.data.osm.User;
20import org.openstreetmap.josm.gui.layer.OsmDataLayer;
21import org.openstreetmap.josm.testutils.JOSMTestRules;
22
23import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
24import nl.jqno.equalsverifier.EqualsVerifier;
25import nl.jqno.equalsverifier.Warning;
26
27/**
28 * Unit tests of {@link ChangeMembersCommand} class.
29 */
30class ChangeMembersCommandTest {
31
32 /**
33 * We need prefs for nodes.
34 */
35 @RegisterExtension
36 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
37 public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
38 private CommandTestDataWithRelation testData;
39
40 /**
41 * Set up the test data.
42 */
43 @BeforeEach
44 public void createTestData() {
45 testData = new CommandTestDataWithRelation();
46 }
47
48 /**
49 * Test {@link ChangeMembersCommand#executeCommand()}
50 */
51 @Test
52 void testChange() {
53 assertTrue(testData.existingNode.getReferrers().contains(testData.existingRelation));
54 assertEquals(2, testData.existingRelation.getMembersCount());
55 List<RelationMember> members = testData.existingRelation.getMembers();
56 members.add(new RelationMember("n2", testData.existingNode2));
57 new ChangeMembersCommand(testData.existingRelation, members).executeCommand();
58 assertEquals(3, testData.existingRelation.getMembersCount());
59 members = testData.existingRelation.getMembers();
60 members.remove(0);
61 new ChangeMembersCommand(testData.existingRelation, members).executeCommand();
62 assertEquals(2, testData.existingRelation.getMembersCount());
63 assertTrue(testData.existingRelation.getMembersFor(Collections.singleton(testData.existingNode)).isEmpty());
64 assertEquals(testData.existingWay, testData.existingRelation.getMember(0).getMember());
65 assertEquals(testData.existingNode2, testData.existingRelation.getMember(1).getMember());
66 }
67
68 /**
69 * Test {@link ChangeMembersCommand#undoCommand()}
70 */
71 @Test
72 void testUndo() {
73 List<RelationMember> members = testData.existingRelation.getMembers();
74 members.add(new RelationMember("n2", testData.existingNode2));
75 Command command = new ChangeMembersCommand(testData.existingRelation, members);
76 command.executeCommand();
77
78 assertEquals(3, testData.existingRelation.getMembersCount());
79
80 command.undoCommand();
81 assertEquals(2, testData.existingRelation.getMembersCount());
82 }
83
84 /**
85 * Test {@link ChangeMembersCommand#getDescriptionText()}
86 */
87 @Test
88 void testDescription() {
89 testData.existingRelation.put("name", "xy");
90 List<RelationMember> members = testData.existingRelation.getMembers();
91 members.remove(1);
92 assertTrue(new ChangeMembersCommand(testData.existingRelation, members).getDescriptionText().matches("Change members of .*xy.*"));
93 }
94
95 /**
96 * Unit test of methods {@link ChangeMembersCommand#equals} and {@link ChangeMembersCommand#hashCode}.
97 */
98 @Test
99 void testEqualsContract() {
100 TestUtils.assumeWorkingEqualsVerifier();
101 EqualsVerifier.forClass(ChangeMembersCommand.class).usingGetClass()
102 .withPrefabValues(DataSet.class,
103 new DataSet(), new DataSet())
104 .withPrefabValues(User.class,
105 User.createOsmUser(1, "foo"), User.createOsmUser(2, "bar"))
106 .withPrefabValues(OsmPrimitive.class,
107 new Node(1), new Node(2))
108 .withPrefabValues(OsmDataLayer.class,
109 new OsmDataLayer(new DataSet(), "1", null), new OsmDataLayer(new DataSet(), "2", null))
110 .suppress(Warning.NONFINAL_FIELDS)
111 .verify();
112 }
113
114}
Note: See TracBrowser for help on using the repository browser.