/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-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.validation;
import org.geotools.data.DataTestCase;
import org.geotools.data.memory.MemoryDataStore;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.validation.spatial.IsValidGeometryValidation;
/**
* FeatureValidationTest purpose.
*
* <p>
* Description of FeatureValidationTest ...
* </p>
*
* <p></p>
*
* @author jgarnett, Refractions Research, Inc.
* @author $Author: sploreg $ (last modification)
* @source $URL$
* @version $Id$
*/
public class FeatureValidationTest extends DataTestCase {
MemoryDataStore store;
/**
* FeatureValidationTest constructor.
*
* <p>
* Run test <code>testName</code>.
* </p>
*
* @param testName
*/
public FeatureValidationTest(String testName) {
super(testName);
}
/**
* Construct data store for use.
*
* @throws Exception
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
store = new MemoryDataStore();
store.addFeatures(roadFeatures);
store.addFeatures(riverFeatures);
}
/**
* Override tearDown.
*
* @throws Exception
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
store = null;
super.tearDown();
}
public void testIsValidFeatureValidation() {
// the visitor
RoadValidationResults validationResults = new RoadValidationResults();
IsValidGeometryValidation validator = new IsValidGeometryValidation();
validator.setName("isValidRoad");
validator.setDescription("Tests to see if a road is valid");
validator.setTypeRef( "*" );
validationResults.setValidation(validator);
assertTrue(validator.validate(this.newRoad, this.roadType,
validationResults));
try {
this.newRoad = SimpleFeatureBuilder.build(this.roadType,(new Object[] {
new Integer(2), line(new int[] { 1, 2, 1, 2 }), "r4"
}), "road.rd4");
} catch (IllegalAttributeException e) {
}
assertTrue(!validator.validate(this.newRoad, this.roadType,
validationResults)); // validate will return false
}
/**
* testABunchOfValidations purpose.
*
* <p>
* Description ...
* </p>
*/
public void testABunchOfValidations() {
// the visitor
RoadNetworkValidationResults roadValidationResults = new RoadNetworkValidationResults();
// various FeatureType tests
IsValidGeometryValidation isValidValidator1 = new IsValidGeometryValidation();
isValidValidator1.setName("isValidRoad");
isValidValidator1.setDescription("Tests to see if a road is valid");
isValidValidator1.setTypeRef( "roads" );
IsValidGeometryValidation isValidValidator2 = new IsValidGeometryValidation();
isValidValidator2.setName("isValidRail");
isValidValidator2.setDescription("Tests to see if a railway is valid");
isValidValidator2.setTypeRef( "rails" );
IsValidGeometryValidation isValidValidator3 = new IsValidGeometryValidation();
isValidValidator3.setName("isValidRiver");
isValidValidator3.setDescription("Tests to see if a river is valid");
isValidValidator3.setTypeRef( "rivers" );
IsValidGeometryValidation isValidValidator4 = new IsValidGeometryValidation();
isValidValidator4.setName("isValidAll");
isValidValidator4.setDescription("Tests to see if all geometries are valid");
isValidValidator4.setTypeRef( "*" );
// various Integrity tests
//
//
//
// tell the RoadValidator what tests to use
roadValidationResults.setValidation(isValidValidator1);
roadValidationResults.setValidation(isValidValidator2);
roadValidationResults.setValidation(isValidValidator3);
roadValidationResults.setValidation(isValidValidator4);
// run each feature validation test on the featureTypes it tests
String[] types1 = isValidValidator1.getTypeNames();
for (int i = 0; i < types1.length; i++) {
//isValidValidator1.validate(featuresToTest(types[i]), featureType(types[i]), roadValidationResults);
}
String[] types2 = isValidValidator1.getTypeNames();
for (int i = 0; i < types2.length; i++) {
//isValidValidator2.validate(featuresToTest(types[i]), featureType(types[i]), roadValidationResults);
}
String[] types3 = isValidValidator1.getTypeNames();
for (int i = 0; i < types3.length; i++) {
//isValidValidator3.validate(featuresToTest(types[i]), featureType(types[i]), roadValidationResults);
}
String[] types4 = isValidValidator1.getTypeNames();
for (int i = 0; i < types4.length; i++) {
//isValidValidator4.validate(featuresToTest(types[i]), featureType(types[i]), roadValidationResults);
}
// check the results of the roadValidator
String[] roadFailures = roadValidationResults.getFailedMessages();
String[] roadWarnings = roadValidationResults.getWarningMessages();
boolean roadsPassed = true;
if (roadFailures.length != 0) {
roadsPassed = false;
for (int i = 0; i < roadFailures.length; i++) {
System.out.println(roadFailures[i]);
}
}
if (roadWarnings.length != 0) {
for (int i = 0; i < roadWarnings.length; i++) {
System.out.println(roadWarnings[i]);
}
}
assertTrue(roadsPassed);
}
}