source: josm/trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java@ 13174

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

see #15310 - fix unit tests, warnings

  • Property svn:eol-style set to native
File size: 7.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertNotNull;
7import static org.junit.Assert.assertTrue;
8
9import java.io.File;
10
11import org.junit.Before;
12import org.junit.Rule;
13import org.junit.Test;
14import org.openstreetmap.josm.TestUtils;
15import org.openstreetmap.josm.actions.ExpertToggleAction;
16import org.openstreetmap.josm.data.Bounds;
17import org.openstreetmap.josm.data.coor.LatLon;
18import org.openstreetmap.josm.data.osm.DataSet;
19import org.openstreetmap.josm.data.osm.Node;
20import org.openstreetmap.josm.data.osm.OsmPrimitive;
21import org.openstreetmap.josm.data.osm.Relation;
22import org.openstreetmap.josm.data.osm.Way;
23import org.openstreetmap.josm.gui.MainApplication;
24import org.openstreetmap.josm.testutils.JOSMTestRules;
25
26import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
27
28/**
29 * Unit tests of {@link OsmDataLayer} class.
30 */
31public class OsmDataLayerTest {
32
33 /**
34 * Setup tests
35 */
36 @Rule
37 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
38 public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
39
40 private DataSet ds;
41 private OsmDataLayer layer;
42
43 /**
44 * Setup tests
45 */
46 @Before
47 public void setUp() {
48 ds = new DataSet();
49 layer = new OsmDataLayer(ds, "", null);
50 MainApplication.getLayerManager().addLayer(layer);
51 }
52
53 /**
54 * Unit test of {@link OsmDataLayer#setRecentRelation} and {@link OsmDataLayer#getRecentRelations}.
55 */
56 @Test
57 public void testRecentRelation() {
58 int n = OsmDataLayer.PROPERTY_RECENT_RELATIONS_NUMBER.get();
59 assertTrue(n > 0);
60 for (int i = 0; i < 2*n; i++) {
61 Relation r = new Relation(i, 1);
62 ds.addPrimitive(r);
63 layer.setRecentRelation(r);
64 }
65 assertEquals(n, layer.getRecentRelations().size());
66 for (OsmPrimitive r : ds.allPrimitives()) {
67 if (r instanceof Relation) {
68 layer.removeRecentRelation((Relation) r);
69 }
70 }
71 assertTrue(layer.getRecentRelations().isEmpty());
72 }
73
74 /**
75 * Unit test of {@link OsmDataLayer#getInfoComponent}.
76 */
77 @Test
78 public void testGetInfoComponent() {
79 assertNotNull(layer.getInfoComponent());
80
81 layer.setUploadDiscouraged(true);
82
83 fillDataSet(ds);
84
85 assertNotNull(layer.getInfoComponent());
86 }
87
88 private void fillDataSet(DataSet ds) {
89 Node n = new Node(1, 2);
90 n.setCoor(LatLon.ZERO);
91 n.setDeleted(true);
92 n.setVisible(false);
93 ds.addPrimitive(n);
94 n = new Node(2, 2);
95 n.setCoor(LatLon.ZERO);
96 ds.addPrimitive(n);
97
98 Way w = new Way(1, 2);
99 w.setDeleted(true);
100 w.setVisible(false);
101 ds.addPrimitive(w);
102 ds.addPrimitive(new Way(2, 2));
103
104 Relation r = new Relation(1, 2);
105 r.setDeleted(true);
106 r.setVisible(false);
107 ds.addPrimitive(r);
108 ds.addPrimitive(new Relation(2, 2));
109 }
110
111 /**
112 * Unit test of {@link OsmDataLayer#addLayerStateChangeListener}.
113 */
114 @Test
115 public void testLayerStateChangeListenerNull() {
116 layer.addLayerStateChangeListener(null);
117 }
118
119 /**
120 * Unit test of {@link OsmDataLayer#getIcon}.
121 */
122 @Test
123 public void testGetIcon() {
124 assertNotNull(layer.getIcon());
125 layer.setUploadDiscouraged(true);
126 assertNotNull(layer.getIcon());
127 }
128
129 /**
130 * Unit test of {@link OsmDataLayer#paint}.
131 */
132 @Test
133 public void testPaint() {
134 fillDataSet(ds);
135 assertNotNull(MainApplication.getMap());
136 layer.paint(TestUtils.newGraphics(), MainApplication.getMap().mapView, new Bounds(LatLon.ZERO));
137 }
138
139 /**
140 * Unit test of {@link OsmDataLayer#getToolTipText}.
141 */
142 @Test
143 public void testGetToolTipText() {
144 assertEquals("<html>0 nodes<br>0 ways<br>0 relations</html>", new OsmDataLayer(ds, "", null).getToolTipText());
145 fillDataSet(ds);
146 assertEquals("<html>1 node<br>1 way<br>1 relation</html>", new OsmDataLayer(ds, "", null).getToolTipText());
147 assertEquals("<html>1 node<br>1 way<br>1 relation<br>data.osm</html>", new OsmDataLayer(ds, "", new File("data.osm")).getToolTipText());
148 }
149
150 /**
151 * Unit test of {@link OsmDataLayer#mergeFrom}.
152 */
153 @Test
154 public void testMergeFrom() {
155 fillDataSet(ds);
156 OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "", null);
157 MainApplication.getLayerManager().addLayer(layer2);
158 assertTrue(layer2.data.allPrimitives().isEmpty());
159 assertTrue(layer2.isMergable(layer));
160 layer2.mergeFrom(layer);
161 assertEquals(6, layer2.data.allPrimitives().size());
162 layer.setUploadDiscouraged(true);
163 layer2.mergeFrom(layer);
164 assertTrue(layer2.isUploadDiscouraged());
165 }
166
167 /**
168 * Unit test of {@link OsmDataLayer#cleanupAfterUpload}.
169 */
170 @Test
171 public void testCleanupAfterUpload() {
172 fillDataSet(ds);
173 assertEquals(6, layer.data.allPrimitives().size());
174 layer.cleanupAfterUpload(ds.allPrimitives());
175 assertEquals(3, layer.data.allPrimitives().size());
176 }
177
178 /**
179 * Unit test of {@link OsmDataLayer#getMenuEntries}.
180 */
181 @Test
182 public void testGetMenuEntries() {
183 ExpertToggleAction.getInstance().setExpert(true);
184 assertEquals(16, layer.getMenuEntries().length);
185
186 ExpertToggleAction.getInstance().setExpert(false);
187 assertEquals(13, layer.getMenuEntries().length);
188 }
189
190 /**
191 * Unit test of {@link OsmDataLayer#toGpxData}.
192 */
193 @Test
194 public void testToGpxData() {
195 fillDataSet(ds);
196 assertNotNull(layer.toGpxData());
197 }
198
199 /**
200 * Unit test of {@link OsmDataLayer#containsPoint}.
201 */
202 @Test
203 public void testContainsPoint() {
204 fillDataSet(ds);
205 assertTrue(layer.containsPoint(LatLon.ZERO));
206 }
207
208 /**
209 * Unit test of {@link OsmDataLayer#isModified}.
210 */
211 @Test
212 public void testIsModified() {
213 assertFalse(layer.isModified());
214 fillDataSet(ds);
215 assertTrue(layer.isModified());
216 }
217
218 /**
219 * Unit test of {@link OsmDataLayer#projectionChanged}.
220 */
221 @Test
222 public void testProjectionChanged() {
223 layer.projectionChanged(null, null);
224 }
225
226 /**
227 * Unit test of {@link OsmDataLayer#checkSaveConditions}.
228 */
229 @Test
230 public void testCheckSaveConditions() {
231 assertFalse(layer.checkSaveConditions());
232 fillDataSet(ds);
233 assertTrue(layer.checkSaveConditions());
234 }
235
236 @Test
237 public void testLayerNameIncreases() throws Exception {
238 final OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), OsmDataLayer.createLayerName(147), null);
239 final OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
240 assertEquals("Data Layer 147", layer1.getName());
241 assertEquals("Data Layer 148", layer2.getName());
242 }
243
244 @Test
245 public void testLayerUnnumberedName() {
246 final OsmDataLayer layer = new OsmDataLayer(new DataSet(), "Data Layer ", null);
247 assertEquals("Data Layer ", layer.getName());
248 }
249
250 /**
251 * Non-regression test for ticket #13985
252 */
253 @Test
254 public void testLayerNameDoesFinish() {
255 final OsmDataLayer layer = new OsmDataLayer(new DataSet(), "Data Layer from GeoJSON: foo.geojson", null);
256 assertEquals("Data Layer from GeoJSON: foo.geojson", layer.getName());
257 }
258}
Note: See TracBrowser for help on using the repository browser.