Package batch.generator

Source Code of batch.generator.TestBuilderImpl$SchemaTestCase

/*
* @(#)$Id: TestBuilderImpl.java 1478 2002-12-23 23:17:33Z kk122374 $
*
* Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the proprietary information of Sun Microsystems, Inc. 
* Use is subject to license terms.
*
*/
package batch.generator;

import java.io.File;
import java.util.Iterator;
import java.util.Vector;

import javax.xml.parsers.SAXParserFactory;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.xml.sax.XMLReader;

import batch.model.ISchema;
import batch.model.IValidator;
import batch.model.TestBuilder;

import com.sun.msv.generator.Driver;
import com.sun.msv.generator.ExampleReader;

class TestBuilderImpl implements TestBuilder
{
    protected TestBuilderImpl( IValidator _validator, SAXParserFactory factory ) throws Exception {
        this.validator = _validator;
        this.reader = factory.newSAXParser().getXMLReader();
    }
   
    private final IValidator validator;
    private final XMLReader reader;
   
    public Test createIncorrectSchemaTest( File schema ) {
        return emptyTest();
    }
   
    public Test createCorrectSchemaTest( File schema ) {
        if(schema.getName().indexOf(".nogen.")!=-1)
            // we will not test this schema
            return emptyTest();
       
        current = new SchemaTestCase(schema);
        return current;
    }
   
    private SchemaTestCase current;
    protected class SchemaTestCase extends TestCase {
       
        protected SchemaTestCase( File schema ) {
            super(schema.getName());
            this.schemaFile = schema;
        }
       
        private final File schemaFile;
        private final Vector examples =new Vector();
       
        public void addExample( File example ) {
            examples.add(example);
        }
       
      /**
       * A test consists of
       *
       * 1. converts a grammar into the target format
       * 2. tests the instance documents.
       */
    public void runTest() throws Exception {

            System.out.println(schemaFile.getPath());
           
      Driver driver = new Driver()// generator instance.
       
      // parse parameters
      driver.parseArguments(new String[]{"-seed","0", "-n","30", "-quiet"});
       
      // parse example documents
            Iterator itr = examples.iterator();
      while( itr.hasNext() ) {
        File example = (File)itr.next();
               
                reader.setContentHandler( new ExampleReader(driver.exampleTokens) );
                reader.parse( com.sun.msv.util.Util.getInputSource(example.getAbsolutePath()) );
      }
       
      // set the grammar
      ISchema schema = validator.parseSchema(schemaFile);
      assertNotNull( "failed to parse the schema", schema );
      driver.grammar = schema.asGrammar();
      driver.outputName = "NUL";
       
      // run the test
      assertEquals( "generator for "+schemaFile.getName(), driver.run(System.out), 0 );
       
       
      // parse additional parameter
      // generally, calling the parseArguments method more than once
      // is not supported. So this is a hack.
      driver.parseArguments(new String[]{"-error","10/100"});

      assertEquals( "generator for "+schemaFile.getName(), driver.run(System.out), 0 );
    }
  }
   
    public Test createValidDocumentTest( File document ) {
        current.addExample(document);
        return emptyTest();
    }
   
    public Test createInvalidDocumentTest( File document ) {
        return emptyTest();
    }
   
    /** Returns a test that does nothing. */
    private Test emptyTest() {
        return new TestSuite();
    }
}
TOP

Related Classes of batch.generator.TestBuilderImpl$SchemaTestCase

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.