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

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

see #13036 - fix more 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        Relation r = new Relation(1);
93        new DataSet(r);
94        assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.<OsmPrimitive>emptyList()));
95        assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Relation(1))));
96
97        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Node(1))));
98        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Way(1))));
99        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Relation(2))));
100    }
101
102    /**
103     * Unit test of {@code GenericRelationEditor#build*} methods.
104     */
105    @Test
106    public void testBuild() {
107        DataSet ds = new DataSet();
108        Relation relation = new Relation(1);
109        ds.addPrimitive(relation);
110        OsmDataLayer layer = new OsmDataLayer(ds, "test", null);
111        IRelationEditor re = newRelationEditor(relation, layer);
112
113        MemberTableModel memberTableModel = new MemberTableModel(relation, layer, null);
114        MemberTable memberTable = new MemberTable(layer, relation, memberTableModel);
115
116        SelectionTableModel selectionTableModel = new SelectionTableModel(layer);
117        SelectionTable selectionTable = new SelectionTable(selectionTableModel, memberTableModel);
118
119        LeftButtonToolbar leftButtonToolbar = new LeftButtonToolbar(memberTable, memberTableModel, re);
120        assertNotNull(leftButtonToolbar.sortBelowButton);
121
122        AutoCompletingTextField tfRole = GenericRelationEditor.buildRoleTextField(re);
123        assertNotNull(tfRole);
124
125        TagEditorPanel tagEditorPanel = new TagEditorPanel(relation, null);
126
127        JPanel top = GenericRelationEditor.buildTagEditorPanel(tagEditorPanel);
128        JPanel bottom = GenericRelationEditor.buildMemberEditorPanel(
129                memberTable, memberTableModel, selectionTable, selectionTableModel, re, leftButtonToolbar, tfRole);
130        assertNotNull(top);
131        assertNotNull(bottom);
132        assertNotNull(GenericRelationEditor.buildSplitPane(top, bottom, re));
133
134        TagEditorModel tagModel = tagEditorPanel.getModel();
135
136        assertNotNull(GenericRelationEditor.buildOkCancelButtonPanel(
137                new OKAction(memberTable, memberTableModel, tagModel, layer, re, tfRole),
138                new CancelAction(memberTable, memberTableModel, tagModel, layer, re, tfRole)));
139        assertNotNull(GenericRelationEditor.buildSelectionControlButtonToolbar(memberTable, memberTableModel, selectionTableModel, re));
140        assertNotNull(GenericRelationEditor.buildSelectionTablePanel(selectionTable));
141
142        assertNotNull(GenericRelationEditor.buildToolBar(
143                new RefreshAction(memberTable, memberTableModel, tagModel, layer, re),
144                new ApplyAction(memberTable, memberTableModel, tagModel, layer, re),
145                new DuplicateRelationAction(memberTableModel, tagModel, layer),
146                new DeleteCurrentRelationAction(layer, re)));
147    }
148}
Note: See TracBrowser for help on using the repository browser.