/* * GeoTools - OpenSource mapping toolkit * http://geotools.org * (C) 2002-2006, Geotools Project Managment Committee (PMC) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.data; import java.io.IOException; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import org.geotools.feature.Feature; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureCollections; import org.geotools.feature.FeatureType; import org.geotools.feature.IllegalAttributeException; /** * Tests the ArrayFeatureReader class * * @author jones * @source $URL$ */ public class ArrayFeatureReaderTest extends TestCase { private CollectionFeatureReader arrayReader; private CollectionFeatureReader collectionReader; private CollectionFeatureReader featureCollectionReader; private FeatureType type; private Feature[] features; protected void setUp() throws Exception { type = DataUtilities.createType("TestType", "geom:Geometry"); features = new Feature[] { type.create(new Object[] { null }, "f1"), type.create(new Object[] { null }, "f2"), type.create(new Object[] { null }, "f3"), type.create(new Object[] { null }, "f4"), type.create(new Object[] { null }, "f5"), type.create(new Object[] { null }, "f6") }; FeatureCollection collection = FeatureCollections.newCollection(); List list = Arrays.asList(features); collection.addAll(list); arrayReader = new CollectionFeatureReader(features); collectionReader = new CollectionFeatureReader(list, type); featureCollectionReader = new CollectionFeatureReader(collection, type); } /** * Test method for 'org.geotools.data.ArrayFeatureReader.getFeatureType()' */ public void testGetFeatureType() { assertEquals(type, arrayReader.getFeatureType()); assertEquals(type, collectionReader.getFeatureType()); assertEquals(type, featureCollectionReader.getFeatureType()); } /** * Test method for 'org.geotools.data.ArrayFeatureReader.next()' * * @throws Exception */ public void testNext() throws Exception { assertEquals(features[0], arrayReader.next()); assertEquals(features[1], arrayReader.next()); assertEquals(features[2], arrayReader.next()); assertEquals(features[3], arrayReader.next()); assertEquals(features[4], arrayReader.next()); assertEquals(features[5], arrayReader.next()); assertEquals(features[0], collectionReader.next()); assertEquals(features[1], collectionReader.next()); assertEquals(features[2], collectionReader.next()); assertEquals(features[3], collectionReader.next()); assertEquals(features[4], collectionReader.next()); assertEquals(features[5], collectionReader.next()); assertEquals(features[0], featureCollectionReader.next()); assertEquals(features[1], featureCollectionReader.next()); assertEquals(features[2], featureCollectionReader.next()); assertEquals(features[3], featureCollectionReader.next()); assertEquals(features[4], featureCollectionReader.next()); assertEquals(features[5], featureCollectionReader.next()); } /** * Test method for 'org.geotools.data.ArrayFeatureReader.hasNext()' * * @throws Exception DOCUMENT ME! */ public void testHasNext() throws Exception { testHasNext(arrayReader); testHasNext(collectionReader); testHasNext(featureCollectionReader); } private void testHasNext(FeatureReader arrayReader) throws IOException, IllegalAttributeException { assertTrue(arrayReader.hasNext()); arrayReader.next(); assertTrue(arrayReader.hasNext()); arrayReader.next(); assertTrue(arrayReader.hasNext()); arrayReader.next(); assertTrue(arrayReader.hasNext()); arrayReader.next(); assertTrue(arrayReader.hasNext()); arrayReader.next(); assertTrue(arrayReader.hasNext()); arrayReader.next(); assertFalse(arrayReader.hasNext()); } /** * Test method for 'org.geotools.data.ArrayFeatureReader.close()' * * @throws Exception DOCUMENT ME! */ public void testClose() throws Exception { arrayReader.close(); assertFalse(arrayReader.hasNext()); try { arrayReader.next(); fail(); } catch (Exception e) { // good } collectionReader.close(); assertFalse(collectionReader.hasNext()); try { collectionReader.next(); fail(); } catch (Exception e) { // good } featureCollectionReader.close(); assertFalse(featureCollectionReader.hasNext()); try { featureCollectionReader.next(); fail(); } catch (Exception e) { // good } } }