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

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

see #15182 - deprecate Main.map and Main.isDisplayingMapView(). Replacements: gui.MainApplication.getMap() / gui.MainApplication.isDisplayingMapView()

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