### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core.tests.model
Index: src/org/eclipse/jdt/core/tests/model/RunJavaSearchTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RunJavaSearchTests.java,v
retrieving revision 1.18
diff -u -r1.18 RunJavaSearchTests.java
--- src/org/eclipse/jdt/core/tests/model/RunJavaSearchTests.java 27 May 2008 23:59:55 -0000 1.18
+++ src/org/eclipse/jdt/core/tests/model/RunJavaSearchTests.java 12 Feb 2009 15:26:42 -0000
@@ -61,6 +61,7 @@
allClasses.add(JavaSearchMultipleProjectsTests.class);
allClasses.add(SearchTests.class);
allClasses.add(JavaSearchScopeTests.class);
+ allClasses.add(MatchingRegionsTest.class);
// Reset forgotten subsets of tests
TestCase.TESTS_PREFIX = null;
Index: src/org/eclipse/jdt/core/tests/model/MatchingRegionsTest.java
===================================================================
RCS file: src/org/eclipse/jdt/core/tests/model/MatchingRegionsTest.java
diff -N src/org/eclipse/jdt/core/tests/model/MatchingRegionsTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/jdt/core/tests/model/MatchingRegionsTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,1366 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests.model;
+
+import junit.framework.Test;
+
+
+import org.eclipse.jdt.core.search.SearchPattern;
+
+/**
+ * Class to test the matching regions API method added on {@link SearchPattern}
+ *
+ * @see SearchPattern#getMatchingRegions(String, String, int)
+ * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=218605"
+ *
+ * @since 3.5
+ */
+public class MatchingRegionsTest extends AbstractJavaModelTests {
+
+public MatchingRegionsTest(String name) {
+ super(name);
+}
+
+public static Test suite() {
+ return buildTestSuite(MatchingRegionsTest.class);
+}
+
+/*
+ * Print regions in a string.
+ */
+private String printRegions(String name, int[] regions) {
+ if (regions == null) return null;
+ if (regions.length == 0) return name;
+ StringBuffer buffer = new StringBuffer();
+ int start = 0;
+ for (int i=0; i 0) buffer.append(']');
+ buffer.append(name.substring(start, segmentStart));
+ buffer.append('[');
+ } else if (start == 0) {
+ buffer.append('[');
+ }
+ buffer.append(name.substring(segmentStart, segmentStart+rLength));
+ start = segmentStart+rLength;
+ }
+ buffer.append(']');
+ int nLength= name.length();
+ if (nLength > start) {
+ buffer.append(name.substring(start, nLength));
+ }
+ return buffer.toString();
+}
+
+// Tests generated while running JDT/Core Model tests
+public void test0001() {
+ String name = "P";
+ int[] regions = SearchPattern.getMatchingRegions("P", name, SearchPattern.R_EXACT_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[P]", printRegions(name, regions));
+}
+public void test0002() {
+ String name = "class_path";
+ int[] regions = SearchPattern.getMatchingRegions("class*path", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[class]_[path]", printRegions(name, regions));
+}
+public void test0003() {
+ String name = "p3.p2.p";
+ int[] regions = SearchPattern.getMatchingRegions("p3*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[p3].p2.p", printRegions(name, regions));
+}
+public void test0004() {
+ String name = "j1";
+ int[] regions = SearchPattern.getMatchingRegions("j?", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[j]1", printRegions(name, regions));
+}
+public void test0005() {
+ String name = "j1";
+ int[] regions = SearchPattern.getMatchingRegions("j*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[j]1", printRegions(name, regions));
+}
+public void test0006() {
+ String name = "j7.qua.li.fied";
+ int[] regions = SearchPattern.getMatchingRegions("j7.*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[j7.]qua.li.fied", printRegions(name, regions));
+}
+public void test0007() {
+ String name = "j7.qua.li.fied";
+ int[] regions = SearchPattern.getMatchingRegions("j7.*.*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[j7.]qua[.]li.fied", printRegions(name, regions));
+}
+public void test0008() {
+ String name = "java.lang";
+ int[] regions = SearchPattern.getMatchingRegions("????.????", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "java[.]lang", printRegions(name, regions));
+}
+public void test0009() {
+ String name = "java";
+ int[] regions = SearchPattern.getMatchingRegions("*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[java]", printRegions(name, regions));
+}
+public void test0010() {
+ String name = "p2";
+ int[] regions = SearchPattern.getMatchingRegions("*p2", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[p2]", printRegions(name, regions));
+}
+public void test0011() {
+ String name = "p3.p2.p";
+ int[] regions = SearchPattern.getMatchingRegions("*p2.*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "p3.[p2.]p", printRegions(name, regions));
+}
+public void test0012() {
+ String name = "foo/1";
+ int[] regions = SearchPattern.getMatchingRegions("foo*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[foo]/1", printRegions(name, regions));
+}
+public void test0013() {
+ String name = "p24741.A";
+ int[] regions = SearchPattern.getMatchingRegions("p24741.*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[p24741.]A", printRegions(name, regions));
+}
+public void test0014() {
+ String name = "RuntimeException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("RE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[R]untime[E]xception/java.lang//! ", printRegions(name, regions));
+}
+public void test0015() {
+ String name = "RuntimeException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("RException", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[R]untime[Exception]/java.lang//! ", printRegions(name, regions));
+}
+public void test0016() {
+ String name = "RuntimeException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("RuntimeException", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[RuntimeException]/java.lang//! ", printRegions(name, regions));
+}
+public void test0017() {
+ String name = "RuntimeException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("r*e*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[R]untim[e]Exception/java.lang//! ", printRegions(name, regions));
+}
+public void test0018() {
+ String name = "CloneNotSupportedException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("CNS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[C]lone[N]ot[S]upportedException/java.lang//! ", printRegions(name, regions));
+}
+public void test0019() {
+ String name = "AA/d8// ";
+ int[] regions = SearchPattern.getMatchingRegions("AA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AA]/d8// ", printRegions(name, regions));
+}
+public void test0020() {
+ String name = "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz/c9// /S";
+ int[] regions = SearchPattern.getMatchingRegions("AA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[A]bcdefghijklmnopqrstuvwxyz[A]bcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz/c9// /S", printRegions(name, regions));
+}
+public void test0021() {
+ String name = "gen_obj";
+ int[] regions = SearchPattern.getMatchingRegions("gen_???", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[gen_]obj", printRegions(name, regions));
+}
+public void test0022() {
+ String name = "gen_exc";
+ int[] regions = SearchPattern.getMatchingRegions("gen_*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[gen_]exc", printRegions(name, regions));
+}
+public void test0023() {
+ String name = "qgen_obj";
+ int[] regions = SearchPattern.getMatchingRegions("?gen_*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "q[gen_]obj", printRegions(name, regions));
+}
+public void test0024() {
+ String name = "qgen_run";
+ int[] regions = SearchPattern.getMatchingRegions("qgen_*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[qgen_]run", printRegions(name, regions));
+}
+public void test0025() {
+ String name = "complete/4";
+ int[] regions = SearchPattern.getMatchingRegions("complete/*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[complete/]4", printRegions(name, regions));
+}
+public void test0026() {
+ String name = "generic/1";
+ int[] regions = SearchPattern.getMatchingRegions("*e?e*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "g[e]n[e]ric/1", printRegions(name, regions));
+}
+public void test0027() {
+ String name = "generic/1";
+ int[] regions = SearchPattern.getMatchingRegions("generic/*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[generic/]1", printRegions(name, regions));
+}
+public void test0028() {
+ String name = "A/e8// ";
+ int[] regions = SearchPattern.getMatchingRegions("a*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[A]/e8// ", printRegions(name, regions));
+}
+public void test0029() {
+ String name = "java.lang";
+ int[] regions = SearchPattern.getMatchingRegions("*.lang", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "java[.lang]", printRegions(name, regions));
+}
+public void test0030() {
+ String name = "Collection/b87627//? ";
+ int[] regions = SearchPattern.getMatchingRegions("*tion/*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "Collec[tion/]b87627//? ", printRegions(name, regions));
+}
+public void test0031() {
+ String name = "Collection";
+ int[] regions = SearchPattern.getMatchingRegions("*tion", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "Collec[tion]", printRegions(name, regions));
+}
+public void test0032() {
+ String name = "java.lang.annotation";
+ int[] regions = SearchPattern.getMatchingRegions("*.lang*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "java[.lang].annotation", printRegions(name, regions));
+}
+public void test0033() {
+ String name = "pack.age.Test";
+ int[] regions = SearchPattern.getMatchingRegions("*.test*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "pack.age[.Test]", printRegions(name, regions));
+}
+public void test0034() {
+ String name = "b124645.test";
+ int[] regions = SearchPattern.getMatchingRegions("b12*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[b12]4645.test", printRegions(name, regions));
+}
+public void test0035() {
+ String name = "ELPM/pack//! ";
+ int[] regions = SearchPattern.getMatchingRegions("e*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[E]LPM/pack//! ", printRegions(name, regions));
+}
+public void test0036() {
+ String name = "IDocumentExtension3";
+ int[] regions = SearchPattern.getMatchingRegions("IDE3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[ID]ocument[E]xtension[3]", printRegions(name, regions));
+}
+public void test0037() {
+ String name = "IDocumentExtension135";
+ int[] regions = SearchPattern.getMatchingRegions("IDE3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[ID]ocument[E]xtension1[3]5", printRegions(name, regions));
+}
+public void test0038() {
+ String name = "IDocumentProviderExtension3";
+ int[] regions = SearchPattern.getMatchingRegions("IDPE3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[ID]ocument[P]rovider[E]xtension[3]", printRegions(name, regions));
+}
+public void test0039() {
+ String name = "IDocumentProviderExtension12345";
+ int[] regions = SearchPattern.getMatchingRegions("IDPE3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[ID]ocument[P]rovider[E]xtension12[3]45", printRegions(name, regions));
+}
+public void test0040() {
+ String name = "IPerspectiveListener3";
+ int[] regions = SearchPattern.getMatchingRegions("IPL3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[IP]erspective[L]istener[3]", printRegions(name, regions));
+}
+public void test0041() {
+ String name = "IPropertySource2";
+ int[] regions = SearchPattern.getMatchingRegions("IPS2", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[IP]roperty[S]ource[2]", printRegions(name, regions));
+}
+public void test0042() {
+ String name = "IWorkbenchWindowPulldownDelegate2";
+ int[] regions = SearchPattern.getMatchingRegions("IWWPD2", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 10, regions.length);
+ assertEquals("Unexpected matching regions", "[IW]orkbench[W]indow[P]ulldown[D]elegate[2]", printRegions(name, regions));
+}
+public void test0043() {
+ String name = "UTF16DocumentScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTF16DSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF16D]ocument[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0044() {
+ String name = "UTF16DocumentScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTF1DSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF1]6[D]ocument[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0045() {
+ String name = "UTF1DocScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTF1DSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF1D]oc[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0046() {
+ String name = "UTF16DocumentScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTF6DSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF]1[6D]ocument[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0047() {
+ String name = "UTF6DocScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTF6DSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF6D]oc[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0048() {
+ String name = "UTF16DocumentScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTFDSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF]16[D]ocument[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0049() {
+ String name = "UTF1DocScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTFDSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[UTF]1[D]oc[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0050() {
+ String name = "UTFDocScannerSupport";
+ int[] regions = SearchPattern.getMatchingRegions("UTFDSS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[UTFD]oc[S]canner[S]upport", printRegions(name, regions));
+}
+public void test0051() {
+ String name = "AaAaAa";
+ int[] regions = SearchPattern.getMatchingRegions("AA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[A]a[A]aAa", printRegions(name, regions));
+}
+public void test0052() {
+ String name = "AxxAyy";
+ int[] regions = SearchPattern.getMatchingRegions("AA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[A]xx[A]yy", printRegions(name, regions));
+}
+public void test0053() {
+ String name = "AAxx";
+ int[] regions = SearchPattern.getMatchingRegions("AAx", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AAx]x", printRegions(name, regions));
+}
+public void test0054() {
+ String name = "AxxAyy";
+ int[] regions = SearchPattern.getMatchingRegions("AxxA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AxxA]yy", printRegions(name, regions));
+}
+public void test0055() {
+ String name = "AAa";
+ int[] regions = SearchPattern.getMatchingRegions("AAa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AAa]", printRegions(name, regions));
+}
+public void test0056() {
+ String name = "AaAaAa";
+ int[] regions = SearchPattern.getMatchingRegions("AAa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[A]a[Aa]Aa", printRegions(name, regions));
+}
+public void test0057() {
+ String name = "AxAyAz";
+ int[] regions = SearchPattern.getMatchingRegions("AxA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AxA]yAz", printRegions(name, regions));
+}
+public void test0058() {
+ String name = "AxxAyy";
+ int[] regions = SearchPattern.getMatchingRegions("AxA", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ax]x[A]yy", printRegions(name, regions));
+}
+public void test0059() {
+ String name = "A1/#/? /pack";
+ int[] regions = SearchPattern.getMatchingRegions("a*a**", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[A]1/#/? /p[a]ck", printRegions(name, regions));
+}
+public void test0060() {
+ String name = "AAAA";
+ int[] regions = SearchPattern.getMatchingRegions("a*a*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[AA]AA", printRegions(name, regions));
+}
+public void test0061() {
+ String name = "aMethodWith1Digit";
+ int[] regions = SearchPattern.getMatchingRegions("aMWD", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[aM]ethod[W]ith1[D]igit", printRegions(name, regions));
+}
+public void test0062() {
+ String name = "aMethodWithNothingSpecial";
+ int[] regions = SearchPattern.getMatchingRegions("aMW", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[aM]ethod[W]ithNothingSpecial", printRegions(name, regions));
+}
+public void test0063() {
+ String name = "aMethodWithNothingSpecial";
+ int[] regions = SearchPattern.getMatchingRegions("aMethod", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[aMethod]WithNothingSpecial", printRegions(name, regions));
+}
+public void test0064() {
+ String name = "aMethodWith1Digit";
+ int[] regions = SearchPattern.getMatchingRegions("aMethodWith1", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[aMethodWith1]Digit", printRegions(name, regions));
+}
+public void test0065() {
+ String name = "aMethodWithNothingSpecial";
+ int[] regions = SearchPattern.getMatchingRegions("*method*with*a*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "a[MethodWith]NothingSpeci[a]l", printRegions(name, regions));
+}
+public void test0066() {
+ String name = "aMethodWith1Digit";
+ int[] regions = SearchPattern.getMatchingRegions("aMW1D", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[aM]ethod[W]ith[1D]igit", printRegions(name, regions));
+}
+public void test0067() {
+ String name = "aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores";
+ int[] regions = SearchPattern.getMatchingRegions("aMWOOODASU", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 18, regions.length);
+ assertEquals("Unexpected matching regions", "[aM]ethod[W]ith1[O]r2_[O]r_3_[O]r__4__[D]igits[A]nd_[S]everal_[U]nderscores", printRegions(name, regions));
+}
+public void test0068() {
+ String name = "aFieldWithS$Dollar";
+ int[] regions = SearchPattern.getMatchingRegions("aFWSD", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[aF]ield[W]ith[S]$[D]ollar", printRegions(name, regions));
+}
+public void test0069() {
+ String name = "aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore";
+ int[] regions = SearchPattern.getMatchingRegions("aFWSD", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 8, regions.length);
+ assertEquals("Unexpected matching regions", "[aF]ield[W]ith$[S]everal$[D]ollarslAnd1DigitAnd_1Underscore", printRegions(name, regions));
+}
+public void test0070() {
+ String name = "aFieldWithS$Dollar";
+ int[] regions = SearchPattern.getMatchingRegions("aFWS$", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[aF]ield[W]ith[S$]Dollar", printRegions(name, regions));
+}
+public void test0071() {
+ String name = "aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars";
+ int[] regions = SearchPattern.getMatchingRegions("aSFWSCD", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 12, regions.length);
+ assertEquals("Unexpected matching regions", "[aS]trange[F]ield[W]ith$$$$$$$$$$$$$$$[S]evera[C]ontiguous[D]ollars", printRegions(name, regions));
+}
+public void test0072() {
+ String name = "otherFieldWhichStartsWithAnotherLetter";
+ int[] regions = SearchPattern.getMatchingRegions("oF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[o]ther[F]ieldWhichStartsWithAnotherLetter", printRegions(name, regions));
+}
+public void test0073() {
+ String name = "oF";
+ int[] regions = SearchPattern.getMatchingRegions("oF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[oF]", printRegions(name, regions));
+}
+public void test0074() {
+ String name = "foo/1";
+ int[] regions = SearchPattern.getMatchingRegions("*/1", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "foo[/1]", printRegions(name, regions));
+}
+public void test0075() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ash[M]ap", printRegions(name, regions));
+}
+public void test0076() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ax[M]apxxxx", printRegions(name, regions));
+}
+public void test0077() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HaM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]sh[M]ap", printRegions(name, regions));
+}
+public void test0078() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HaM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]x[M]apxxxx", printRegions(name, regions));
+}
+public void test0079() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HashM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[HashM]ap", printRegions(name, regions));
+}
+public void test0080() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HMa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ash[Ma]p", printRegions(name, regions));
+}
+public void test0081() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HMa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ax[Ma]pxxxx", printRegions(name, regions));
+}
+public void test0082() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HaMa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]sh[Ma]p", printRegions(name, regions));
+}
+public void test0083() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HaMa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]x[Ma]pxxxx", printRegions(name, regions));
+}
+public void test0084() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HashMa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[HashMa]p", printRegions(name, regions));
+}
+public void test0085() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HMap", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ash[Map]", printRegions(name, regions));
+}
+public void test0086() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HMap", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[H]ax[Map]xxxx", printRegions(name, regions));
+}
+public void test0087() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HaMap", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]sh[Map]", printRegions(name, regions));
+}
+public void test0088() {
+ String name = "HaxMapxxxx";
+ int[] regions = SearchPattern.getMatchingRegions("HaMap", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ha]x[Map]xxxx", printRegions(name, regions));
+}
+public void test0089() {
+ String name = "HashMap";
+ int[] regions = SearchPattern.getMatchingRegions("HashMap", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[HashMap]", printRegions(name, regions));
+}
+public void test0090() {
+ String name = "NullPointerException";
+ int[] regions = SearchPattern.getMatchingRegions("NuPoEx", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[Nu]ll[Po]inter[Ex]ception", printRegions(name, regions));
+}
+public void test0091() {
+ String name = "NullPointerException";
+ int[] regions = SearchPattern.getMatchingRegions("NPE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[N]ull[P]ointer[E]xception", printRegions(name, regions));
+}
+public void test0092() {
+ String name = "NullPointerException";
+ int[] regions = SearchPattern.getMatchingRegions("NullPE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[NullP]ointer[E]xception", printRegions(name, regions));
+}
+public void test0093() {
+ String name = "TZ";
+ int[] regions = SearchPattern.getMatchingRegions("TZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[TZ]", printRegions(name, regions));
+}
+public void test0094() {
+ String name = "TimeZone";
+ int[] regions = SearchPattern.getMatchingRegions("TZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[T]ime[Z]one", printRegions(name, regions));
+}
+public void test0095() {
+ String name = "TimeZone";
+ int[] regions = SearchPattern.getMatchingRegions("TiZo", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ti]me[Zo]ne", printRegions(name, regions));
+}
+public void test0096() {
+ String name = "IllegalMonitorStateException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("IllegalMSException", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[IllegalM]onitor[S]tate[Exception]/java.lang//! ", printRegions(name, regions));
+}
+public void test0097() {
+ String name = "CloneNotSupportedException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("CloneNotSupportedEx", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CloneNotSupportedEx]ception/java.lang//! ", printRegions(name, regions));
+}
+public void test0098() {
+ String name = "CloneNotSupportedException/java.lang//! ";
+ int[] regions = SearchPattern.getMatchingRegions("CloneNotSupportedException", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CloneNotSupportedException]/java.lang//! ", printRegions(name, regions));
+}
+public void test0099() {
+ String name = "CxxxxCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CCase", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]xxxx[Case]xx/b201064// /S", printRegions(name, regions));
+}
+public void test0100() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CCase", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]at[Case]xx/b201064// /S", printRegions(name, regions));
+}
+public void test0101() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaCase", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]mel[Case]xxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0102() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaCase", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]t[Case]xx/b201064// /S", printRegions(name, regions));
+}
+public void test0103() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CamelCase", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CamelCase]xxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0104() {
+ String name = "CxxxxCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]xxxx[C]asexx/b201064// /S", printRegions(name, regions));
+}
+public void test0105() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]at[C]asexx/b201064// /S", printRegions(name, regions));
+}
+public void test0106() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]mel[C]asexxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0107() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]t[C]asexx/b201064// /S", printRegions(name, regions));
+}
+public void test0108() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CamelC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CamelC]asexxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0109() {
+ String name = "CxxxxCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CCa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]xxxx[Ca]sexx/b201064// /S", printRegions(name, regions));
+}
+public void test0110() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CCa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[C]at[Ca]sexx/b201064// /S", printRegions(name, regions));
+}
+public void test0111() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaCa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]mel[Ca]sexxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0112() {
+ String name = "CatCasexx/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CaCa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ca]t[Ca]sexx/b201064// /S", printRegions(name, regions));
+}
+public void test0113() {
+ String name = "CamelCasexxEntry/b201064// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CamelCa", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CamelCa]sexxEntry/b201064// /S", printRegions(name, regions));
+}
+public void test0114() {
+ String name = "test.Bug";
+ int[] regions = SearchPattern.getMatchingRegions("*bug", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "test.[Bug]", printRegions(name, regions));
+}
+public void test0115() {
+ String name = "pack.TestInner$Member";
+ int[] regions = SearchPattern.getMatchingRegions("*member", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "pack.TestInner$[Member]", printRegions(name, regions));
+}
+public void test0116() {
+ String name = "TestConstructor1";
+ int[] regions = SearchPattern.getMatchingRegions("TestConstructor", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[TestConstructor]1", printRegions(name, regions));
+}
+public void test0117() {
+ String name = "oneTwoThree";
+ int[] regions = SearchPattern.getMatchingRegions("oTT", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[o]ne[T]wo[T]hree", printRegions(name, regions));
+}
+public void test0118() {
+ String name = "FFFTest";
+ int[] regions = SearchPattern.getMatchingRegions("FF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[FF]FTest", printRegions(name, regions));
+}
+public void test0119() {
+ String name = "FoFoFo";
+ int[] regions = SearchPattern.getMatchingRegions("FF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[F]o[F]oFo", printRegions(name, regions));
+}
+public void test0120() {
+ String name = "IZZAException";
+ int[] regions = SearchPattern.getMatchingRegions("IZZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[IZZ]AException", printRegions(name, regions));
+}
+public void test0121() {
+ String name = "IZZBException";
+ int[] regions = SearchPattern.getMatchingRegions("*exception*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "IZZB[Exception]", printRegions(name, regions));
+}
+public void test0122() {
+ String name = "ABC/p2// ";
+ int[] regions = SearchPattern.getMatchingRegions("ABC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ABC]/p2// ", printRegions(name, regions));
+}
+public void test0123() {
+ String name = "field";
+ int[] regions = SearchPattern.getMatchingRegions("Fiel", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[fiel]d", printRegions(name, regions));
+}
+public void test0124() {
+ String name = "java";
+ int[] regions = SearchPattern.getMatchingRegions("Ja", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ja]va", printRegions(name, regions));
+}
+public void test0125() {
+ String name = "XX01";
+ int[] regions = SearchPattern.getMatchingRegions("xx", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[XX]01", printRegions(name, regions));
+}
+public void test0126() {
+ String name = "NAM_TYPE_NAME_REQUESTOR";
+ int[] regions = SearchPattern.getMatchingRegions("nam", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[NAM]_TYPE_NAME_REQUESTOR", printRegions(name, regions));
+}
+public void test0127() {
+ String name = "PX/pack1.pack3// ";
+ int[] regions = SearchPattern.getMatchingRegions("PX", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[PX]/pack1.pack3// ", printRegions(name, regions));
+}
+public void test0128() {
+ String name = "pack1.pack3";
+ int[] regions = SearchPattern.getMatchingRegions("pack1.P", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[pack1.p]ack3", printRegions(name, regions));
+}
+public void test0129() {
+ String name = "ZInner2";
+ int[] regions = SearchPattern.getMatchingRegions("ZInner", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZInner]2", printRegions(name, regions));
+}
+public void test0130() {
+ String name = "ZZZZ";
+ int[] regions = SearchPattern.getMatchingRegions("ZZZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZZZ]Z", printRegions(name, regions));
+}
+public void test0131() {
+ String name = "AClass2";
+ int[] regions = SearchPattern.getMatchingRegions("AClas", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AClas]s2", printRegions(name, regions));
+}
+public void test0132() {
+ String name = "CompletionInsideExtends10";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionInsideExtends", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionInsideExtends]10", printRegions(name, regions));
+}
+public void test0133() {
+ String name = "CompletionInsideGenericClass";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionInsideGenericClas", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionInsideGenericClas]s", printRegions(name, regions));
+}
+public void test0134() {
+ String name = "WWWCompletionInstanceof3/// /S";
+ int[] regions = SearchPattern.getMatchingRegions("WWWCompletionInstanceof", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[WWWCompletionInstanceof]3/// /S", printRegions(name, regions));
+}
+public void test0135() {
+ String name = "ClassWithComplexName";
+ int[] regions = SearchPattern.getMatchingRegions("cla", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Cla]ssWithComplexName", printRegions(name, regions));
+}
+public void test0136() {
+ String name = "Default";
+ int[] regions = SearchPattern.getMatchingRegions("def", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Def]ault", printRegions(name, regions));
+}
+public void test0137() {
+ String name = "SuperClass";
+ int[] regions = SearchPattern.getMatchingRegions("sup", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Sup]erClass", printRegions(name, regions));
+}
+public void test0138() {
+ String name = "Throwable";
+ int[] regions = SearchPattern.getMatchingRegions("thr", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Thr]owable", printRegions(name, regions));
+}
+public void test0139() {
+ String name = "MemberType";
+ int[] regions = SearchPattern.getMatchingRegions("MemberType", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[MemberType]", printRegions(name, regions));
+}
+public void test0140() {
+ String name = "MemberException";
+ int[] regions = SearchPattern.getMatchingRegions("MemberE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[MemberE]xception", printRegions(name, regions));
+}
+public void test0141() {
+ String name = "CloneNotSupportedException";
+ int[] regions = SearchPattern.getMatchingRegions("clon", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Clon]eNotSupportedException", printRegions(name, regions));
+}
+public void test0142() {
+ String name = "ii1";
+ int[] regions = SearchPattern.getMatchingRegions("Ii", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ii]1", printRegions(name, regions));
+}
+public void test0143() {
+ String name = "Qla1";
+ int[] regions = SearchPattern.getMatchingRegions("ql", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Ql]a1", printRegions(name, regions));
+}
+public void test0144() {
+ String name = "CompletionRepeatedOtherType/// /S";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionRepeated", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionRepeated]OtherType/// /S", printRegions(name, regions));
+}
+public void test0145() {
+ String name = "CompletionSameClass/// ";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionSameClas", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionSameClas]s/// ", printRegions(name, regions));
+}
+public void test0146() {
+ String name = "CompletionSuperType2";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionSuper", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionSuper]Type2", printRegions(name, regions));
+}
+public void test0147() {
+ String name = "CompletionToplevelType1/p3// ";
+ int[] regions = SearchPattern.getMatchingRegions("CompletionToplevelType1", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CompletionToplevelType1]/p3// ", printRegions(name, regions));
+}
+public void test0148() {
+ String name = "CompletionType1";
+ int[] regions = SearchPattern.getMatchingRegions("CT1", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[C]ompletion[T]ype[1]", printRegions(name, regions));
+}
+public void test0149() {
+ String name = "CT1/q2// ";
+ int[] regions = SearchPattern.getMatchingRegions("CT1", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[CT1]/q2// ", printRegions(name, regions));
+}
+public void test0150() {
+ String name = "preTheFooBarsuf";
+ int[] regions = SearchPattern.getMatchingRegions("prethe", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[preThe]FooBarsuf", printRegions(name, regions));
+}
+public void test0151() {
+ String name = "preFooBarsuf";
+ int[] regions = SearchPattern.getMatchingRegions("prefo", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[preFo]oBarsuf", printRegions(name, regions));
+}
+public void test0152() {
+ String name = "preThefoFooBarsuf";
+ int[] regions = SearchPattern.getMatchingRegions("prethefo", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[preThefo]FooBarsuf", printRegions(name, regions));
+}
+public void test0153() {
+ String name = "mypackage";
+ int[] regions = SearchPattern.getMatchingRegions("My", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[my]package", printRegions(name, regions));
+}
+public void test0154() {
+ String name = "ZZZType1";
+ int[] regions = SearchPattern.getMatchingRegions("ZZZTy", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZZZTy]pe1", printRegions(name, regions));
+}
+public void test0155() {
+ String name = "Bug127628Type2/deprecation//";
+ int[] regions = SearchPattern.getMatchingRegions("Bug127628Ty", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Bug127628Ty]pe2/deprecation//", printRegions(name, regions));
+}
+public void test0156() {
+ String name = "TestEvaluationContextCompletion3";
+ int[] regions = SearchPattern.getMatchingRegions("TestEvaluationContextCompletion3", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[TestEvaluationContextCompletion3]", printRegions(name, regions));
+}
+public void test0157() {
+ String name = "AllConstructors01b";
+ int[] regions = SearchPattern.getMatchingRegions("AllConstructors", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[AllConstructors]01b", printRegions(name, regions));
+}
+public void test0158() {
+ String name = "XX2/b// ";
+ int[] regions = SearchPattern.getMatchingRegions("XX", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[XX]2/b// ", printRegions(name, regions));
+}
+public void test0159() {
+ String name = "XZXSuper/test0004// /S";
+ int[] regions = SearchPattern.getMatchingRegions("XZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[XZ]XSuper/test0004// /S", printRegions(name, regions));
+}
+public void test0160() {
+ String name = "XYX";
+ int[] regions = SearchPattern.getMatchingRegions("XY", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[XY]X", printRegions(name, regions));
+}
+public void test0161() {
+ String name = "Z0022ZZ";
+ int[] regions = SearchPattern.getMatchingRegions("Z0022Z", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Z0022Z]Z", printRegions(name, regions));
+}
+public void test0162() {
+ String name = "QQAnnotation";
+ int[] regions = SearchPattern.getMatchingRegions("QQAnnot", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[QQAnnot]ation", printRegions(name, regions));
+}
+public void test0163() {
+ String name = "ZZClass";
+ int[] regions = SearchPattern.getMatchingRegions("ZZ", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZZ]Class", printRegions(name, regions));
+}
+public void test0164() {
+ String name = "AType";
+ int[] regions = SearchPattern.getMatchingRegions("ATy", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ATy]pe", printRegions(name, regions));
+}
+public void test0165() {
+ String name = "VAR";
+ int[] regions = SearchPattern.getMatchingRegions("va", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[VA]R", printRegions(name, regions));
+}
+public void test0166() {
+ String name = "Test0233Z";
+ int[] regions = SearchPattern.getMatchingRegions("Test0233Z", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Test0233Z]", printRegions(name, regions));
+}
+public void test0167() {
+ String name = "ProviderImpl";
+ int[] regions = SearchPattern.getMatchingRegions("ProviderImp", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ProviderImp]l", printRegions(name, regions));
+}
+public void test0168() {
+ String name = "Annotation";
+ int[] regions = SearchPattern.getMatchingRegions("ann", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Ann]otation", printRegions(name, regions));
+}
+public void test0169() {
+ String name = "MyEnum";
+ int[] regions = SearchPattern.getMatchingRegions("MyEnum", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[MyEnum]", printRegions(name, regions));
+}
+public void test0170() {
+ String name = "ZZZNeedsImportEnum";
+ int[] regions = SearchPattern.getMatchingRegions("ZZZN", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZZZN]eedsImportEnum", printRegions(name, regions));
+}
+public void test0171() {
+ String name = "B2";
+ int[] regions = SearchPattern.getMatchingRegions("b", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[B]2", printRegions(name, regions));
+}
+public void test0172() {
+ String name = "ZTest3";
+ int[] regions = SearchPattern.getMatchingRegions("ZTes", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZTes]t3", printRegions(name, regions));
+}
+public void test0173() {
+ String name = "MyEnum";
+ int[] regions = SearchPattern.getMatchingRegions("MyEnu", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[MyEnu]m", printRegions(name, regions));
+}
+public void test0174() {
+ String name = "Enum";
+ int[] regions = SearchPattern.getMatchingRegions("enu", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Enu]m", printRegions(name, regions));
+}
+public void test0175() {
+ String name = "BasicTestReferences/org.eclipse.jdt.core.tests// ";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTest", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTest]References/org.eclipse.jdt.core.tests// ", printRegions(name, regions));
+}
+public void test0176() {
+ String name = "BasicTestTypesMember";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTestTypesM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTestTypesM]ember", printRegions(name, regions));
+}
+public void test0177() {
+ String name = "BasicTestTypesSecondary";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTestTypesS", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTestTypesS]econdary", printRegions(name, regions));
+}
+public void test0178() {
+ String name = "BasicTestTypes";
+ int[] regions = SearchPattern.getMatchingRegions("BTT", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[B]asic[T]est[T]ypes", printRegions(name, regions));
+}
+public void test0179() {
+ String name = "ZBasicTestTypes";
+ int[] regions = SearchPattern.getMatchingRegions("ZBasi", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[ZBasi]cTestTypes", printRegions(name, regions));
+}
+public void test0180() {
+ String name = "OtherFields";
+ int[] regions = SearchPattern.getMatchingRegions("oth", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Oth]erFields", printRegions(name, regions));
+}
+public void test0181() {
+ String name = "BasicTestMethodsException1";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTestMethodsE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTestMethodsE]xception1", printRegions(name, regions));
+}
+public void test0182() {
+ String name = "BasicTestMethods";
+ int[] regions = SearchPattern.getMatchingRegions("ba", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Ba]sicTestMethods", printRegions(name, regions));
+}
+public void test0183() {
+ String name = "InterruptedException";
+ int[] regions = SearchPattern.getMatchingRegions("in", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[In]terruptedException", printRegions(name, regions));
+}
+public void test0184() {
+ String name = "InterruptedException";
+ int[] regions = SearchPattern.getMatchingRegions("int", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Int]erruptedException", printRegions(name, regions));
+}
+public void test0185() {
+ String name = "BasicTestMethods";
+ int[] regions = SearchPattern.getMatchingRegions("BTM", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[B]asic[T]est[M]ethods", printRegions(name, regions));
+}
+public void test0186() {
+ String name = "BasicTestReferences/org.eclipse.jdt.core.tests// ";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTestRef", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTestRef]erences/org.eclipse.jdt.core.tests// ", printRegions(name, regions));
+}
+public void test0187() {
+ String name = "BasicTestTextIns";
+ int[] regions = SearchPattern.getMatchingRegions("BasicTestTextIns", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[BasicTestTextIns]", printRegions(name, regions));
+}
+public void test0188() {
+ String name = "short";
+ int[] regions = SearchPattern.getMatchingRegions("S", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[s]hort", printRegions(name, regions));
+}
+public void test0189() {
+ String name = "Victory";
+ int[] regions = SearchPattern.getMatchingRegions("v", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[V]ictory", printRegions(name, regions));
+}
+public void test0190() {
+ String name = "A.java";
+ int[] regions = SearchPattern.getMatchingRegions("*.java", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "A[.java]", printRegions(name, regions));
+}
+public void test0191() {
+ String name = "ArrayAllocationExpression/com.ibm.compiler.java.ast// ";
+ int[] regions = SearchPattern.getMatchingRegions("*rr*/com.ibm.compiler.java.ast/*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "A[rr]ayAllocationExpression[/com.ibm.compiler.java.ast/]/ ", printRegions(name, regions));
+}
+public void test0192() {
+ String name = "SuperReference";
+ int[] regions = SearchPattern.getMatchingRegions("*rr*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "Supe[rR]eference", printRegions(name, regions));
+}
+public void test0193() {
+ String name = "ConditionalExpression/com.ibm.compiler.java.ast// ";
+ int[] regions = SearchPattern.getMatchingRegions("*expression*", name, SearchPattern.R_PATTERN_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "Conditional[Expression]/com.ibm.compiler.java.ast// ", printRegions(name, regions));
+}
+public void test0194() {
+ String name = "boolean";
+ int[] regions = SearchPattern.getMatchingRegions("Boo", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[boo]lean", printRegions(name, regions));
+}
+
+// Test generated while running JDT/Text tests
+public void test0201() {
+ String name = "methodCallWithParams";
+ int[] regions = SearchPattern.getMatchingRegions("mCW", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[m]ethod[C]all[W]ithParams", printRegions(name, regions));
+}
+public void test0202() {
+ String name = "methodCallWithParams";
+ int[] regions = SearchPattern.getMatchingRegions("mCWith", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[m]ethod[C]all[With]Params", printRegions(name, regions));
+}
+public void test0203() {
+ String name = "multiCamelCaseField";
+ int[] regions = SearchPattern.getMatchingRegions("mCC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[m]ulti[C]amel[C]aseField", printRegions(name, regions));
+}
+public void test0204() {
+ String name = "DuplicateFormatFlagsException/java.util//!";
+ int[] regions = SearchPattern.getMatchingRegions("DF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[D]uplicate[F]ormatFlagsException/java.util//!", printRegions(name, regions));
+}
+public void test0205() {
+ String name = "DecimalFormatSymbols/java.text//1";
+ int[] regions = SearchPattern.getMatchingRegions("DF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[D]ecimal[F]ormatSymbols/java.text//1", printRegions(name, regions));
+}
+public void test0206() {
+ String name = "DateFormat/java.text//?";
+ int[] regions = SearchPattern.getMatchingRegions("DF", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[D]ate[F]ormat/java.text//?", printRegions(name, regions));
+}
+public void test0207() {
+ String name = "hashCode";
+ int[] regions = SearchPattern.getMatchingRegions("hC", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[h]ash[C]ode", printRegions(name, regions));
+}
+public void test0208() {
+ String name = "StringBuffer/java.lang//1";
+ int[] regions = SearchPattern.getMatchingRegions("StringBuffer", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[StringBuffer]/java.lang//1", printRegions(name, regions));
+}
+public void test0209() {
+ String name = "StringBuilder/java.lang//1";
+ int[] regions = SearchPattern.getMatchingRegions("SB", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[S]tring[B]uilder/java.lang//1", printRegions(name, regions));
+}
+public void test0210() {
+ String name = "ScatteringByteChannel/java.nio.channels//?";
+ int[] regions = SearchPattern.getMatchingRegions("SB", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[S]cattering[B]yteChannel/java.nio.channels//?", printRegions(name, regions));
+}
+public void test0211() {
+ String name = "ShortBuffer/java.nio//?";
+ int[] regions = SearchPattern.getMatchingRegions("SB", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[S]hort[B]uffer/java.nio//?", printRegions(name, regions));
+}
+public void test0212() {
+ String name = "IndexOutOfBoundsException/java.lang//!";
+ int[] regions = SearchPattern.getMatchingRegions("IO", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[I]ndex[O]utOfBoundsException/java.lang//!", printRegions(name, regions));
+}
+public void test0213() {
+ String name = "InvalidObjectException/java.io//!";
+ int[] regions = SearchPattern.getMatchingRegions("IO", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[I]nvalid[O]bjectException/java.io//!", printRegions(name, regions));
+}
+public void test0214() {
+ String name = "IOException/java.io//!";
+ int[] regions = SearchPattern.getMatchingRegions("IO", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[IO]Exception/java.io//!", printRegions(name, regions));
+}
+public void test0215() {
+ String name = "JarEntry/java.util.jar//!";
+ int[] regions = SearchPattern.getMatchingRegions("JaEn", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ja]r[En]try/java.util.jar//!", printRegions(name, regions));
+}
+public void test0216() {
+ String name = "JarEntry/java.util.jar//!";
+ int[] regions = SearchPattern.getMatchingRegions("JaE", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 4, regions.length);
+ assertEquals("Unexpected matching regions", "[Ja]r[E]ntry/java.util.jar//!", printRegions(name, regions));
+}
+public void test0217() {
+ String name = "InvalidObjectException/java.io//!";
+ int[] regions = SearchPattern.getMatchingRegions("IOExce", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[I]nvalid[O]bject[Exce]ption/java.io//!", printRegions(name, regions));
+}
+public void test0218() {
+ String name = "IOException/java.io//!";
+ int[] regions = SearchPattern.getMatchingRegions("IOExce", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[IOExce]ption/java.io//!", printRegions(name, regions));
+}
+public void test0219() {
+ String name = "InvalidObjectException";
+ int[] regions = SearchPattern.getMatchingRegions("IOException", name, SearchPattern.R_CAMELCASE_MATCH);
+ assertEquals("Unexpected regions length", 6, regions.length);
+ assertEquals("Unexpected matching regions", "[I]nvalid[O]bject[Exception]", printRegions(name, regions));
+}
+public void test0220() {
+ String name = "SecureCacheResponse";
+ int[] regions = SearchPattern.getMatchingRegions("se", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Se]cureCacheResponse", printRegions(name, regions));
+}
+
+// Addtional 'manual' tests
+public void test0300() {
+ String name = "HmacCore";
+ int[] regions = SearchPattern.getMatchingRegions("HMac", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Hmac]Core", printRegions(name, regions));
+}
+public void test0301() {
+ String name = "HmacMD5";
+ int[] regions = SearchPattern.getMatchingRegions("HMac", name, SearchPattern.R_PREFIX_MATCH);
+ assertEquals("Unexpected regions length", 2, regions.length);
+ assertEquals("Unexpected matching regions", "[Hmac]MD5", printRegions(name, regions));
+}
+}
\ No newline at end of file
#P org.eclipse.jdt.core
Index: compiler/org/eclipse/jdt/core/compiler/CharOperation.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java,v
retrieving revision 1.86
diff -u -r1.86 CharOperation.java
--- compiler/org/eclipse/jdt/core/compiler/CharOperation.java 22 Oct 2008 08:27:56 -0000 1.86
+++ compiler/org/eclipse/jdt/core/compiler/CharOperation.java 12 Feb 2009 15:26:44 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -535,11 +535,12 @@
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean samePartCount) {
/* !!!!!!!!!! WARNING !!!!!!!!!!
- * The content of this method has been fully copied to
- * SearchPattern#camelCaseMatch(String, int, int, String, int, int, boolean).
+ * The algorithm implemented in this method has been heavily used in
+ * StringOperation#getCamelCaseMatchingRegions(String, int, int, String, int, int, boolean)
+ * method.
*
- * So, if current method is modified, do NOT forget to copy again its content
- * to SearchPattern corresponding method!
+ * So, if any change needs to be applied in the current algorithm,
+ * do NOT forget to also apply the same change in the StringOperation method!
*/
if (name == null)
Index: search/org/eclipse/jdt/core/search/SearchPattern.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java,v
retrieving revision 1.79
diff -u -r1.79 SearchPattern.java
--- search/org/eclipse/jdt/core/search/SearchPattern.java 18 Sep 2008 15:24:58 -0000 1.79
+++ search/org/eclipse/jdt/core/search/SearchPattern.java 12 Feb 2009 15:26:44 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -26,6 +26,7 @@
import org.eclipse.jdt.internal.core.index.Index;
import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
import org.eclipse.jdt.internal.core.search.JavaSearchScope;
+import org.eclipse.jdt.internal.core.search.StringOperation;
import org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
import org.eclipse.jdt.internal.core.search.matching.*;
@@ -668,128 +669,167 @@
* @since 3.4
*/
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
+ return StringOperation.getCamelCaseMatchingRegions(pattern, patternStart, patternEnd, name, nameStart, nameEnd, samePartCount) != null;
+}
- /* !!!!!!!!!! WARNING !!!!!!!!!!
- * The algorithm of this method has been entirely copied from
- * CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean).
- * Array lengths have been replaced with call to {@link String#length()} and
- * array direct access have been replaced with call to {@link String#charAt(int)}.
- *
- * So, do NOT modify this method directly to fix any bug but modify first the
- * corresponding CharOperation method and do the copy again to be sure that
- * these two methods are kept synchronized.
- */
-
- if (name == null)
- return false; // null name cannot match
- if (pattern == null)
- return true; // null pattern is equivalent to '*'
- if (patternEnd < 0) patternEnd = pattern.length();
- if (nameEnd < 0) nameEnd = name.length();
-
- if (patternEnd <= patternStart) return nameEnd <= nameStart;
- if (nameEnd <= nameStart) return false;
- // check first pattern char
- if (name.charAt(nameStart) != pattern.charAt(patternStart)) {
- // first char must strictly match (upper/lower)
- return false;
- }
-
- char patternChar, nameChar;
- int iPattern = patternStart;
- int iName = nameStart;
-
- // Main loop is on pattern characters
- while (true) {
-
- iPattern++;
- iName++;
-
- if (iPattern == patternEnd) { // we have exhausted pattern...
- // it's a match if the name can have additional parts (i.e. uppercase characters) or is also exhausted
- if (!samePartCount || iName == nameEnd) return true;
-
- // otherwise it's a match only if the name has no more uppercase characters
- while (true) {
- if (iName == nameEnd) {
- // we have exhausted the name, so it's a match
- return true;
- }
- nameChar = name.charAt(iName);
- // test if the name character is uppercase
- if (nameChar < ScannerHelper.MAX_OBVIOUS) {
- if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar] & ScannerHelper.C_UPPER_LETTER) != 0) {
- return false;
- }
- }
- else if (!Character.isJavaIdentifierPart(nameChar) || Character.isUpperCase(nameChar)) {
- return false;
- }
- iName++;
+/**
+ * Answers all the regions in a given name matching a given pattern using
+ * a specified match rule.
+ *
+ * Each of these regions is made of its starting index and its length in the given
+ * name. They are all concatenated in a single array of int
+ * which therefore always has an even length.
+ *
+ * All returned regions are disjointed from each other. That means that the end
+ * of a region is always different than the start of the following one.
+ * For example, if two regions are returned:
+ * { start1, length1, start2, length2 }
+ * then start1+length1
will always be smaller than
+ * start2
.
+ *
+ * The possible comparison rules between the name and the pattern are:
+ *
+ * - {@link #R_EXACT_MATCH exact matching}
+ * - {@link #R_PREFIX_MATCH prefix matching}
+ * - {@link #R_PATTERN_MATCH pattern matching}
+ * - {@link #R_CAMELCASE_MATCH camel case matching}
+ * - {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH camel case matching with same parts count}
+ *
+ * Each of these rules may be combined with the
+ * {@link #R_CASE_SENSITIVE case sensitive flag} if the match comparison
+ * should respect the case.
+ *
+ * Examples:
+ * - pattern = "NPE"
+ * name = NullPointerException / NoPermissionException
+ * matchRule = {@link #R_CAMELCASE_MATCH}
+ * result: { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 }
+ * - pattern = "NuPoEx"
+ * name = NullPointerException
+ * matchRule = {@link #R_CAMELCASE_MATCH}
+ * result: { 0, 2, 4, 2, 11, 2 }
+ * - pattern = "IPL3"
+ * name = "IPerspectiveListener3"
+ * matchRule = {@link #R_CAMELCASE_MATCH}
+ * result: { 0, 2, 12, 1, 20, 1 }
+ * - pattern = "HashME"
+ * name = "HashMapEntry"
+ * matchRule = {@link #R_CAMELCASE_MATCH}
+ * result: { 0, 5, 7, 1 }
+ * - pattern = "N???Po*Ex?eption"
+ * name = NullPointerException
+ * matchRule = {@link #R_PATTERN_MATCH} | {@link #R_CASE_SENSITIVE}
+ * result: { 0, 1, 4, 2, 11, 2, 14, 6 }
+ * - pattern = "Ha*M*ent*"
+ * name = "HashMapEntry"
+ * matchRule = {@link #R_PATTERN_MATCH}
+ * result: { 0, 2, 4, 1, 7, 3 }
+ *
+ *
+ * @see #camelCaseMatch(String, String, boolean) for more details on the
+ * camel case behavior
+ * @see CharOperation#match(char[], char[], boolean) for more details on the
+ * pattern match behavior
+ *
+ * @param pattern the given pattern. If null
,
+ * then the returned region will be the entire given name.
+ * @param name the given name
+ * @param matchRule the rule to apply for the comparison.
+ * The following values are accepted:
+ *
+ * - {@link #R_EXACT_MATCH}
+ * - {@link #R_PREFIX_MATCH}
+ * - {@link #R_PATTERN_MATCH}
+ * - {@link #R_CAMELCASE_MATCH}
+ * - {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
+ *
+ *
+ * Each of these valid values may be also combined with
+ * the {@link #R_CASE_SENSITIVE} flag.
+ *
+ * Some examples:
+ *
+ * - {@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}:
+ * if an exact case sensitive match is expected,
+ * - {@link #R_PREFIX_MATCH}:
+ * if a case insensitive prefix match is expected,
+ * - {@link #R_CAMELCASE_MATCH}:
+ * if a case insensitive camel case match is expected,
+ * - {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
+ * | {@link #R_CASE_SENSITIVE}:
+ * if a case sensitive camel case with same parts count match
+ * is expected,
+ * - etc.
+ *
+ * @return an array of int
having two slots per returned
+ * regions: the first one is the region starting index and the second one
+ * is the region length.
+ *
+ * The returned region may be the entire given name if the given pattern
+ * is either null
(whatever the match rule is) or
+ * '*'
with a pattern match rule.
+ *
+ * May also be null
if the given name does not match
+ * the given pattern.
+ *
+ *
+ * @since 3.5
+ */
+public static final int[] getMatchingRegions(String pattern, String name, int matchRule) {
+ if (name == null) return null;
+ final int nameLength = name.length();
+ if (pattern == null) {
+ return new int[] { 0, nameLength };
+ }
+ final int patternLength = pattern.length();
+ boolean countMatch = false;
+ switch (matchRule) {
+ case SearchPattern.R_EXACT_MATCH:
+ if (patternLength == nameLength && pattern.equalsIgnoreCase(name)) {
+ return new int[] { 0, patternLength };
}
- }
-
- if (iName == nameEnd){
- // We have exhausted the name (and not the pattern), so it's not a match
- return false;
- }
-
- // For as long as we're exactly matching, bring it on (even if it's a lower case character)
- if ((patternChar = pattern.charAt(iPattern)) == name.charAt(iName)) {
- continue;
- }
-
- // If characters are not equals, then it's not a match if patternChar is lowercase
- if (patternChar < ScannerHelper.MAX_OBVIOUS) {
- if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[patternChar] & (ScannerHelper.C_UPPER_LETTER | ScannerHelper.C_DIGIT)) == 0) {
- return false;
+ break;
+ case SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE:
+ if (patternLength == nameLength && pattern.equals(name)) {
+ return new int[] { 0, patternLength };
}
- }
- else if (Character.isJavaIdentifierPart(patternChar) && !Character.isUpperCase(patternChar) && !Character.isDigit(patternChar)) {
- return false;
- }
-
- // patternChar is uppercase, so let's find the next uppercase in name
- while (true) {
- if (iName == nameEnd){
- // We have exhausted name (and not pattern), so it's not a match
- return false;
+ break;
+ case SearchPattern.R_PREFIX_MATCH:
+ if (patternLength <= nameLength && name.substring(0, patternLength).equalsIgnoreCase(pattern)) {
+ return new int[] { 0, patternLength };
}
-
- nameChar = name.charAt(iName);
- if (nameChar < ScannerHelper.MAX_OBVIOUS) {
- int charNature = ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar];
- if ((charNature & (ScannerHelper.C_LOWER_LETTER | ScannerHelper.C_SPECIAL)) != 0) {
- // nameChar is lowercase
- iName++;
- } else if ((charNature & ScannerHelper.C_DIGIT) != 0) {
- // nameChar is digit => break if the digit is current pattern character otherwise consume it
- if (patternChar == nameChar) break;
- iName++;
- // nameChar is uppercase...
- } else if (patternChar != nameChar) {
- //.. and it does not match patternChar, so it's not a match
- return false;
- } else {
- //.. and it matched patternChar. Back to the big loop
- break;
+ break;
+ case SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE:
+ if (name.startsWith(pattern)) {
+ return new int[] { 0, patternLength };
+ }
+ break;
+ case SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH:
+ countMatch = true;
+ //$FALL-THROUGH$
+ case SearchPattern.R_CAMELCASE_MATCH:
+ if (patternLength <= nameLength) {
+ int[] regions = StringOperation.getCamelCaseMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, countMatch);
+ if (regions != null) return regions;
+ if (name.substring(0, patternLength).equalsIgnoreCase(pattern)) {
+ return new int[] { 0, patternLength };
}
}
- // Same tests for non-obvious characters
- else if (Character.isJavaIdentifierPart(nameChar) && !Character.isUpperCase(nameChar)) {
- iName++;
- } else if (Character.isDigit(nameChar)) {
- if (patternChar == nameChar) break;
- iName++;
- } else if (patternChar != nameChar) {
- return false;
- } else {
- break;
+ break;
+ case SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_CASE_SENSITIVE:
+ countMatch = true;
+ //$FALL-THROUGH$
+ case SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE:
+ if (patternLength <= nameLength) {
+ return StringOperation.getCamelCaseMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, countMatch);
}
- }
- // At this point, either name has been exhausted, or it is at an uppercase letter.
- // Since pattern is also at an uppercase letter
+ break;
+ case SearchPattern.R_PATTERN_MATCH:
+ return StringOperation.getPatternMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, false);
+ case SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE:
+ return StringOperation.getPatternMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, true);
}
+ return null;
}
/**
Index: search/org/eclipse/jdt/internal/core/search/StringOperation.java
===================================================================
RCS file: search/org/eclipse/jdt/internal/core/search/StringOperation.java
diff -N search/org/eclipse/jdt/internal/core/search/StringOperation.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ search/org/eclipse/jdt/internal/core/search/StringOperation.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,469 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.core.search;
+
+import org.eclipse.jdt.core.compiler.CharOperation;
+import org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
+
+/**
+ * This class is a collection of helper methods to manipulate strings during search.
+ */
+public final class StringOperation {
+
+/**
+ * Answers all the regions in a given name matching a given camel case pattern.
+ *
+ * Each of these regions is made of its starting index and its length in the given
+ * name. They are all concatenated in a single array of int
+ * which therefore always has an even length.
+ *
+ * Note that each region is disjointed from the following one.
+ * E.g. if the regions are { start1, length1, start2, length2 }
,
+ * then start1+length1
will always be smaller than
+ * start2
.
+ *
+ *
+ * Examples:
+ * - pattern = "NPE"
+ * name = NullPointerException / NoPermissionException
+ * result: { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 }
+ * - pattern = "NuPoEx"
+ * name = NullPointerException
+ * result: { 0, 2, 4, 2, 11, 2 }
+ * - pattern = "IPL3"
+ * name = "IPerspectiveListener3"
+ * result: { 0, 2, 12, 1, 20, 1 }
+ * - pattern = "HashME"
+ * name = "HashMapEntry"
+ * result: { 0, 5, 7, 1 }
+ *
+ *
+ * @see CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean)
+ * for more details on the camel case behavior
+ * @see CharOperation#match(char[], char[], boolean) for more details on the
+ * pattern match behavior
+ *
+ * @param pattern the given pattern
+ * @param patternStart the start index of the pattern, inclusive
+ * @param patternEnd the end index of the pattern, exclusive
+ * @param name the given name
+ * @param nameStart the start index of the name, inclusive
+ * @param nameEnd the end index of the name, exclusive
+ * @param samePartCount flag telling whether the pattern and the name should
+ * have the same count of parts or not.
+ * For example:
+ *
+ * - 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
+ * but not 'HashMapEntry'
+ * - 'HMap' type string pattern will still match previous 'HashMap' and
+ * 'HtmlMapper' types, but not 'HighMagnitude'
+ *
+ * @return an array of int
having two slots per returned
+ * regions (first one is the starting index of the region and the second
+ * one the length of the region).
+ * Note that it may be null
if the given name does not match
+ * the pattern
+ * @since 3.5
+ */
+public static final int[] getCamelCaseMatchingRegions(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
+
+ /* !!!!!!!!!! WARNING !!!!!!!!!!
+ * The algorithm used in this method has been fully inspired from
+ * CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean).
+ *
+ * So, if any change needs to be applied in the algorithm, do NOT forget
+ * to backport it in the CharOperation method!
+ */
+
+ if (name == null)
+ return null; // null name cannot match
+ if (pattern == null)
+ return new int[] { patternStart, patternEnd-patternStart }; // null pattern is equivalent to '*'
+ if (patternEnd < 0) patternEnd = pattern.length();
+ if (nameEnd < 0) nameEnd = name.length();
+
+ if (patternEnd <= patternStart) {
+ return nameEnd <= nameStart
+ ? new int[] { patternStart, patternEnd-patternStart }
+ : null;
+ }
+ if (nameEnd <= nameStart) return null;
+ // check first pattern char
+ if (name.charAt(nameStart) != pattern.charAt(patternStart)) {
+ // first char must strictly match (upper/lower)
+ return null;
+ }
+
+ char patternChar, nameChar;
+ int iPattern = patternStart;
+ int iName = nameStart;
+
+ // init segments
+ int parts = 1;
+ for (int i=patternStart+1; i break if the digit is current pattern character otherwise consume it
+ if (patternChar == nameChar) break;
+ iName++;
+ // nameChar is uppercase...
+ } else if (patternChar != nameChar) {
+ //.. and it does not match patternChar, so it's not a match
+ return null;
+ } else {
+ //.. and it matched patternChar. Back to the big loop
+ break;
+ }
+ }
+ // Same tests for non-obvious characters
+ else if (Character.isJavaIdentifierPart(nameChar) && !Character.isUpperCase(nameChar)) {
+ iName++;
+ } else if (Character.isDigit(nameChar)) {
+ if (patternChar == nameChar) break;
+ iName++;
+ } else if (patternChar != nameChar) {
+ return null;
+ } else {
+ break;
+ }
+ }
+ // At this point, either name has been exhausted, or it is at an uppercase letter.
+ // Since pattern is also at an uppercase letter
+ if (segments == null) {
+ segments = new int[parts*2];
+ }
+ segments[count++] = segmentStart;
+ segments[count++] = segmentEnd - segmentStart;
+ segmentStart = iName;
+ }
+}
+
+/**
+ * Answers all the regions in a given name matching a given pattern
+ * pattern (e.g. "H*M??").
+ *
+ * Each of these regions is made of its starting index and its length in the given
+ * name. They are all concatenated in a single array of int
+ * which therefore always has an even length.
+ *
+ * Note that each region is disjointed from the following one.
+ * E.g. if the regions are { start1, length1, start2, length2 }
,
+ * then start1+length1
will always be smaller than
+ * start2
.
+ *
+ *
+ * Examples:
+ *
+ * - pattern = "N???Po*Ex?eption"
+ * name = NullPointerException
+ * result: { 0, 1, 4, 2, 11, 2, 14, 6 }
+ * - pattern = "Ha*M*ent*"
+ * name = "HashMapEntry"
+ * result: { 0, 2, 4, 1, 7, 3 }
+ *
+ *
+ * @see CharOperation#match(char[], char[], boolean) for more details on the
+ * pattern match behavior
+ *
+ * @param pattern the given pattern
+ * @param patternStart the given pattern start
+ * @param patternEnd the given pattern end
+ * @param name the given name
+ * @param nameStart the given name start
+ * @param nameEnd the given name end
+ * @param isCaseSensitive flag to know if the matching should be case sensitive
+ * @return an array of int
having two slots per returned
+ * regions (first one is the starting index of the region and the second
+ * one the length of the region).
+ * Note that it may be null
if the given name does not match
+ * the pattern
+ * @since 3.5
+ */
+public static final int[] getPatternMatchingRegions(
+ String pattern,
+ int patternStart,
+ int patternEnd,
+ String name,
+ int nameStart,
+ int nameEnd,
+ boolean isCaseSensitive) {
+
+ /* !!!!!!!!!! WARNING !!!!!!!!!!
+ * The algorithm used in this method has been fully inspired from
+ * CharOperation#match(char[], int, int, char[], int, int, boolean).
+ *
+ * So, if any change needs to be applied in the algorithm, do NOT forget
+ * to backport it in the CharOperation method!
+ */
+
+ if (name == null) return null; // null name cannot match
+ if (pattern == null || pattern.equals("*")) { //$NON-NLS-1$
+ // null and '*' patterns match the entire name
+ return new int[] { nameStart, nameEnd-nameStart };
+ }
+ int iPattern = patternStart;
+ int iName = nameStart;
+
+ // init segments parts
+ if (patternEnd < 0)
+ patternEnd = pattern.length();
+ if (nameEnd < 0)
+ nameEnd = name.length();
+ int questions = 0;
+ int stars = 0;
+ int parts = 0;
+ char previous = 0;
+ for (int i=patternStart; i 0) {
+ segments[count++] = start;
+ segments[count++] = iName-start;
+ start = iName;
+ }
+ segmentStart = ++iPattern; // skip star
+ } else {
+ if (iName == nameEnd) {
+ if (count == (parts*2)) return segments;
+ int end = patternEnd;
+ if (previous == '?') { // last char was a '?' => purge all trailing '?'
+ while (pattern.charAt(--end-1) == '?') {
+ if (end == start) {
+ return new int[] { patternStart, patternEnd-patternStart };
+ }
+ }
+ }
+ return new int[] { start, end-start };
+ }
+ return null;
+ }
+ int prefixStart = iName;
+ previous = patternChar;
+ char previousSegment = patternChar;
+ checkSegment : while (iName < nameEnd) {
+ if (iPattern == patternEnd) {
+ iPattern = segmentStart; // mismatch - restart current segment
+ iName = ++prefixStart;
+ previous = previousSegment;
+ continue checkSegment;
+ }
+ /* segment is ending */
+ if ((patternChar = pattern.charAt(iPattern)) == '*') {
+ segmentStart = ++iPattern; // skip star
+ if (segmentStart == patternEnd) {
+ if (count < (parts*2)) {
+ segments[count++] = start;
+ segments[count++] = iName-start;
+ }
+ return segments;
+ }
+ switch (previous) {
+ case '*':
+ case '?':
+ break;
+ default:
+ segments[count++] = start;
+ segments[count++] = iName-start;
+ break;
+ }
+ prefixStart = iName;
+ start = prefixStart;
+ previous = patternChar;
+ previousSegment = patternChar;
+ continue checkSegment;
+ }
+ /* check current name character */
+ if (patternChar == '?') {
+ switch (previous) {
+ case '*':
+ case '?':
+ break;
+ default:
+ segments[count++] = start;
+ segments[count++] = iName-start;
+ break;
+ }
+ } else {
+ if ((isCaseSensitive ? name.charAt(iName) : ScannerHelper.toLowerCase(name.charAt(iName))) != patternChar) {
+ iPattern = segmentStart; // mismatch - restart current segment
+ iName = ++prefixStart;
+ start = prefixStart;
+ if (previous == '?') count -= 2;
+ previous = previousSegment;
+ continue checkSegment;
+ }
+ switch (previous) {
+ case '?':
+ start = iName;
+ break;
+ }
+ }
+ iName++;
+ iPattern++;
+ previous = patternChar;
+ }
+
+ if ((segmentStart == patternEnd)
+ || (iName == nameEnd && iPattern == patternEnd)
+ || (iPattern == patternEnd - 1 && pattern.charAt(iPattern) == '*')) {
+ if (count < (parts*2)) {
+ segments[count++] = start;
+ segments[count++] = iName-start;
+ }
+ return segments;
+ }
+ return null;
+}
+}