Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.thaiopensource.datatype.xsd.regex.test;
  
 
 
 public class TestDriver extends DefaultHandler {
   private final StringBuffer buf = new StringBuffer();
   private Regex regex;
   private int nFail = 0;
   private int nTests = 0;
   private Locator loc;
   private final RegexEngine engine;
 
   static public void main(String[] argsthrows SAXExceptionIOExceptionParserConfigurationException {
     if (args.length != 2) {
       ..println("usage: TestDriver class testfile");
       System.exit(2);
     }
     SAXParserFactory factory = SAXParserFactory.newInstance();
     factory.setNamespaceAware(true);
     factory.setValidating(false);
     XMLReader xr = factory.newSAXParser().getXMLReader();
 
     Enumeration e = new Service(RegexEngine.class).getProviders();
     RegexEngine engine;
     for (;;) {
       if (!e.hasMoreElements()) {
         ..println("couldn't find regex engine");
         System.exit(2);
       }
       engine = (RegexEngine)e.nextElement();
       if (engine.getClass().getName().equals(args[0]))
         break;
     }
     TestDriver tester = new TestDriver(engine);
     xr.setContentHandler(tester);
     InputSource in = new InputSource(UriOrFile.fileToUri(args[1]));
     xr.parse(in);
     ..println(tester.nTests + " tests performed");
     ..println(tester.nFail + " failures");
     if (tester.nFail > 0)
       System.exit(1);
   }
 
   public TestDriver(RegexEngine engine) {
     this. = engine;
   }
 
   public void setDocumentLocator(Locator locator) {
     this. = locator;
   }
 
   public void characters(char ch[], int startint length)
           throws SAXException {
     .append(chstartlength);
   }
 
   public void ignorableWhitespace(char ch[], int startint length)
           throws SAXException {
     .append(chstartlength);
   }
 
   public void startElement(String uriString localName,
                            String qNameAttributes attributes)
           throws SAXException {
     .setLength(0);
   }
 
   public void endElement(String uriString localNameString qName)
           throws SAXException {
     if (localName.equals("valid"))
       valid(.toString());
     else if (localName.equals("invalid"))
       invalid(.toString());
     else if (localName.equals("correct"))
       correct(.toString());
     else if (localName.equals("incorrect"))
       incorrect(.toString());
   }
 
   private void correct(String str) {
     ++;
      = null;
     try {
       = .compile(str);
    }
    catch (RegexSyntaxException e) {
      error("unexpected error: " + e.getMessage() + ": " + display(stre.getPosition()));
    }
  }
  private void incorrect(String str) {
    ++;
     = null;
    try {
      .compile(str);
      error("failed to detect error in regex: " + display(str, -1));
    }
    catch (RegexSyntaxException e) { }
  }
  private void valid(String str) {
    if ( == null)
      return;
    ++;
    if (!.matches(str))
      error("match failed for string: " + display(str, -1));
  }
  private void invalid(String str) {
    if ( == null)
      return;
    ++;
    if (.matches(str))
      error("match incorrectly succeeded for string: " + display(str, -1));
  }
  private void error(String str) {
    int line = -1;
    if ( != null)
      line = .getLineNumber();
    if (line >= 0)
      ..print("Line " + line + ": ");
    ..println(str);
    ++;
  }
  static final private String ERROR_MARKER = ">>>>";
  static String display(String strint pos) {
    StringBuffer buf = new StringBuffer();
    for (int i = 0, len = str.length(); i < leni++) {
      if (i == pos)
        buf.append();
      char c = str.charAt(i);
      if (Utf16.isSurrogate1(c))
        buf.append("&#x" + Integer.toHexString(Utf16.scalarValue(cstr.charAt(++i))) + ";");
      else if (c < ' ' || c >= 0x7F)
        buf.append("&#x" + Integer.toHexString(c) + ";");
      else if (c == '&')
        buf.append("&amp;");
      else
        buf.append(c);
    }
    if (str.length() == pos)
      buf.append();
    return buf.toString();
  }
New to GrepCode? Check out our FAQ X