source: josm/trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java@ 14028

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

see #16388 - fix compilation errors in unit tests caused by r14027 (broke all Jenkins builds)

File size: 4.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation.actions;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertSame;
7import static org.junit.Assert.assertTrue;
8
9import java.util.Collections;
10import java.util.Set;
11
12import org.junit.Test;
13import org.openstreetmap.josm.data.osm.Node;
14import org.openstreetmap.josm.data.osm.Relation;
15import org.openstreetmap.josm.data.osm.RelationMember;
16import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
17import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
18import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
19import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
20import org.openstreetmap.josm.gui.util.GuiHelper;
21
22/**
23 * Test for {@link PasteMembersAction}
24 * @author Michael Zangl
25 */
26public class PasteMembersActionTest extends AbstractRelationEditorActionTest {
27 /**
28 * Test {@link PasteMembersAction#isEnabled()}
29 */
30 @Test
31 public void testEnabledState() {
32 copyString();
33
34 PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
35 ClipboardUtils.getClipboard().addFlavorListener(action);
36
37 try {
38 assertFalse(action.isEnabled());
39
40 Node node = new Node();
41 copyNode(node);
42 syncListener();
43 assertTrue(action.isEnabled());
44
45 copyMember(node);
46 syncListener();
47 assertTrue(action.isEnabled());
48
49 copyString();
50 syncListener();
51 assertFalse(action.isEnabled());
52 } finally {
53 ClipboardUtils.getClipboard().removeFlavorListener(action);
54 }
55 }
56
57 private void syncListener() {
58 GuiHelper.runInEDTAndWait(() -> {
59 // nop
60 });
61 }
62
63 /**
64 * Test that pasting produces the result required
65 */
66 @Test
67 public void testActionWrongClipboard() {
68 copyString();
69 PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
70 action.actionPerformed(null);
71
72 Relation relation = new Relation(1);
73 relationEditorAccess.getMemberTableModel().applyToRelation(relation);
74 assertEquals(0, relation.getMembersCount());
75 }
76
77 /**
78 * Test that pasting produces the result required
79 */
80 @Test
81 public void testActionForMembers() {
82 Node testNode = new Node(10);
83 layer.data.addPrimitive(testNode);
84 copyMember(testNode);
85 PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
86 action.actionPerformed(null);
87
88 Relation relation = new Relation(1);
89 relationEditorAccess.getMemberTableModel().applyToRelation(relation);
90 assertEquals(1, relation.getMembersCount());
91 assertEquals("test", relation.getMember(0).getRole());
92 assertSame(testNode, relation.getMember(0).getMember());
93 }
94
95 /**
96 * Test that pasting primitvies produces the result required
97 */
98 @Test
99 public void testActionForPrimitives() {
100 Node testNode = new Node(10);
101 layer.data.addPrimitive(testNode);
102 copyNode(testNode);
103 PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
104 action.actionPerformed(null);
105
106 Relation relation = new Relation(1);
107 relationEditorAccess.getMemberTableModel().applyToRelation(relation);
108 assertEquals(1, relation.getMembersCount());
109 assertEquals("", relation.getMember(0).getRole());
110 assertSame(testNode, relation.getMember(0).getMember());
111 }
112
113 private void copyNode(Node node) {
114 PrimitiveTransferData data = PrimitiveTransferData.getData(Collections.singleton(node));
115 ClipboardUtils.copy(new PrimitiveTransferable(data));
116 }
117
118 private void copyMember(Node node) {
119 Set<RelationMember> members = Collections.singleton(new RelationMember("test", node));
120 ClipboardUtils.copy(new RelationMemberTransferable(members));
121 }
122
123 private void copyString() {
124 ClipboardUtils.copyString("");
125 }
126}
Note: See TracBrowser for help on using the repository browser.