source: josm/trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java@ 12564

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

fix unit tests

  • Property svn:eol-style set to native
File size: 5.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation;
3
4import static org.junit.Assert.assertNotNull;
5import static org.junit.Assert.assertNull;
6
7import java.util.Collections;
8
9import javax.swing.JPanel;
10
11import org.junit.Rule;
12import org.junit.Test;
13import org.openstreetmap.josm.data.osm.DataSet;
14import org.openstreetmap.josm.data.osm.Node;
15import org.openstreetmap.josm.data.osm.OsmPrimitive;
16import org.openstreetmap.josm.data.osm.Relation;
17import org.openstreetmap.josm.data.osm.Way;
18import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.LeftButtonToolbar;
19import org.openstreetmap.josm.gui.dialogs.relation.actions.ApplyAction;
20import org.openstreetmap.josm.gui.dialogs.relation.actions.CancelAction;
21import org.openstreetmap.josm.gui.dialogs.relation.actions.DeleteCurrentRelationAction;
22import org.openstreetmap.josm.gui.dialogs.relation.actions.DuplicateRelationAction;
23import org.openstreetmap.josm.gui.dialogs.relation.actions.OKAction;
24import org.openstreetmap.josm.gui.dialogs.relation.actions.RefreshAction;
25import org.openstreetmap.josm.gui.layer.OsmDataLayer;
26import org.openstreetmap.josm.gui.tagging.TagEditorModel;
27import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
28import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
29import org.openstreetmap.josm.testutils.JOSMTestRules;
30
31import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
32
33/**
34 * Unit tests of {@link GenericRelationEditor} class.
35 */
36public class GenericRelationEditorTest {
37
38 /**
39 * Setup test.
40 */
41 @Rule
42 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
43 public JOSMTestRules test = new JOSMTestRules().preferences().platform().main();
44
45 /**
46 * Returns a new relation editor for unit tests.
47 * @param orig relation
48 * @param layer data layer
49 * @return new relation editor for unit tests
50 */
51 public static IRelationEditor newRelationEditor(final Relation orig, final OsmDataLayer layer) {
52 return new IRelationEditor() {
53 private Relation r = orig;
54
55 @Override
56 public void setRelation(Relation relation) {
57 r = relation;
58 }
59
60 @Override
61 public boolean isDirtyRelation() {
62 return false;
63 }
64
65 @Override
66 public Relation getRelationSnapshot() {
67 return r;
68 }
69
70 @Override
71 public Relation getRelation() {
72 return r;
73 }
74
75 @Override
76 public void reloadDataFromRelation() {
77 // Do nothing
78 }
79
80 @Override
81 public OsmDataLayer getLayer() {
82 return layer;
83 }
84 };
85 }
86
87 /**
88 * Unit test of {@link GenericRelationEditor#addPrimitivesToRelation}.
89 */
90 @Test
91 public void testAddPrimitivesToRelation() {
92 assertNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.<OsmPrimitive>emptyList()));
93 assertNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Relation(1))));
94
95 assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Node(1))));
96 assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Way(1))));
97 assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Relation(2))));
98 }
99
100 /**
101 * Unit test of {@code GenericRelationEditor#build*} methods.
102 */
103 @Test
104 public void testBuild() {
105 DataSet ds = new DataSet();
106 Relation relation = new Relation(1);
107 ds.addPrimitive(relation);
108 OsmDataLayer layer = new OsmDataLayer(ds, "test", null);
109 IRelationEditor re = newRelationEditor(relation, layer);
110
111 MemberTableModel memberTableModel = new MemberTableModel(relation, layer, null);
112 MemberTable memberTable = new MemberTable(layer, relation, memberTableModel);
113
114 SelectionTableModel selectionTableModel = new SelectionTableModel(layer);
115 SelectionTable selectionTable = new SelectionTable(selectionTableModel, memberTableModel);
116
117 LeftButtonToolbar leftButtonToolbar = new LeftButtonToolbar(memberTable, memberTableModel, re);
118 assertNotNull(leftButtonToolbar.sortBelowButton);
119
120 AutoCompletingTextField tfRole = GenericRelationEditor.buildRoleTextField(re);
121 assertNotNull(tfRole);
122
123 TagEditorPanel tagEditorPanel = new TagEditorPanel(relation, null);
124
125 JPanel top = GenericRelationEditor.buildTagEditorPanel(tagEditorPanel);
126 JPanel bottom = GenericRelationEditor.buildMemberEditorPanel(
127 memberTable, memberTableModel, selectionTable, selectionTableModel, re, leftButtonToolbar, tfRole);
128 assertNotNull(top);
129 assertNotNull(bottom);
130 assertNotNull(GenericRelationEditor.buildSplitPane(top, bottom, re));
131
132 TagEditorModel tagModel = tagEditorPanel.getModel();
133
134 assertNotNull(GenericRelationEditor.buildOkCancelButtonPanel(
135 new OKAction(memberTable, memberTableModel, tagModel, layer, re, tfRole),
136 new CancelAction(memberTable, memberTableModel, tagModel, layer, re, tfRole)));
137 assertNotNull(GenericRelationEditor.buildSelectionControlButtonToolbar(memberTable, memberTableModel, selectionTableModel, re));
138 assertNotNull(GenericRelationEditor.buildSelectionTablePanel(selectionTable));
139
140 assertNotNull(GenericRelationEditor.buildToolBar(
141 new RefreshAction(memberTable, memberTableModel, tagModel, layer, re),
142 new ApplyAction(memberTable, memberTableModel, tagModel, layer, re),
143 new DuplicateRelationAction(memberTableModel, tagModel, layer),
144 new DeleteCurrentRelationAction(layer, re)));
145 }
146}
Note: See TracBrowser for help on using the repository browser.