source: josm/trunk/test/unit/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayerTest.java@ 12790

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

see #15182 - deprecate Main.getLayerManager(). Replacement: gui.MainApplication.getLayerManager()

  • Property svn:eol-style set to native
File size: 6.1 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.awt.Point;
10import java.util.Collection;
11import java.util.Map;
12import java.util.concurrent.atomic.AtomicBoolean;
13
14import org.junit.Before;
15import org.junit.Rule;
16import org.junit.Test;
17import org.openstreetmap.gui.jmapviewer.Coordinate;
18import org.openstreetmap.gui.jmapviewer.Projected;
19import org.openstreetmap.gui.jmapviewer.Tile;
20import org.openstreetmap.gui.jmapviewer.TileRange;
21import org.openstreetmap.gui.jmapviewer.TileXY;
22import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
23import org.openstreetmap.gui.jmapviewer.interfaces.IProjected;
24import org.openstreetmap.gui.jmapviewer.interfaces.TileCache;
25import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
26import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
27import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
28import org.openstreetmap.gui.jmapviewer.tilesources.TileSourceInfo;
29import org.openstreetmap.josm.data.imagery.ImageryInfo;
30import org.openstreetmap.josm.data.imagery.TileLoaderFactory;
31import org.openstreetmap.josm.data.osm.DataSet;
32import org.openstreetmap.josm.gui.MainApplication;
33import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
34import org.openstreetmap.josm.testutils.JOSMTestRules;
35
36import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
37
38/**
39 * Test of the base {@link AbstractTileSourceLayer} class
40 */
41public class AbstractTileSourceLayerTest {
42
43 /**
44 * Setup test
45 */
46 @Rule
47 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
48 public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
49
50 private static final class TMSTileStubSource extends AbstractTMSTileSource {
51 private TMSTileStubSource() {
52 super(new TileSourceInfo());
53 }
54
55 @Override
56 public double getDistance(double la1, double lo1, double la2, double lo2) {
57 // TODO Auto-generated method stub
58 return 0;
59 }
60
61 @Override
62 public Point latLonToXY(double lat, double lon, int zoom) {
63 // TODO Auto-generated method stub
64 return null;
65 }
66
67 @Override
68 public ICoordinate xyToLatLon(int x, int y, int zoom) {
69 // TODO Auto-generated method stub
70 return null;
71 }
72
73 @Override
74 public TileXY latLonToTileXY(double lat, double lon, int zoom) {
75 return new TileXY(lon / 2, lat / 2);
76 }
77
78 @Override
79 public ICoordinate tileXYToLatLon(int x, int y, int zoom) {
80 return new Coordinate(2*y, 2*x);
81 }
82
83 @Override
84 public IProjected tileXYtoProjected(int x, int y, int zoom) {
85 return new Projected(2*x, 2*y);
86 }
87
88 @Override
89 public TileXY projectedToTileXY(IProjected p, int zoom) {
90 return new TileXY(p.getEast() / 2, p.getNorth() / 2);
91 }
92
93 @Override
94 public boolean isInside(Tile inner, Tile outer) {
95 // TODO Auto-generated method stub
96 return false;
97 }
98
99 @Override
100 public TileRange getCoveringTileRange(Tile tile, int newZoom) {
101 // TODO Auto-generated method stub
102 return null;
103 }
104
105 @Override
106 public String getServerCRS() {
107 return "EPSG:3857";
108 }
109 }
110
111 private static class TileSourceStubLayer extends AbstractTileSourceLayer<AbstractTMSTileSource> {
112
113 TileSourceStubLayer() {
114 super(new ImageryInfo());
115 hookUpMapView();
116 }
117
118 @Override
119 protected TileLoaderFactory getTileLoaderFactory() {
120 return new TileLoaderFactory() {
121 @Override
122 public TileLoader makeTileLoader(TileLoaderListener listener, Map<String, String> headers) {
123 return null;
124 }
125 };
126 }
127
128 @Override
129 public Collection<String> getNativeProjections() {
130 return null;
131 }
132
133 @Override
134 protected AbstractTMSTileSource getTileSource() {
135 return new TMSTileStubSource();
136 }
137
138 TileCache getTileCache() {
139 return tileCache;
140 }
141 }
142
143 private TileSourceStubLayer testLayer;
144 AtomicBoolean invalidated = new AtomicBoolean();
145
146 /**
147 * Create test layer
148 */
149 @Before
150 public void setUp() {
151 MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
152 testLayer = new TileSourceStubLayer();
153 testLayer.addInvalidationListener(l -> invalidated.set(true));
154 }
155
156 /**
157 * Test {@link AbstractTileSourceLayer#filterChanged}
158 */
159 @Test
160 public void testFilterChanged() {
161 try {
162 ImageryFilterSettings filterSettings = new ImageryFilterSettings();
163 filterSettings.addFilterChangeListener(testLayer);
164 assertFalse(invalidated.get());
165 filterSettings.setGamma(0.5);
166 assertTrue(invalidated.get());
167 } finally {
168 invalidated.set(false);
169 }
170 }
171
172 /**
173 * Test {@link AbstractTileSourceLayer#clearTileCache}
174 */
175 @Test
176 public void testClearTileCache() {
177 testLayer.loadAllTiles(true);
178 assertTrue(testLayer.getTileCache().getTileCount() > 0);
179 testLayer.clearTileCache();
180 assertEquals(0, testLayer.getTileCache().getTileCount());
181 }
182
183 /**
184 * Test {@link AbstractTileSourceLayer#getAdjustAction}
185 */
186 @Test
187 public void testGetAdjustAction() {
188 assertNotNull(testLayer.getAdjustAction());
189 }
190
191 /**
192 * Test {@link AbstractTileSourceLayer#getInfoComponent}
193 */
194 @Test
195 public void testGetInfoComponent() {
196 assertNotNull(testLayer.getInfoComponent());
197 }
198
199 /**
200 * Test {@link AbstractTileSourceLayer.TileSourceLayerPopup}
201 */
202 @Test
203 public void testTileSourceLayerPopup() {
204 assertNotNull(testLayer.new TileSourceLayerPopup());
205 }
206}
Note: See TracBrowser for help on using the repository browser.