Statistics
| Revision:

root / branches / piloto3d / libraries / libFMap / src-test / com / iver / cit / gvsig / fmap / layers / LayersIteratorTest.java @ 9524

History | View | Annotate | Download (6.98 KB)

1
package com.iver.cit.gvsig.fmap.layers;
2

    
3
import java.io.File;
4
import java.io.FileNotFoundException;
5
import java.io.IOException;
6
import java.net.URL;
7
import java.util.NoSuchElementException;
8

    
9
import org.cresques.cts.IProjection;
10

    
11
import com.iver.cit.gvsig.fmap.MapContext;
12
import com.iver.cit.gvsig.fmap.ViewPort;
13
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
14

    
15
import junit.framework.TestCase;
16

    
17
public class LayersIteratorTest extends TestCase {
18
        static final String fwAndamiDriverPath = "../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers";
19
        private File baseDataPath;
20
        private File baseDriversPath;
21
        private String shpDriverName = "gvSIG shp driver";
22
        private IProjection projectionDefault = CRSFactory.getCRS("EPSG:23030"); 
23
        
24

    
25
        protected void setUp() throws Exception {                
26
                super.setUp();
27
                URL url = this.getClass().getResource("LayersIteratorTest_data");
28
                if (url == null) 
29
                        throw new Exception("Can't find 'LayersIteratorTest_data' dir");
30
                
31
                baseDataPath = new File(url.getFile());
32
                if (!baseDataPath.exists()) 
33
                        throw new Exception("Can't find 'LayersIteratorTest_data' dir");
34
                
35
                baseDriversPath = new File(fwAndamiDriverPath);
36
                if (!baseDriversPath.exists()) 
37
                        throw new Exception("Can't find drivers path: " + fwAndamiDriverPath);
38
                
39
                LayerFactory.setDriversPath(baseDriversPath.getAbsolutePath());
40
                if (LayerFactory.getDM().getDriverNames().length < 1) 
41
                        throw new Exception("Can't find drivers in path: " + fwAndamiDriverPath);
42
        }
43

    
44
        
45
        private MapContext newMapContext() {
46
                ViewPort vp = new ViewPort(projectionDefault);
47
                return new MapContext(vp);
48
        }
49
        
50
        private FLayer newShpLayerToLayers(String shpFileName) {
51
                FLayerFileVectorial layerResult = new FLayerFileVectorial();
52
                layerResult.setName(shpFileName);
53
                layerResult.setDriverByName(shpDriverName);
54
                try {
55
                        layerResult.setProjection(projectionDefault);
56
                } catch (Exception e1) {                        
57
                        e1.printStackTrace();
58
                        return null;
59
                }
60
                try {
61
                        layerResult.setFileName(baseDataPath+File.separator+shpFileName);
62
                } catch (FileNotFoundException e) {
63
                        e.printStackTrace();
64
                        return null;
65
                }
66
                return layerResult;                
67
        }
68
        
69
        private void testLayerIterator(LayersIterator iter,FLayer[] layers) {
70
                int i;
71
                FLayer aux;
72
        
73
                for (i=0;i<layers.length;i++) {
74
                        if (!iter.hasNext()) {
75
                                fail("iter count == "+i+", "+ (layers.length)+ "expected");
76
                        }
77
                        aux = iter.nextLayer();
78
                        assertEquals("element "+ i,aux,layers[i]);
79
                }
80
                                
81
                assertFalse("inter hasNext",iter.hasNext());
82
                try {
83
                        iter.next();
84
                        fail("No Exception throw");
85
                } catch (NoSuchElementException e){
86
                        
87
                } catch (Exception e ) {
88
                        fail("Exception throw is not a NoSuchElementException instance");
89
                }
90
                
91
                try {
92
                        iter.remove();
93
                        fail("No Exception throw");
94
                } catch (UnsupportedOperationException e){
95
                        
96
                } catch (Exception e ) {
97
                        fail("Exception throw is not a UnsupportedOperationException instance");
98
                }
99

    
100
                
101
        }
102

    
103
        public void test1() {
104
                MapContext mapContext = newMapContext();
105
                FLayers root = mapContext.getLayers();
106
                FLayer layerX = newShpLayerToLayers("x.shp");
107
                assertNotNull("x.shp",layerX);
108
                FLayer layerX1 = newShpLayerToLayers("x1.shp");
109
                assertNotNull("x1.shp",layerX1);
110
                FLayer layerX2 = newShpLayerToLayers("x2.shp");
111
                assertNotNull("x2.shp",layerX1);
112
        
113
                root.addLayer(layerX);
114
                root.addLayer(layerX1);
115
                root.addLayer(layerX2);
116
                
117
                assertTrue("rootLayer.getLayersCount() == 3",root.getLayersCount() == 3);
118
                
119
                testLayerIterator(
120
                                new LayersIterator(root), 
121
                                new FLayer[] {root,layerX,layerX1,layerX2}
122
                );                
123
        }
124

    
125
        public void test2() {
126
                MapContext mapContext = newMapContext();
127
                FLayers root = mapContext.getLayers();
128

    
129
                FLayer layerX = newShpLayerToLayers("x.shp");                
130
                assertNotNull("x.shp",layerX);
131
                FLayer layerX1 = newShpLayerToLayers("x1.shp");
132
                assertNotNull("x1.shp",layerX1);
133
                FLayer layerX2 = newShpLayerToLayers("x2.shp");
134
                assertNotNull("x2.shp",layerX1);
135
        
136
                FLayers group1 = new FLayers(mapContext,root);
137
                root.addLayer(group1);
138
                root.addLayer(layerX);
139
                group1.addLayer(layerX1);
140
                group1.addLayer(layerX2);
141
                
142
                assertTrue("rootLayer.getLayersCount() == 2",root.getLayersCount() == 2);
143
                assertTrue("group1.getLayersCount() == 2",group1.getLayersCount() == 2);
144
                
145
                testLayerIterator(
146
                                new LayersIterator(root), 
147
                                new FLayer[] {root,group1,layerX1,layerX2,layerX}
148
                );                
149
        }
150

    
151
        public void test3() {
152
                MapContext mapContext = newMapContext();
153
                FLayers root = mapContext.getLayers();
154

    
155
                FLayer layerX = newShpLayerToLayers("x.shp");                
156
                assertNotNull("x.shp",layerX);
157
                FLayer layerX1 = newShpLayerToLayers("x1.shp");
158
                assertNotNull("x1.shp",layerX1);
159
                FLayer layerX2 = newShpLayerToLayers("x2.shp");
160
                assertNotNull("x2.shp",layerX1);
161
        
162
                FLayers group1 = new FLayers(mapContext,root);
163
                root.addLayer(group1);
164
                FLayers group1_1 = new FLayers(mapContext,group1);
165
                group1.addLayer(group1_1);
166
                FLayers group1_2 = new FLayers(mapContext,group1);
167
                group1.addLayer(group1_2);
168
                
169
                root.addLayer(layerX);
170
                group1.addLayer(layerX1);
171
                group1_1.addLayer(layerX2);
172
                
173
                assertTrue("rootLayer.getLayersCount() == 2",root.getLayersCount() == 2);
174
                assertTrue("group1.getLayersCount() == 3",group1.getLayersCount() == 3);
175
                assertTrue("group1_1.getLayersCount() == 1",group1_1.getLayersCount() == 1);
176
                assertTrue("group1_2.getLayersCount() == 0",group1_2.getLayersCount() == 0);
177
                
178
                testLayerIterator(
179
                                new LayersIterator(root), 
180
                                new FLayer[] {root,group1,group1_1,layerX2,group1_2,layerX1,layerX}
181
                );        
182

    
183
                testLayerIterator(
184
                                new LayersIterator(group1), 
185
                                new FLayer[] {group1,group1_1,layerX2,group1_2,layerX1}
186
                );        
187
                
188
        }
189

    
190
        public void test4() {
191
                MapContext mapContext = newMapContext();
192
                FLayers root = mapContext.getLayers();
193

    
194
                FLayer layerX = newShpLayerToLayers("x.shp");                
195
                assertNotNull("x.shp",layerX);
196
                FLayer layerX1 = newShpLayerToLayers("x1.shp");
197
                assertNotNull("x1.shp",layerX1);
198
                FLayer layerX2 = newShpLayerToLayers("x2.shp");
199
                assertNotNull("x2.shp",layerX1);
200
        
201
                FLayers group1 = new FLayers(mapContext,root);
202
                root.addLayer(group1);
203
                FLayers group1_1 = new FLayers(mapContext,group1);
204
                group1.addLayer(group1_1);
205
                FLayers group1_2 = new FLayers(mapContext,group1);
206
                group1.addLayer(group1_2);
207
                
208
                root.addLayer(layerX);
209
                group1.addLayer(layerX1);
210
                group1_1.addLayer(layerX2);
211
                
212
                assertTrue("rootLayer.getLayersCount() == 2",root.getLayersCount() == 2);
213
                assertTrue("group1.getLayersCount() == 3",group1.getLayersCount() == 3);
214
                assertTrue("group1_1.getLayersCount() == 1",group1_1.getLayersCount() == 1);
215
                assertTrue("group1_2.getLayersCount() == 0",group1_2.getLayersCount() == 0);
216
                
217
                testLayerIterator(
218
                                new myLayerIteratorFLayers(root), 
219
                                new FLayer[] {root,group1,group1_1,group1_2}
220
                );
221
                
222
                LayersIterator iter; 
223
                iter = new LayersIterator(root) {
224

    
225
                        public boolean evaluate(FLayer layer) {
226
                                return !(layer instanceof FLayers);
227
                        }
228
                        
229
                };
230
                
231
                testLayerIterator(
232
                                iter, 
233
                                new FLayer[] {layerX2,layerX1,layerX}
234
                );
235

    
236
                
237
        }
238

    
239
}
240

    
241
class myLayerIteratorFLayers extends LayersIterator {
242
        public myLayerIteratorFLayers(FLayer layer) {
243
                super(layer);
244
        }
245

    
246
        public boolean evaluate(FLayer layer) {                
247
                return layer instanceof FLayers;
248
        }
249

    
250
}