--- a/tests/libjava-mauve/src/gnu/testlet/java/util/regex/Pattern/pcrematches.java Fri Jul 20 21:39:51 2012 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-// Tags: JDK1.4
-
-// Copyright (C) 2005 Ziga Mahkovec (ziga.mahkovec@klika.si)
-
-// This file is part of Mauve.
-
-// Mauve is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// Mauve is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Mauve; see the file COPYING. If not, write to
-// the Free Software Foundation, 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-package gnu.testlet.java.util.regex.Pattern;
-
-import gnu.testlet.*;
-import java.io.*;
-import java.util.*;
-import java.util.regex.*;
-
-/**
- * Tests the java.util.regex regular expression engine. The test cases are
- * adapted from PCRE (www.pcre.org). Each test cases if formatted as:
- * <pre>
- * /regular expression 1/
- * test string 1
- * 0: matching group 0
- * 1: matching group 1
- * test string 2
- * No match
- test string 3
- * ...
- *
- * /regular expression 2/
- * ...
- * </pre>
- */
-public class pcrematches implements Testlet
-{
- private TestHarness harness;
-
- /** Regex test suites from adapted from PCRE (http://www.pcre.org/license.txt). */
- private static final String[] TEST_SUITES = {"testdata1", /*"testdata2",*/ "testdata3"};
-
- /**
- * Regex test case (containing a single regular expression and a list of tests).
- */
- private static class RETestcase {
- String regex;
- List tests; // list of RETestcaseTest instances
- }
-
- /**
- * Regex test (containing a single text string and a list of resulting groups).
- */
- private static class RETestcaseTest {
- String text;
- List groups;
- }
-
- public void test (TestHarness harness)
- {
- this.harness = harness;
- try {
- for (int i=0; i<TEST_SUITES.length; i++) {
- String suite = "gnu#testlet#java#util#regex#Pattern#" + TEST_SUITES[i];
- BufferedReader reader = new BufferedReader(harness.getResourceReader(suite));
- RETestcase tc = null;
- while ((tc = readTestcase(reader)) != null) {
- try
- {
- test(tc);
- }
- catch (PatternSyntaxException e)
- {
- harness.check(false, tc.regex);
- }
- }
- }
- }
- catch (gnu.testlet.ResourceNotFoundException _)
- {
- harness.check(false, "All tests failed (ResourceNotFoundException)");
- }
- catch (IOException _)
- {
- harness.check(false, "All tests failed (IOException)");
- }
- }
-
- private void test(RETestcase tc) throws PatternSyntaxException {
- String regex = tc.regex.substring(tc.regex.indexOf('/') + 1,
- tc.regex.lastIndexOf('/'));
- String qual = tc.regex.substring(tc.regex.lastIndexOf('/') + 1);
- int flags = 0;
- if (qual.indexOf("i") != -1) {
- flags |= Pattern.CASE_INSENSITIVE;
- }
- if (qual.indexOf("m") != -1) {
- flags |= Pattern.MULTILINE;
- }
- Pattern pat = Pattern.compile(regex, flags);
-
- for (Iterator i=tc.tests.iterator(); i.hasNext(); ) {
- RETestcaseTest t = (RETestcaseTest)i.next();
- Matcher mat = pat.matcher(decode(t.text));
- if (mat.find()) {
- int groups = mat.groupCount();
- if (groups != t.groups.size() - 1) {
- harness.debug("groups=" + groups + " expected=" + (t.groups.size() - 1));
- harness.check(false, regex);
- return;
- }
- boolean failed = false;
- for (int j=0; j<=groups; j++) {
- String g = decode((String)t.groups.get(j));
- String g2 = mat.group(j);
- if (!g.trim().equals(g2.trim())) {
- harness.debug("j=" + j + " expected=" + g + " found=" + g2);
- harness.check(false, regex);
- return;
- }
- }
- } else if (!t.groups.isEmpty()) {
- harness.debug("match not found: regex=/" + regex + "/ text=\"" + t.text +"\"");
- harness.check(false, regex);
- return;
- }
- }
- harness.check(true, regex);
- }
-
- private static RETestcase readTestcase(BufferedReader reader) throws IOException {
- String line = reader.readLine();
- if (line == null)
- return null;
- line = line.trim();
- while (!line.startsWith("/") || line.lastIndexOf("/") == 0) {
- line = reader.readLine();
- if (line == null)
- return null;
- }
- RETestcase tc = new RETestcase();
- tc.regex = line;
- tc.tests = new ArrayList();
- while ((line = reader.readLine()) != null) {
- line = line.trim();
- if (line.length() == 0)
- break;
- RETestcaseTest test = new RETestcaseTest();
- test.text = line;
- test.groups = new ArrayList();
- reader.mark(8096);
- while ((line = reader.readLine()) != null) {
- if (line.length() == 0)
- break;
- else if (line.startsWith(" ")) {
- reader.reset();
- break;
- }
- if (line.equals("No match"))
- break;
- line = line.substring(line.indexOf(':') + 1);
- if (line.length() > 0)
- line = line.substring(1);
- test.groups.add(line);
- reader.mark(8096);
- }
- tc.tests.add(test);
- if (line == null || line.length() == 0)
- break;
- }
- return tc;
- }
-
- private static String decode(String s) {
- StringBuffer sb = new StringBuffer();
- int p = 0;
- int q = 0;
- while (true) {
- p = s.indexOf("\\u", q);
- if (p == -1) {
- sb.append(s.substring(q));
- break;
- }
- sb.append(s.substring(q, p));
- if (p + 6 <= s.length()) {
- String hex = s.substring(p+2, p+6);
- try {
- int c = Integer.parseInt(hex, 16);
- sb.append((char)c);
- }
- catch (NumberFormatException _) {
- sb.append(s.substring(p, p+6));
- }
- q = p + 6;
- }
- else {
- sb.append(s.substring(p, p+2));
- q = p + 2;
- }
- }
- return sb.toString();
- }
-}