Package org.geotools.data.efeature.tests.unit

Source Code of org.geotools.data.efeature.tests.unit.EFeatureReaderTest

package org.geotools.data.efeature.tests.unit;

import java.io.Serializable;
import java.util.Map;
import java.util.logging.Level;

import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.geotools.data.efeature.EFeature;
import org.geotools.data.efeature.EFeatureDataStore;
import org.geotools.data.efeature.EFeatureDataStoreFactory;
import org.geotools.data.efeature.EFeatureFactoryFinder;
import org.geotools.data.efeature.EFeatureReader;
import org.geotools.data.efeature.ESimpleFeature;
import org.geotools.data.efeature.tests.EFeatureCompatibleData;
import org.geotools.data.efeature.tests.EFeatureData;
import org.geotools.data.efeature.tests.impl.EFeatureTestsContextHelper;
import org.opengis.feature.simple.SimpleFeature;

/**
*
* @author kengu - 4. mai 2011 
*
*
* @source $URL$
*/
public class EFeatureReaderTest extends AbstractResourceTest {
   
    private static boolean binary = false;
   
    private int eFeatureCount = 200;
    private EFeatureTestData eData;
    private Object[][] eTypeData = new Object[][]{
        {"efeature.EFeatureCompatibleData",EFeatureCompatibleData.class,0},
        {"efeature.EFeatureData",EFeatureData.class,0}};
   
    private ParameterInfoTestData eParams;
    private EFeatureDataStoreFactory eStoreFactory;
    private EFeatureTestsContextHelper eContextHelper;
    // -----------------------------------------------------
    //  Tests
    // -----------------------------------------------------

    @org.junit.Test
    public void testFeatureReader() {
        EFeatureDataStore eStore;
        Map<String,Serializable> params;
        try {
            params = eParams.createParams(eResourceURI.toString(), null);
            eStore = eStoreFactory.createDataStore(params);
            dTime();
            for(Object[] it : eTypeData) {
                //
                // Assert structure
                //
                String eType = it[0].toString();               
                Class<?> cls = (Class<?>)it[1];
                int count = 0;
                int icount = Integer.valueOf(it[2].toString());
                EFeatureReader eReader = eStore.getFeatureReader(eType);
                while(eReader.hasNext()) {
                    SimpleFeature feature = eReader.next();
                    assertTrue("Feature[" + count + "]: does not implement ESimpleFeature",feature instanceof ESimpleFeature);
                    EObject eObject = ((ESimpleFeature)feature).eObject();
                    assertNotNull("Feature[" + count + "]: is not contained by an EObject",eObject);                   
                    assertTrue("EObject[" + count + "]: returned by ESimpleFeature is not an " + eType + " instance",cls.isInstance(eObject));
                    EFeature eFeature = ((ESimpleFeature)feature).eFeature();
                    assertNotNull("Feature[" + count + "]: is not contained by an EFeature",eFeature);
                    //assertTrue("EFeature data and Feature are not identical",feature==eFeature.getData());
                    Object n = feature.getAttribute("attribute");
                    assertNotNull("Attribute[" + count + "]: data is null",n);
                    Object g = feature.getAttribute("geometry");
                    assertNotNull("Geometry[" + count + "]: data is null",g);
                    count++;
                }
                assertEquals("Feature count mismatch",icount,count);
                trace("Count["+eType+"]: " + count,TIME_DELTA);
                //
                // Assert validation optimization
                //
                //eReader.reset();
                //while(eReader.hasNext());
                
            }
            eStore.dispose();
        } catch (Exception e) {
            LOGGER.log(Level.SEVERE, e.getMessage(), e);
            fail(e);
        }
    }
   
    // -----------------------------------------------------
    //  TestCase setup
    // -----------------------------------------------------

    /**
     * Main for test runner.
     */
    public static void main(String[] args) {
        TestRunner.run(suite());
    }

    /**
     * Constructor with test name.
     */
    public EFeatureReaderTest(String name) {
        super(name, binary ? "bin" : "xmi", true, false);
    }
   
    /**
     * Required suite builder.
     * @return A test suite for this unit test.
     */
    public static Test suite() {
        return new TestSuite(EFeatureReaderTest.class);
    }
       
    @Override
    protected void doSetUp() throws Exception {
        //
        // Initialize commonly used objects
        //
        eParams = new ParameterInfoTestData();
        eContextHelper = new EFeatureTestsContextHelper(true, binary);
        eStoreFactory = EFeatureFactoryFinder.getDataStoreFactory();
        //
        // Update test data
        //
        int fcount = eFeatureCount/2;
        int gcount = eFeatureCount - fcount;
        eTypeData[0][2] = fcount;
        eTypeData[1][2] = gcount;       
    }
   
    // -----------------------------------------------------
    //  AbstractStandaloneTest implementation
    // -----------------------------------------------------
           
    @Override
    protected ResourceSet createResourceSet() {       
        return eContextHelper.getResourceSet();
    }
   
    @Override
    protected EditingDomain createEditingDomain(ResourceSet rset) {
        return eContextHelper.getEditingDomain();
    }
       
    @Override
    protected void createTestData(String name, Resource eResource) throws Exception {
        //
        // Create data used by all tests
        //
        eData = new EFeatureTestData(eResource);
        eData.random(10,(Integer)eTypeData[0][2],(Integer)eTypeData[1][2]);
        eData.save();
    }
   
    // -----------------------------------------------------
    //  Helper methods
    // -----------------------------------------------------
       
    // -----------------------------------------------------
    //  Test assertion methods
    // -----------------------------------------------------
   
}
TOP

Related Classes of org.geotools.data.efeature.tests.unit.EFeatureReaderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.