/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* 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;
* version 2.1 of the License.
*
* 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.feature.type;
import junit.framework.TestCase;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.FilterFactory;
import org.opengis.filter.PropertyIsEqualTo;
public class TypesTest extends TestCase {
public void testWithoutRestriction(){
// used to prevent warning
FilterFactory fac = CommonFactoryFinder.getFilterFactory(null);
String attributeName = "string";
SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder(); //$NON-NLS-1$
builder.setName("test");
builder.add(attributeName, String.class);
SimpleFeatureType featureType = builder.buildFeatureType();
SimpleFeature feature = SimpleFeatureBuilder.build(featureType, new Object[]{"Value"},
null);
assertNotNull( feature );
}
/**
* This utility class is used by Types to prevent attribute modification.
*/
public void testRestrictionCheck() {
FilterFactory fac = CommonFactoryFinder.getFilterFactory(null);
String attributeName = "string";
PropertyIsEqualTo filter = fac.equals(fac.property("."), fac
.literal("Value"));
SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder(); //$NON-NLS-1$
builder.setName("test");
builder.restriction(filter).add(attributeName, String.class);
SimpleFeatureType featureType = builder.buildFeatureType();
SimpleFeature feature = SimpleFeatureBuilder.build(featureType, new Object[]{"Value"},
null);
assertNotNull( feature );
}
public void testAssertNamedAssignable(){
SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
builder.setName("Test");
builder.add("name", String.class );
builder.add("age", Double.class );
SimpleFeatureType test = builder.buildFeatureType();
builder.setName("Test");
builder.add("age", Double.class );
builder.add("name",String.class);
SimpleFeatureType test2 = builder.buildFeatureType();
builder.setName("Test");
builder.add("name",String.class);
SimpleFeatureType test3 = builder.buildFeatureType();
builder.setName("Test");
builder.add("name",String.class);
builder.add("distance", Double.class );
SimpleFeatureType test4 = builder.buildFeatureType();
Types.assertNameAssignable( test, test );
Types.assertNameAssignable( test, test2 );
Types.assertNameAssignable( test2, test );
try {
Types.assertNameAssignable( test, test3 );
fail("Expected assertNameAssignable to fail as age is not covered");
}
catch ( IllegalArgumentException expected ){
}
Types.assertOrderAssignable( test, test4 );
}
}