curcuru     00/12/15 08:31:48

  Added:       test/java/src/org/apache/qetest/trax/sax
                        SAXTransformerFactoryAPITest.java
  Log:
  API Coverage test for SAXTransformerFactory
  
  Revision  Changes    Path
  1.1                  
xml-xalan/test/java/src/org/apache/qetest/trax/sax/SAXTransformerFactoryAPITest.java
  
  Index: SAXTransformerFactoryAPITest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2000, Lotus
   * Development Corporation., http://www.lotus.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   *
   * SAXTransformerFactoryAPITest.java
   *
   */
  package org.apache.qetest.trax.sax;
  
  // Support for test reporting and harness classes
  import org.apache.qetest.*;
  import org.apache.qetest.xsl.*;
  import org.apache.qetest.trax.*;
  
  // Import all relevant TRAX packages
  import javax.xml.transform.*;
  import javax.xml.transform.dom.*;
  import javax.xml.transform.sax.*;
  import javax.xml.transform.stream.*;
  import javax.xml.parsers.DocumentBuilderFactory;
  import javax.xml.parsers.DocumentBuilder;
  import javax.xml.parsers.ParserConfigurationException;
  
  // Use Xalan's own serializers for SAX ContentHandler output
  import org.apache.xalan.serialize.SerializerFactory;
  import org.apache.xalan.serialize.Serializer;
  import org.apache.xalan.templates.OutputProperties;
  
  // Needed SAX, DOM, JAXP classes
  import org.w3c.dom.Document;
  import org.w3c.dom.Node;
  import org.xml.sax.InputSource;
  import org.xml.sax.SAXException;
  import org.xml.sax.XMLFilter;
  import org.xml.sax.XMLReader;
  import org.xml.sax.helpers.XMLReaderFactory;
  
  // java classes
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.util.Properties;
  
  //-------------------------------------------------------------------------
  
  /**
   * API Coverage test for SAXTransformerFactory.
   * @author [EMAIL PROTECTED]
   * @author [EMAIL PROTECTED]
   * @version $Id: SAXTransformerFactoryAPITest.java,v 1.1 2000/12/15 16:31:47 
curcuru Exp $
   */
  public class SAXTransformerFactoryAPITest extends XSLProcessorTestBase
  {
  
      /**
       * Provides nextName(), currentName() functionality for tests 
       * that may produce any number of output files.
       */
      protected OutputNameManager outNames;
  
      /** 
       * Basic test file: cities.xml/xsl/out.
       */
      protected XSLTestfileInfo citiesFileInfo = new XSLTestfileInfo();
  
      /** 
       * Alternate test file: citiesinclude.xsl.
       */
      protected String citiesIncludeFileName = null;
  
      /** 
       * Alternate gold file: citiesSerialized.out.
       */
      protected String citiesSerializedFileName = null;
  
      /** Subdirectory under test\tests\api for our xsl/xml files.  */
      public static final String TRAX_SAX_SUBDIR = "trax" + File.separator + 
"sax";
  
      /** Just initialize test name, comment, numTestCases. */
      public SAXTransformerFactoryAPITest()
      {
          numTestCases = 1;  // REPLACE_num
          testName = "SAXTransformerFactoryAPITest";
          testComment = "API Coverage test for SAXTransformerFactory";
      }
  
  
      /**
       * Initialize this test - Set names of xml/xsl test files,
       * REPLACE_other_test_file_init.  
       *
       * @param p Properties to initialize from (if needed)
       * @return false if we should abort the test; true otherwise
       */
      public boolean doTestFileInit(Properties p)
      {
          // NOTE: 'reporter' variable is already initialized at this point
  
          // Used for all tests; just dump files in trax subdir
          File outSubDir = new File(outputDir + File.separator + 
TRAX_SAX_SUBDIR);
          if (!outSubDir.mkdirs())
              reporter.logWarningMsg("Could not create output dir: " + 
outSubDir);
          // Initialize an output name manager to that dir with .out extension
          outNames = new OutputNameManager(outputDir + File.separator + 
TRAX_SAX_SUBDIR
                                           + File.separator + testName, ".out");
  
          String testBasePath = inputDir 
                                + File.separator 
                                + TRAX_SAX_SUBDIR
                                + File.separator;
          String goldBasePath = goldDir 
                                + File.separator 
                                + TRAX_SAX_SUBDIR
                                + File.separator;
  
          citiesFileInfo.inputName = testBasePath + "cities.xsl";
          citiesFileInfo.xmlName = testBasePath + "cities.xml";
          citiesFileInfo.goldName = goldBasePath + "cities.out";    // Tests 
001 - 009
  
          citiesIncludeFileName = testBasePath + File.separator + "impincl" 
                                  + File.separator + "citiesinclude.xsl"; // 
Test 004, etc.
  
          citiesSerializedFileName = goldBasePath + "citiesSerialized.out";    
// Tests 010 - 013
  
          try
          {
              TransformerFactory tf = TransformerFactory.newInstance();
              if (!(tf.getFeature(SAXSource.FEATURE)
                    && tf.getFeature(SAXResult.FEATURE)))
              {   // The rest of this test relies on SAX
                  reporter.logErrorMsg("SAX*.FEATURE not supported! Some tests 
may be invalid!");
              }
          }
          catch (Throwable t)
          {
              reporter.checkFail(
                  "Problem creating factory; Some tests may be invalid!");
              reporter.logThrowable(reporter.ERRORMSG, t,
                                    "Problem creating factory; Some tests may 
be invalid!");
          }
          return true;
      }
  
  
      /**
       * Call various Sun tests of SAX-related classes.
       *
       * @return false if we should abort the test; true otherwise
       */
      public boolean testCase1()
      {
          reporter.testCaseInit("Call various Sun tests of SAX-related 
classes");
  
          // Just call each method in order, with appropriate input
          //  and output filenames
          // Each method will call check() itself, and log any problems
          SAXTFactoryTest001(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest002(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest003(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest004(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest005(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest006(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest007(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest008(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest009(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest010(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest011(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest012(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
          SAXTFactoryTest013(citiesFileInfo.xmlName, citiesFileInfo.inputName, 
citiesFileInfo.goldName);
  
          reporter.testCaseClose();
          return true;
      }
  
  
      /**
       * SAXTFactoryTest001 test.  
       * This tests newTransformerhandler() method which takes StreamSource as 
argument. This is a positive test
       */
      public void SAXTFactoryTest001(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest001: This tests 
newTransformerhandler() method which takes StreamSource as argument. This is a 
positive test");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              XMLReader reader = XMLReaderFactory.createXMLReader();
  
              SAXTransformerFactory saxTFactory = 
(SAXTransformerFactory)tfactory;
              TransformerHandler handler = saxTFactory.newTransformerHandler(
                          new StreamSource(xslName));
              //Result result = new StreamResult(System.out);
              // Send results out to the next output name
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
  
              handler.setResult(result);
              reader.setContentHandler(handler);
              // Log what output is about to be created
              reporter.logInfoMsg("reader.parse() into: " + 
outNames.currentName());
              reader.parse(xmlName);
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest001: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest001: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest001 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest001 
threw");
          }
      }// end of SAXTFactoryTest001()
  
  
      /**
       * SAXTFactoryTest002 test.  
       * This tests newTransformerhandler() method which takes SAXSource as 
argument. This is a positive test
       */
      public void SAXTFactoryTest002(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest002: This tests 
newTransformerhandler() method which takes SAXSource as argument. This is a 
positive test");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              XMLReader reader = XMLReaderFactory.createXMLReader();
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
  
              InputSource is = new InputSource(new FileInputStream(xslName));
              SAXSource ss = new SAXSource();
              ss.setInputSource(is);
  
              TransformerHandler handler =  
saxTFactory.newTransformerHandler(ss);
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
  
              handler.setResult(result);
              reader.setContentHandler(handler);
  
              // Log what output is about to be created
              reporter.logInfoMsg("SAXTFactoryTest002 into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest002: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest002: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest002 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest002 
threw");
          }
      }// end of SAXTFactoryTest002()
  
      /**
       * SAXTFactoryTest003 test.  
       * This tests newTransformerhandler() method which takes DOMSource as 
argument. No relative URIs used. This is a positive test
       */
      public void SAXTFactoryTest003(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest003: This tests 
newTransformerhandler() method which takes DOMSource as argument. No relative 
URIs used. This is a positive test");
          reporter.logStatusMsg("Note: Need to verify that URI's are still 
correct from porting -sc");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          LoggingErrorListener loggingErrListener = new 
LoggingErrorListener(reporter);
          tfactory.setErrorListener(loggingErrListener);
          try 
          {
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
  
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
              reporter.logTraceMsg("docBuilder.parse(new File(" + xslName + 
"))");
              Document document = docBuilder.parse(new File(xslName));
              Node node = (Node)document;
              DOMSource domSource = new DOMSource(node);
  
              SAXTransformerFactory saxTFactory = 
(SAXTransformerFactory)tfactory;
              TransformerHandler handler = 
saxTFactory.newTransformerHandler(domSource);
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
              handler.setResult(result);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              reader.setContentHandler(handler);
  
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest003: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest003: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest003 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest003 
threw");
          }
      }// end of SAXTFactoryTest003()
  
  
      /**
       * SAXTFactoryTest004 test.  
       * This tests newTransformerhandler() method which takes DOMSource as 
argument. Here a relative URI is used in citiesinclude.xsl file. setSystemId is 
not used for DOMSource. It should throw an exception. This is a negative test
       */
      public void SAXTFactoryTest004(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest004: This tests 
newTransformerhandler() method which takes DOMSource as argument. Here a 
relative URI is used in citiesinclude.xsl file. setSystemId is not used for 
DOMSource. It should throw an exception. This is a negative test");
          // Grab an extra outName, so the numbers line up - purely cosmetic, 
not really needed
          String tmpOutName = outNames.nextName();
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          LoggingErrorListener loggingErrListener = new 
LoggingErrorListener(reporter);
          tfactory.setErrorListener(loggingErrListener);
          try 
          {
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
              reporter.logTraceMsg("docBuilder.parse(new File(" + 
citiesIncludeFileName + "))");
              Document document = docBuilder.parse(new 
File(citiesIncludeFileName));  // note specific file name used
              Node node = (Node) document;
              DOMSource domSource = new DOMSource(node);
              // setSystemId is not used for DOMSource
  
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              TransformerHandler handler = 
saxTFactory.newTransformerHandler(domSource);
  
              Result result = new StreamResult(new 
FileOutputStream(tmpOutName));
              handler.setResult(result);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              reader.setContentHandler(handler);
  
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              reporter.checkFail("Should have thrown exception because systemId 
not set!");
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest004: into " + 
outNames.currentName());
          } 
          catch (Throwable t) 
          {
              reporter.checkPass("SAXTFactoryTest004 properly threw: " + 
t.toString());
              reporter.logStatusMsg("@todo validate specific exception type");
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest004 
threw");
          }
      }// end of SAXTFactoryTest004()
  
  
      /**
       * SAXTFactoryTest005 test.  
       * This tests newTransformerhandler() method which takes DOMSource as 
argument.  Here a relative URI is used in citiesinclude.xsl file. setSystemId 
is used for DOMSource. It should run well. This is a positive test
       */
      public void SAXTFactoryTest005(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest005: This tests 
newTransformerhandler() method which takes DOMSource as argument.  Here a 
relative URI is used in citiesinclude.xsl file. setSystemId is used for 
DOMSource. It should run well. This is a positive test");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          LoggingErrorListener loggingErrListener = new 
LoggingErrorListener(reporter);
          tfactory.setErrorListener(loggingErrListener);
          try 
          {
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
              reporter.logTraceMsg("docBuilder.parse(new File(" + 
citiesIncludeFileName + "))");
              Document document = docBuilder.parse(new 
File(citiesIncludeFileName));
              Node node = (Node) document;
              DOMSource domSource = new DOMSource(node);
              // String testDirPath = System.getProperty("Tests_Dir"); // 
@todo: update to new names
              // domSource.setSystemId("file:///" + testDirPath); // @todo: 
update to new names
              domSource.setSystemId(citiesIncludeFileName);
  
              TransformerHandler handler = 
saxTFactory.newTransformerHandler(domSource);
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
              handler.setResult(result);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              reader.setContentHandler(handler);
  
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest005: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest005: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest005 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest005 
threw");
          }
      }// end of SAXTFactoryTest005()
      
  
      /**
       * SAXTFactoryTest006 test.  
       * This tests newTransformerhandler() method which takes DOMSource as 
argument.  Here a relative URI is used in citiesinclude.xsl file. setSystemId 
is used for DOMSource. Here Constructor that takes systemId as argument is used 
for creating DOMSource. It should run well. This is a positive test
       */
      public void SAXTFactoryTest006(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest006: This tests 
newTransformerhandler() method which takes DOMSource as argument.  Here a 
relative URI is used in citiesinclude.xsl file. setSystemId is used for 
DOMSource. Here Constructor that takes systemId as argument is used for 
creating DOMSource. It should run well. This is a positive test");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
              reporter.logTraceMsg("docBuilder.parse(new File(" + 
citiesIncludeFileName + "))");
              Document document = docBuilder.parse(new 
File(citiesIncludeFileName));
              Node node = (Node) document;
              // String testDirPath = System.getProperty("Tests_Dir"); // @todo 
update systemId
              // DOMSource domSource = new DOMSource(node, "file:///" + 
testDirPath); // @todo update systemId
              DOMSource domSource = new DOMSource(node, citiesIncludeFileName);
  
              TransformerHandler handler = 
saxTFactory.newTransformerHandler(domSource);
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
              handler.setResult(result);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              reader.setContentHandler(handler);
  
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest006: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest006: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest006 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest006 
threw");
          }
      }// end of SAXTFactoryTest006()
  
      
      /**
       * SAXTFactoryTest007 test.  
       * This tests newTransformerhandler() method which takes DOMSource as 
argument.  Here a relative URI is used in citiesinclude.xsl file. setSystemId 
is used for DOMSource. Here Constructor that takes systemId as argument is used 
for creating DOMSource. It should run well. This is a positive test
       */
      public void SAXTFactoryTest007(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest007: This tests 
newTransformerhandler() method which takes DOMSource as argument.  Here a 
relative URI is used in citiesinclude.xsl file. setSystemId is used for 
DOMSource. Here Constructor that takes systemId as argument is used for 
creating DOMSource. It should run well. This is a positive test");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
  
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
              reporter.logTraceMsg("docBuilder.parse(new File(" + 
citiesIncludeFileName + "))");
              Document document = docBuilder.parse(new 
File(citiesIncludeFileName));
              Node node = (Node) document;
              DOMSource domSource = new DOMSource(node);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
  
              //For xml file.
              reporter.logTraceMsg("docBuilder.parse(" + xmlName + ")");
              Document xmlDocument = docBuilder.parse(new File(xmlName));
              Node xmlNode = (Node) xmlDocument;
              DOMSource xmlDomSource = new DOMSource(xmlNode);
              //Please look into this later...You want to use 
newTransformerhandler()
              TransformerHandler handler = saxTFactory.newTransformerHandler();
              Transformer transformer = handler.getTransformer();
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
  
              // Log what output is about to be created
              reporter.logTraceMsg("transformer.transform(xmlDomSource, 
StreamResult) into: " + outNames.currentName());
              transformer.transform(xmlDomSource, result);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest007: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest007: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest007 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest007 
threw");
          }
      }// end of SAXTFactoryTest007()
  
  
      /**
       * SAXTFactoryTest008 test.  
       * XDESCRIPTION
       */
      public void SAXTFactoryTest008(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest008: XDESCRIPTION");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              reader.setContentHandler(thandler);
              reporter.logTraceMsg("reader.parse(" + xslName + ")");
              reader.parse(xslName);
  
              TransformerHandler tfhandler = 
saxTFactory.newTransformerHandler(thandler.getTemplates());
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
  
              tfhandler.setResult(result);
              reader.setContentHandler(tfhandler);
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest008: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest008: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest008 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest008 
threw");
          }
      }// end of SAXTFactoryTest008()
      
  
      /**
       * SAXTFactoryTest009 test.  
       * XDESCRIPTION
       */
      public void SAXTFactoryTest009(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest009: XDESCRIPTION");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              XMLReader reader = XMLReaderFactory.createXMLReader();
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
              // String testDirPath = System.getProperty("Tests_Dir"); // @todo 
update systemId
              // thandler.setSystemId("file:///" + testDirPath); // @todo 
update systemId
              thandler.setSystemId(citiesIncludeFileName); // @todo update 
systemId
  
              reader.setContentHandler(thandler);
              reporter.logTraceMsg("reader.parse(" + citiesIncludeFileName + 
")");
              reader.parse(citiesIncludeFileName);
  
              TransformerHandler tfhandler =
                  saxTFactory.newTransformerHandler(thandler.getTemplates());
  
              Result result = new StreamResult(new 
FileOutputStream(outNames.nextName()));
              tfhandler.setResult(result);
              reader.setContentHandler(tfhandler);
  
              // Log what output is about to be created
              reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " + 
outNames.currentName());
              reader.parse(xmlName);
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new File(goldName), 
                                              "SAXTFactoryTest009: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest009: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest009 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest009 
threw");
          }
      }// end of SAXTFactoryTest009()
  
  
      /**
       * SAXTFactoryTest010 test.  
       * The transformer will use a SAX parser as it's reader
       */
      public void SAXTFactoryTest010(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest010: The transformer will use a 
SAX parser as it's reader");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              // The transformer will use a SAX parser as it's reader.
              XMLReader reader = XMLReaderFactory.createXMLReader();
              // Set the result handling to be a serialization to the file 
output stream.
              Serializer serializer = SerializerFactory.getSerializer
                                      
(OutputProperties.getDefaultMethodProperties("xml"));
              serializer.setOutputStream(new 
FileOutputStream(outNames.nextName()));
  //            reader.setContentHandler(new 
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
              reader.setContentHandler(serializer.asContentHandler()); // @todo 
update content handler!!!!
  
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              reporter.logTraceMsg("saxTFactory.newXMLFilter(new StreamSource(" 
+ xslName + "))");
              XMLFilter filter = saxTFactory.newXMLFilter(new 
StreamSource(xslName));
  
              filter.setParent(reader);
  
              // Now, when you call transformer.parse, it will set itself as
              // the content handler for the parser object (it's "parent"), and
              // will then call the parse method on the parser.
              // Log what output is about to be created
              reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " + 
outNames.currentName());
              filter.parse(new InputSource(xmlName));
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new 
File(citiesSerializedFileName), 
                                              "SAXTFactoryTest010: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest010: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest010 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest010 
threw");
          }
      }// end of SAXTFactoryTest010()
  
  
      /**
       * SAXTFactoryTest011 test.  
       * The transformer will use a SAX parser as it's reader
       */
      public void SAXTFactoryTest011(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest011: The transformer will use a 
SAX parser as it's reader");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              // The transformer will use a SAX parser as it's reader.
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              dbf.setNamespaceAware(true); // Ensure we get namespaces! May be 
required for some Xerces versions
              DocumentBuilder docBuilder = dbf.newDocumentBuilder();
  
              reporter.logTraceMsg("docBuilder.parse(new File(" + xslName + 
"))");
              Document document = docBuilder.parse(new File(xslName));
              Node node = (Node) document;
              DOMSource domSource = new DOMSource(node);
              SAXTransformerFactory saxTFactory =  (SAXTransformerFactory) 
tfactory;
              XMLFilter filter = saxTFactory.newXMLFilter(domSource);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              // Set the result handling to be a serialization to the file 
output stream.
              Serializer serializer = SerializerFactory.getSerializer
                                      
(OutputProperties.getDefaultMethodProperties("xml"));
              serializer.setOutputStream(new 
FileOutputStream(outNames.nextName()));
  //            reader.setContentHandler(new 
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
              reader.setContentHandler(serializer.asContentHandler()); // @todo 
update content handler!!!!
  
              filter.setParent(reader);
  
              // Now, when you call transformer.parse, it will set itself as
              // the content handler for the parser object (it's "parent"), and
              // will then call the parse method on the parser.
  
              // Log what output is about to be created
              reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " + 
outNames.currentName());
              filter.parse(new InputSource(xmlName));
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new 
File(citiesSerializedFileName), 
                                              "SAXTFactoryTest011: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest011: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest011 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest011 
threw");
          }
      }// end of SAXTFactoryTest011()
      
  
      /**
       * SAXTFactoryTest012 test.  
       * The transformer will use a SAX parser as it's reader
       */
      public void SAXTFactoryTest012(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest012: The transformer will use a 
SAX parser as it's reader");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              // The transformer will use a SAX parser as it's reader.
  
              InputSource is = new InputSource(new FileInputStream(xslName));
              SAXSource saxSource = new SAXSource();
              saxSource.setInputSource(is);
  
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              reporter.logTraceMsg("newXMLFilter(..." + xslName + ")");
              XMLFilter filter = saxTFactory.newXMLFilter(saxSource);
  
              XMLReader reader = XMLReaderFactory.createXMLReader();
              // Set the result handling to be a serialization to the file 
output stream.
              Serializer serializer = SerializerFactory.getSerializer
                                      
(OutputProperties.getDefaultMethodProperties("xml"));
              serializer.setOutputStream(new 
FileOutputStream(outNames.nextName()));
  //            reader.setContentHandler(new 
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
              reader.setContentHandler(serializer.asContentHandler()); // @todo 
update content handler!!!!
              filter.setParent(reader);
  
              // Now, when you call transformer.parse, it will set itself as
              // the content handler for the parser object (it's "parent"), and
              // will then call the parse method on the parser.
              // Log what output is about to be created
              reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " + 
outNames.currentName());
              filter.parse(new InputSource(xmlName));
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new 
File(citiesSerializedFileName), 
                                              "SAXTFactoryTest012: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest012: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest012 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest012 
threw");
          }
      }// end of SAXTFactoryTest012()
  
  
      /**
       * SAXTFactoryTest013 test.  
       * The transformer will use a SAX parser as it's reader
       */
      public void SAXTFactoryTest013(String xmlName, String xslName, String 
goldName) 
      {
          // Log the test we're about to do
          reporter.logStatusMsg("SAXTFactoryTest013: The transformer will use a 
SAX parser as it's reader");
          int returnValue = Logger.INCP_RESULT;
  
          TransformerFactory tfactory = TransformerFactory.newInstance();
          try 
          {
              // The transformer will use a SAX parser as it's reader.
              XMLReader reader = XMLReaderFactory.createXMLReader();
              SAXTransformerFactory saxTFactory = (SAXTransformerFactory) 
tfactory;
              TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
              // String testDirPath = System.getProperty("Tests_Dir"); // @todo 
update systemId
  
              // I have put this as it was complaining about systemid
              // thandler.setSystemId("file:///" + testDirPath); // @todo 
update systemId
              thandler.setSystemId(xslName); // @todo update systemId
  
              reader.setContentHandler(thandler);
              reporter.logTraceMsg("reader.parse(" + xslName + ")");
              reader.parse(xslName);
  
              XMLFilter filter = 
saxTFactory.newXMLFilter(thandler.getTemplates());
  
              filter.setParent(reader);
              // Set the result handling to be a serialization to the file 
output stream.
              Serializer serializer = SerializerFactory.getSerializer
                                      
(OutputProperties.getDefaultMethodProperties("xml"));
              serializer.setOutputStream(new 
FileOutputStream(outNames.nextName()));
  //            filter.setContentHandler(new 
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
              filter.setContentHandler(serializer.asContentHandler()); // @todo 
update content handler!!!!
  
              // Log what output is about to be created
              reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " + 
outNames.currentName());
              filter.parse(new InputSource(new FileInputStream(xmlName)));
  
              // Validate the output by comparing against gold
              returnValue = fileChecker.check(reporter, 
                                              new File(outNames.currentName()), 
                                              new 
File(citiesSerializedFileName), 
                                              "SAXTFactoryTest013: into " + 
outNames.currentName());
              // If validation failed or had a problem, also log out
              //  the reason for the fail or error
              if ((returnValue == Logger.FAIL_RESULT)
                  || (returnValue == Logger.ERRR_RESULT))
              {
                  reporter.logStatusMsg("SAXTFactoryTest013: failure reason:" + 
fileChecker.getExtendedInfo());
              }
          } 
          catch (Throwable t) 
          {
              reporter.checkFail("SAXTFactoryTest013 threw: " + t.toString());
              reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest013 
threw");
          }
      }// end of SAXTFactoryTest013()
  
      /**
       * Convenience method to print out usage information - update if needed.  
       * @return String denoting usage of this test class
       */
      public String usage()
      {
          return ("Common [optional] options supported by 
SAXTransformerFactoryAPITest:\n"
                  + "(Note: assumes inputDir=.\\tests\\api)\n"
                  + super.usage());   // Grab our parent classes usage as well
      }
  
  
      /**
       * Main method to run test from the command line.  
       * @param args command line argument array
       */
      public static void main(String[] args)
      {
          SAXTransformerFactoryAPITest app = new SAXTransformerFactoryAPITest();
          app.doMain(args);
      }
  }
  
  
  

Reply via email to