package test.at.gv.egovernment.moa;

import java.io.FileInputStream;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.xml.sax.InputSource;

import junit.framework.TestCase;

import at.gv.egovernment.moa.util.Constants;
import at.gv.egovernment.moa.util.DOMUtils;

/**
 * Base class for MOA test cases.
 * 
 * Provides some utility functions.
 * 
 * @author Patrick Peck
 * @version $Id$
 */
public class MOATestCase extends TestCase {

  protected static final String TESTDATA_ROOT = "data/test/";

  /**
   * Constructor for MOATestCase.
   * @param arg0
   */
  public MOATestCase(String name) {
    super(name);
  }

  /**
   * Parse an XML file non-validating.
   */
  public static Document parseXml(String fileName) throws Exception {
    return DOMUtils.parseDocument(
      new FileInputStream(fileName),
      false,
      null,
      null);
  }

  /**
   * Parse an XML validating with a given file name.
   * 
   * Uses the local schema resources.
   */
  public static Document parseXmlValidating(String fileName) throws Exception {
    return DOMUtils.parseDocument(
      new FileInputStream(fileName),
      true,
      Constants.ALL_SCHEMA_LOCATIONS,
      null);
  }

  /**
   * Parse an XML from a String.
   */
  public static Document parseXmlString(String xml) throws Exception {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    
    factory.setNamespaceAware(true);
    builder = factory.newDocumentBuilder();

    return builder.parse(new InputSource(new StringReader(xml)));
  }

}