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

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

fix #21064 - Add JUnit 5 extension for preferences (patch by taylor.smock)

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