View | Details | Raw Unified | Return to bug 218605 | Differences between
and this patch

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/core/compiler/CharOperation.java (-5 / +6 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2008 IBM Corporation and others.
2
 * Copyright (c) 2000, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 535-545 Link Here
535
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean samePartCount) {
535
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean samePartCount) {
536
536
537
	/* !!!!!!!!!! WARNING !!!!!!!!!!
537
	/* !!!!!!!!!! WARNING !!!!!!!!!!
538
	 * The content of this method has been fully copied to
538
	 * The algorithm implemented in this method has been heavily used in
539
	 * SearchPattern#camelCaseMatch(String, int, int, String, int, int, boolean).
539
	 * StringOperation#getCamelCaseMatchingRegions(String, int, int, String, int, int, boolean)
540
	 * method.
540
	 *
541
	 *
541
	 * So, if current method is modified, do NOT forget to copy again its content
542
	 * So, if any change needs to be applied in the current algorithm,
542
	 * to SearchPattern corresponding method!
543
	 * do NOT forget to also apply the same change in the StringOperation method!
543
	 */
544
	 */
544
545
545
	if (name == null)
546
	if (name == null)
(-)search/org/eclipse/jdt/core/search/SearchPattern.java (-116 / +149 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2008 IBM Corporation and others.
2
 * Copyright (c) 2000, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 26-31 Link Here
26
import org.eclipse.jdt.internal.core.index.Index;
26
import org.eclipse.jdt.internal.core.index.Index;
27
import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
27
import org.eclipse.jdt.internal.core.search.IndexQueryRequestor;
28
import org.eclipse.jdt.internal.core.search.JavaSearchScope;
28
import org.eclipse.jdt.internal.core.search.JavaSearchScope;
29
import org.eclipse.jdt.internal.core.search.StringOperation;
29
import org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
30
import org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
30
import org.eclipse.jdt.internal.core.search.matching.*;
31
import org.eclipse.jdt.internal.core.search.matching.*;
31
32
Lines 668-795 Link Here
668
 * @since 3.4
669
 * @since 3.4
669
 */
670
 */
670
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
671
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
672
	return StringOperation.getCamelCaseMatchingRegions(pattern, patternStart, patternEnd, name, nameStart, nameEnd, samePartCount) != null;
673
}
671
674
672
	/* !!!!!!!!!! WARNING !!!!!!!!!!
675
/**
673
	 * The algorithm of this method has been entirely copied from
676
 * Answers all the regions in a given name matching a given pattern using
674
	 * CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean).
677
 * a specified match rule.
675
	 * Array lengths have been replaced with call to {@link String#length()} and
678
 * </p><p>
676
	 * array direct access have been replaced with call to {@link String#charAt(int)}.
679
 * Each of these regions is made of its starting index and its length in the given
677
	 *
680
 * name. They are all concatenated in a single array of <code>int</code>
678
	 * So, do NOT modify this method directly to fix any bug but modify first the
681
 * which therefore always has an even length.
679
	 * corresponding CharOperation method and do the copy again to be sure that
682
 * </p><p>
680
	 * these two methods are kept synchronized.
683
 * All returned regions are disjointed from each other. That means that the end
681
	 */
684
 * of a region is always different than the start of the following one.<br>
682
685
 * For example, if two regions are returned:<br>
683
	if (name == null)
686
 * <code>{ start1, length1, start2, length2 }</code><br>
684
		return false; // null name cannot match
687
 * then <code>start1+length1</code> will always be smaller than
685
	if (pattern == null)
688
 * <code>start2</code>.
686
		return true; // null pattern is equivalent to '*'
689
 * </p><p>
687
	if (patternEnd < 0) 	patternEnd = pattern.length();
690
 * The possible comparison rules between the name and the pattern are:
688
	if (nameEnd < 0) nameEnd = name.length();
691
 * <ul>
689
692
 * <li>{@link #R_EXACT_MATCH exact matching}</li>
690
	if (patternEnd <= patternStart) return nameEnd <= nameStart;
693
 * <li>{@link #R_PREFIX_MATCH prefix matching}</li>
691
	if (nameEnd <= nameStart) return false;
694
 * <li>{@link #R_PATTERN_MATCH pattern matching}</li>
692
	// check first pattern char
695
 * <li>{@link #R_CAMELCASE_MATCH camel case matching}</li>
693
	if (name.charAt(nameStart) != pattern.charAt(patternStart)) {
696
 * <li>{@link #R_CAMELCASE_SAME_PART_COUNT_MATCH camel case matching with same parts count}</li>
694
		// first char must strictly match (upper/lower)
697
 * </ul>
695
		return false;
698
 * Each of these rules may be combined with the
696
	}
699
 * {@link #R_CASE_SENSITIVE case sensitive flag} if the match comparison
697
700
 * should respect the case.
698
	char patternChar, nameChar;
701
 * <pre>
699
	int iPattern = patternStart;
702
 * Examples:
700
	int iName = nameStart;
703
 * <ol><li>  pattern = "NPE"
701
704
 *  name = NullPointerException / NoPermissionException
702
	// Main loop is on pattern characters
705
 *  matchRule = {@link #R_CAMELCASE_MATCH}
703
	while (true) {
706
 *  result:  { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 } </li>
704
707
 * <li>  pattern = "NuPoEx"
705
		iPattern++;
708
 *  name = NullPointerException
706
		iName++;
709
 *  matchRule = {@link #R_CAMELCASE_MATCH}
707
710
 *  result:  { 0, 2, 4, 2, 11, 2 }</li>
708
		if (iPattern == patternEnd) { // we have exhausted pattern...
711
 * <li>  pattern = "IPL3"
709
			// it's a match if the name can have additional parts (i.e. uppercase characters) or is also exhausted
712
 *  name = "IPerspectiveListener3"
710
			if (!samePartCount || iName == nameEnd) return true;
713
 *  matchRule = {@link #R_CAMELCASE_MATCH}
711
714
 *  result:  { 0, 2, 12, 1, 20, 1 }</li>
712
			// otherwise it's a match only if the name has no more uppercase characters
715
 * <li>  pattern = "HashME"
713
			while (true) {
716
 *  name = "HashMapEntry"
714
				if (iName == nameEnd) {
717
 *  matchRule = {@link #R_CAMELCASE_MATCH}
715
					// we have exhausted the name, so it's a match
718
 *  result:  { 0, 5, 7, 1 }</li>
716
					return true;
719
 * <li>  pattern = "N???Po*Ex?eption"
717
				}
720
 *  name = NullPointerException
718
				nameChar = name.charAt(iName);
721
 *  matchRule = {@link #R_PATTERN_MATCH} | {@link #R_CASE_SENSITIVE}
719
				// test if the name character is uppercase
722
 *  result:  { 0, 1, 4, 2, 11, 2, 14, 6 }</li>
720
				if (nameChar < ScannerHelper.MAX_OBVIOUS) {
723
 * <li>  pattern = "Ha*M*ent*"
721
					if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar] & ScannerHelper.C_UPPER_LETTER) != 0) {
724
 *  name = "HashMapEntry"
722
						return false;
725
 *  matchRule = {@link #R_PATTERN_MATCH}
723
					}
726
 *  result:  { 0, 2, 4, 1, 7, 3 }</li>
724
				}
727
 * </ol></pre>
725
				else if (!Character.isJavaIdentifierPart(nameChar) || Character.isUpperCase(nameChar)) {
728
 *
726
					return false;
729
 * @see #camelCaseMatch(String, String, boolean) for more details on the
727
				}
730
 * 	camel case behavior
728
				iName++;
731
 * @see CharOperation#match(char[], char[], boolean) for more details on the
732
 * 	pattern match behavior
733
 *
734
 * @param pattern the given pattern. If <code>null</code>,
735
 * 	then the returned region will be the entire given name.
736
 * @param name the given name
737
 * @param matchRule the rule to apply for the comparison.<br>
738
 *     The following values are accepted:
739
 *     <ul>
740
 *         <li>{@link #R_EXACT_MATCH}</li>
741
 *         <li>{@link #R_PREFIX_MATCH}</li>
742
 *         <li>{@link #R_PATTERN_MATCH}</li>
743
 *         <li>{@link #R_CAMELCASE_MATCH}</li>
744
 *         <li>{@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}</li>
745
 *     </ul>
746
 *     <p>
747
 *     Each of these valid values may be also combined with
748
 *     the {@link #R_CASE_SENSITIVE} flag.
749
 *     </p>
750
 *     Some examples:
751
 *     <ul>
752
 *         <li>{@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}:
753
 *                 if an exact case sensitive match is expected,</li>
754
 *         <li>{@link #R_PREFIX_MATCH}:
755
 *                 if a case insensitive prefix match is expected,</li>
756
 *         <li>{@link #R_CAMELCASE_MATCH}:
757
 *                 if a case insensitive camel case match is expected,</li>
758
 *         <li>{@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
759
 *                 | {@link #R_CASE_SENSITIVE}:
760
 *                 if a case sensitive camel case with same parts count match
761
 *                 is expected,</li>
762
 *         <li>etc.</li>
763
 *     </ul>
764
 * @return an array of <code>int</code> having two slots per returned
765
 *     regions: the first one is the region starting index and the second one
766
 *     is the region length.
767
 *     <p>
768
 *     The returned region may be the entire given name if the given pattern
769
 *     is either <code>null</code> (whatever the match rule is) or
770
 *     <code>'*'</code>  with a pattern match rule.
771
 *     </p><p>
772
 *     May also be <code>null</code> if the given name does not match
773
 *     the given pattern.
774
 *     </p>
775
 * 
776
 * @since 3.5
777
 */
778
public static final int[] getMatchingRegions(String pattern, String name, int matchRule) {
779
	if (name == null) return null;
780
	if (pattern == null) {
781
		return new int[] { 0, name.length() };
782
	}
783
	boolean countMatch = false;
784
	switch (matchRule) {
785
		case SearchPattern.R_EXACT_MATCH:
786
			if (pattern.equalsIgnoreCase(name)) {
787
				return new int[] { 0, pattern.length() };
729
			}
788
			}
730
		}
789
			break;
731
790
		case SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE:
732
		if (iName == nameEnd){
791
			if (pattern.equals(name)) {
733
			// We have exhausted the name (and not the pattern), so it's not a match
792
				return new int[] { 0, pattern.length() };
734
			return false;
735
		}
736
737
		// For as long as we're exactly matching, bring it on (even if it's a lower case character)
738
		if ((patternChar = pattern.charAt(iPattern)) == name.charAt(iName)) {
739
			continue;
740
		}
741
742
		// If characters are not equals, then it's not a match if patternChar is lowercase
743
		if (patternChar < ScannerHelper.MAX_OBVIOUS) {
744
			if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[patternChar] & (ScannerHelper.C_UPPER_LETTER | ScannerHelper.C_DIGIT)) == 0) {
745
				return false;
746
			}
793
			}
747
		}
794
			break;
748
		else if (Character.isJavaIdentifierPart(patternChar) && !Character.isUpperCase(patternChar) && !Character.isDigit(patternChar)) {
795
		case SearchPattern.R_PREFIX_MATCH:
749
			return false;
796
			if (name.toLowerCase().startsWith(pattern.toLowerCase())) {
750
		}
797
				return new int[] { 0, pattern.length() };
751
752
		// patternChar is uppercase, so let's find the next uppercase in name
753
		while (true) {
754
			if (iName == nameEnd){
755
	            //	We have exhausted name (and not pattern), so it's not a match
756
				return false;
757
			}
798
			}
758
799
			break;
759
			nameChar = name.charAt(iName);
800
		case SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE:
760
			if (nameChar < ScannerHelper.MAX_OBVIOUS) {
801
			if (name.startsWith(pattern)) {
761
				int charNature = ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar];
802
				return new int[] { 0, pattern.length() };
762
				if ((charNature & (ScannerHelper.C_LOWER_LETTER | ScannerHelper.C_SPECIAL)) != 0) {
763
					// nameChar is lowercase
764
					iName++;
765
				} else if ((charNature & ScannerHelper.C_DIGIT) != 0) {
766
					// nameChar is digit => break if the digit is current pattern character otherwise consume it
767
					if (patternChar == nameChar) break;
768
					iName++;
769
				// nameChar is uppercase...
770
				} else  if (patternChar != nameChar) {
771
					//.. and it does not match patternChar, so it's not a match
772
					return false;
773
				} else {
774
					//.. and it matched patternChar. Back to the big loop
775
					break;
776
				}
777
			}
803
			}
778
			// Same tests for non-obvious characters
804
			break;
779
			else if (Character.isJavaIdentifierPart(nameChar) && !Character.isUpperCase(nameChar)) {
805
		case SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH:
780
				iName++;
806
			countMatch = true;
781
			} else if (Character.isDigit(nameChar)) {
807
			//$FALL-THROUGH$
782
				if (patternChar == nameChar) break;
808
		case SearchPattern.R_CAMELCASE_MATCH:
783
				iName++;
809
			int[] regions = StringOperation.getCamelCaseMatchingRegions(pattern, 0, pattern.length(), name, 0, name.length(), countMatch);
784
			} else  if (patternChar != nameChar) {
810
			if (regions != null) return regions;
785
				return false;
811
			if (name.toLowerCase().startsWith(pattern.toLowerCase())) {
786
			} else {
812
				return new int[] { 0, pattern.length() };
787
				break;
788
			}
813
			}
789
		}
814
			break;
790
		// At this point, either name has been exhausted, or it is at an uppercase letter.
815
		case SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_CASE_SENSITIVE:
791
		// Since pattern is also at an uppercase letter
816
			countMatch = true;
817
			//$FALL-THROUGH$
818
		case SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE:
819
			return StringOperation.getCamelCaseMatchingRegions(pattern, 0, pattern.length(), name, 0, name.length(), countMatch);
820
		case SearchPattern.R_PATTERN_MATCH:
821
			return StringOperation.getPatternMatchingRegions(pattern, 0, pattern.length(), name, 0, name.length(), false);
822
		case SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE:
823
			return StringOperation.getPatternMatchingRegions(pattern, 0, pattern.length(), name, 0, name.length(), true);
792
	}
824
	}
825
	return null;
793
}
826
}
794
827
795
/**
828
/**
(-)search/org/eclipse/jdt/internal/core/search/StringOperation.java (+460 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.jdt.internal.core.search;
12
13
import org.eclipse.jdt.core.compiler.CharOperation;
14
import org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
15
16
/**
17
 * This class is a collection of helper methods to manipulate strings during search.
18
 */
19
public final class StringOperation {
20
21
/**
22
 * Answers all the regions in a given name matching a given camel case pattern.
23
 * </p><p>
24
 * Each of these regions is made of its starting index and its length in the given
25
 * name. They are all concatenated in a single array of <code>int</code>
26
 * which therefore always has an even length.
27
 * </p><p>
28
 * Note that each region is disjointed from the following one.<br>
29
 * E.g. if the regions are <code>{ start1, length1, start2, length2 }</code>,
30
 * then <code>start1+length1</code> will always be smaller than
31
 * <code>start2</code>.
32
 * </p><p>
33
 * <pre>
34
 * Examples:
35
 * <ol><li>  pattern = "NPE"
36
 *  name = NullPointerException / NoPermissionException
37
 *  result:  { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 } </li>
38
 * <li>  pattern = "NuPoEx"
39
 *  name = NullPointerException
40
 *  result:  { 0, 2, 4, 2, 11, 2 }</li>
41
 * <li>  pattern = "IPL3"
42
 *  name = "IPerspectiveListener3"
43
 *  result:  { 0, 2, 12, 1, 20, 1 }</li>
44
 * <li>  pattern = "HashME"
45
 *  name = "HashMapEntry"
46
 *  result:  { 0, 5, 7, 1 }</li>
47
 * </ol></pre>
48
 *</p>
49
 * @see CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean)
50
 * 	for more details on the camel case behavior
51
 * @see CharOperation#match(char[], char[], boolean) for more details on the
52
 * 	pattern match behavior
53
 *
54
 * @param pattern the given pattern
55
 * @param patternStart the start index of the pattern, inclusive
56
 * @param patternEnd the end index of the pattern, exclusive
57
 * @param name the given name
58
 * @param nameStart the start index of the name, inclusive
59
 * @param nameEnd the end index of the name, exclusive
60
 * @param samePartCount flag telling whether the pattern and the name should
61
 * 	have the same count of parts or not.<br>
62
 * 	&nbsp;&nbsp;For example:
63
 * 	<ul>
64
 * 		<li>'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
65
 * 				but not 'HashMapEntry'</li>
66
 * 		<li>'HMap' type string pattern will still match previous 'HashMap' and
67
 * 				'HtmlMapper' types, but not 'HighMagnitude'</li>
68
 * 	</ul>
69
 * @return an array of <code>int</code> having two slots per returned
70
 * 	regions (first one is the starting index of the region and the second
71
 * 	one the length of the region).<br>
72
 * 	Note that it may be <code>null</code> if the given name does not match
73
 * 	the pattern
74
 * @since 3.5
75
 */
76
public static final int[] getCamelCaseMatchingRegions(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
77
78
	/* !!!!!!!!!! WARNING !!!!!!!!!!
79
	 * The algorithm used in this method has been fully inspired from
80
	 * CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean).
81
	 *
82
	 * So, if any change needs to be applied in the algorithm, do NOT forget
83
	 * to backport it in the CharOperation method!
84
	 */
85
86
	if (name == null)
87
		return null; // null name cannot match
88
	if (pattern == null)
89
		return new int[] { patternStart, patternEnd-patternStart }; // null pattern is equivalent to '*'
90
	if (patternEnd < 0) 	patternEnd = pattern.length();
91
	if (nameEnd < 0) nameEnd = name.length();
92
93
	if (patternEnd <= patternStart) {
94
		return nameEnd <= nameStart
95
			? new int[] { patternStart, patternEnd-patternStart }
96
			: null;
97
	}
98
	if (nameEnd <= nameStart) return null;
99
	// check first pattern char
100
	if (name.charAt(nameStart) != pattern.charAt(patternStart)) {
101
		// first char must strictly match (upper/lower)
102
		return null;
103
	}
104
105
	char patternChar, nameChar;
106
	int iPattern = patternStart;
107
	int iName = nameStart;
108
109
	// init segments
110
	int parts = 1;
111
	for (int i=patternStart+1; i<patternEnd; i++) {
112
		if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[pattern.charAt(i)] & (ScannerHelper.C_UPPER_LETTER | ScannerHelper.C_DIGIT)) != 0) {
113
			parts++;
114
		}
115
	}
116
	int[] segments = null;
117
	int count = 0; // count
118
119
	// Main loop is on pattern characters
120
	int segmentStart = iName;
121
	while (true) {
122
		iPattern++;
123
		iName++;
124
125
		if (iPattern == patternEnd) { // we have exhausted pattern...
126
			// it's a match if the name can have additional parts (i.e. uppercase characters) or is also exhausted
127
			if (!samePartCount || iName == nameEnd) {
128
				if (segments == null) {
129
					segments = new int[2];
130
				}
131
				segments[count++] = segmentStart;
132
				segments[count++] = iName - segmentStart;
133
				if (count < segments.length) {
134
					System.arraycopy(segments, 0, segments = new int[count], 0, count);
135
				}
136
				return segments;
137
			}
138
139
			// otherwise it's a match only if the name has no more uppercase characters
140
			int segmentEnd = iName;
141
			while (true) {
142
				if (iName == nameEnd) {
143
					// we have exhausted the name, so it's a match
144
					if (segments == null) {
145
						segments = new int[2];
146
					}
147
					segments[count++] = segmentStart;
148
					segments[count++] = segmentEnd - segmentStart;
149
					if (count < segments.length) {
150
						System.arraycopy(segments, 0, segments = new int[count], 0, count);
151
					}
152
					return segments;
153
				}
154
				nameChar = name.charAt(iName);
155
				// test if the name character is uppercase
156
				if (nameChar < ScannerHelper.MAX_OBVIOUS) {
157
					if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar] & ScannerHelper.C_UPPER_LETTER) != 0) {
158
						return null;
159
					}
160
				}
161
				else if (!Character.isJavaIdentifierPart(nameChar) || Character.isUpperCase(nameChar)) {
162
					return null;
163
				}
164
				iName++;
165
			}
166
		}
167
168
		if (iName == nameEnd){
169
			// We have exhausted the name (and not the pattern), so it's not a match
170
			return null;
171
		}
172
173
		// For as long as we're exactly matching, bring it on (even if it's a lower case character)
174
		if ((patternChar = pattern.charAt(iPattern)) == name.charAt(iName)) {
175
			continue;
176
		}
177
		int segmentEnd = iName;
178
179
		// If characters are not equals, then it's not a match if patternChar is lowercase
180
		if (patternChar < ScannerHelper.MAX_OBVIOUS) {
181
			if ((ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[patternChar] & (ScannerHelper.C_UPPER_LETTER | ScannerHelper.C_DIGIT)) == 0) {
182
				return null;
183
			}
184
		} else if (Character.isJavaIdentifierPart(patternChar) && !Character.isUpperCase(patternChar) && !Character.isDigit(patternChar)) {
185
			return null;
186
		}
187
188
		// patternChar is uppercase, so let's find the next uppercase in name
189
		while (true) {
190
			if (iName == nameEnd){
191
	            //	We have exhausted name (and not pattern), so it's not a match
192
				return null;
193
			}
194
195
			nameChar = name.charAt(iName);
196
			if (nameChar < ScannerHelper.MAX_OBVIOUS) {
197
				int charNature = ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[nameChar];
198
				if ((charNature & (ScannerHelper.C_LOWER_LETTER | ScannerHelper.C_SPECIAL)) != 0) {
199
					// nameChar is lowercase
200
					iName++;
201
				} else if ((charNature & ScannerHelper.C_DIGIT) != 0) {
202
					// nameChar is digit => break if the digit is current pattern character otherwise consume it
203
					if (patternChar == nameChar) break;
204
					iName++;
205
				// nameChar is uppercase...
206
				} else  if (patternChar != nameChar) {
207
					//.. and it does not match patternChar, so it's not a match
208
					return null;
209
				} else {
210
					//.. and it matched patternChar. Back to the big loop
211
					break;
212
				}
213
			}
214
			// Same tests for non-obvious characters
215
			else if (Character.isJavaIdentifierPart(nameChar) && !Character.isUpperCase(nameChar)) {
216
				iName++;
217
			} else if (Character.isDigit(nameChar)) {
218
				if (patternChar == nameChar) break;
219
				iName++;
220
			} else  if (patternChar != nameChar) {
221
				return null;
222
			} else {
223
				break;
224
			}
225
		}
226
		// At this point, either name has been exhausted, or it is at an uppercase letter.
227
		// Since pattern is also at an uppercase letter
228
		if (segments == null) {
229
			segments = new int[parts*2];
230
		}
231
		segments[count++] = segmentStart;
232
		segments[count++] = segmentEnd - segmentStart;
233
		segmentStart = iName;
234
	}
235
}
236
237
/**
238
 * Answers all the regions in a given name matching a given <i>pattern</i>
239
 * pattern (e.g. "H*M??").
240
 * </p><p>
241
 * Each of these regions is made of its starting index and its length in the given
242
 * name. They are all concatenated in a single array of <code>int</code>
243
 * which therefore always has an even length.
244
 * </p><p>
245
 * Note that each region is disjointed from the following one.<br>
246
 * E.g. if the regions are <code>{ start1, length1, start2, length2 }</code>,
247
 * then <code>start1+length1</code> will always be smaller than
248
 * <code>start2</code>.
249
 * </p><p>
250
 * <pre>
251
 * Examples:
252
 * <ol>
253
 * <li>  pattern = "N???Po*Ex?eption"
254
 *  name = NullPointerException
255
 *  result:  { 0, 1, 4, 2, 11, 2, 14, 6 }</li>
256
 * <li>  pattern = "Ha*M*ent*"
257
 *  name = "HashMapEntry"
258
 *  result:  { 0, 2, 4, 1, 7, 3 }</li>
259
 * </ol></pre>
260
 *</p>
261
 * @see CharOperation#match(char[], char[], boolean) for more details on the
262
 * 	pattern match behavior
263
 *
264
 * @param pattern the given pattern
265
 * @param patternStart the given pattern start
266
 * @param patternEnd the given pattern end
267
 * @param name the given name
268
 * @param nameStart the given name start
269
 * @param nameEnd the given name end
270
 * @param isCaseSensitive flag to know if the matching should be case sensitive
271
 * @return an array of <code>int</code> having two slots per returned
272
 * 	regions (first one is the starting index of the region and the second
273
 * 	one the length of the region).<br>
274
 * 	Note that it may be <code>null</code> if the given name does not match
275
 * 	the pattern
276
 * @since 3.5
277
 */
278
public static final int[] getPatternMatchingRegions(
279
	String pattern,
280
	int patternStart,
281
	int patternEnd,
282
	String name,
283
	int nameStart,
284
	int nameEnd,
285
	boolean isCaseSensitive) {
286
287
	if (name == null) return null; // null name cannot match
288
	if (pattern == null || pattern.equals("*")) {	//$NON-NLS-1$
289
		return new int[] { nameStart, nameEnd-nameStart }; // null pattern is equivalent to '*'
290
	}
291
	int iPattern = patternStart;
292
	int iName = nameStart;
293
294
	// init segments parts
295
	if (patternEnd < 0)
296
		patternEnd = pattern.length();
297
	if (nameEnd < 0)
298
		nameEnd = name.length();
299
	int questions = 0;
300
	int stars = 0;
301
	int parts = 0;
302
	char previous = 0;
303
	for (int i=patternStart; i<patternEnd; i++) {
304
		char ch = pattern.charAt(i);
305
		switch (ch) {
306
			case '?':
307
				questions++;
308
				break;
309
			case '*':
310
				stars++;
311
				break;
312
			default:
313
				switch (previous) {
314
					case 0 :
315
					case '?':
316
					case '*':
317
						parts++;
318
						break;
319
				}
320
		}
321
		previous = ch;
322
	}
323
	int[] segments = new int[parts*2];
324
325
	/* check first segment */
326
	int count = 0;
327
	int start = iName;
328
	char patternChar = 0;
329
	previous = 0;
330
	while ((iPattern < patternEnd)
331
		&& (patternChar = pattern.charAt(iPattern)) != '*') {
332
		if (iName == nameEnd)
333
			return null;
334
		if (patternChar == '?') {
335
			switch (previous) {
336
				case 0:
337
				case '?':
338
					break;
339
				default:
340
					segments[count++] = start;
341
					segments[count++] = iPattern-start;
342
					break;
343
			}
344
		} else {
345
			if (patternChar != (isCaseSensitive ? name.charAt(iName) : ScannerHelper.toLowerCase(name.charAt(iName)))) {
346
				return null;
347
			}
348
			switch (previous) {
349
				case 0:
350
				case '?':
351
					start = iPattern;
352
					break;
353
			}
354
		}
355
		iName++;
356
		iPattern++;
357
		previous = patternChar;
358
	}
359
	/* check sequence of star+segment */
360
	int segmentStart;
361
	if (patternChar == '*') {
362
		if (iPattern > 0) {
363
			segments[count++] = start;
364
			segments[count++] = iName-start;
365
			start = iName;
366
		}
367
		segmentStart = ++iPattern; // skip star
368
	} else {
369
		if (iName == nameEnd) {
370
			if (count == (parts*2)) return segments;
371
			int end = patternEnd;
372
			if (previous == '?') { // last char was a '?' => purge all trailing '?'
373
				while (pattern.charAt(--end-1) == '?') {
374
					if (end == start) {
375
						return new int[] { patternStart, patternEnd-patternStart };
376
					}
377
				}
378
			}
379
			return new int[] { start, end-start };
380
		}
381
		return null;
382
	}
383
	int prefixStart = iName;
384
	previous = patternChar;
385
	char previousSegment = patternChar;
386
	checkSegment : while (iName < nameEnd) {
387
		if (iPattern == patternEnd) {
388
			iPattern = segmentStart; // mismatch - restart current segment
389
			iName = ++prefixStart;
390
			previous = previousSegment;
391
			continue checkSegment;
392
		}
393
		/* segment is ending */
394
		if ((patternChar = pattern.charAt(iPattern)) == '*') {
395
			segmentStart = ++iPattern; // skip star
396
			if (segmentStart == patternEnd) {
397
				if (count < (parts*2)) {
398
					segments[count++] = start;
399
					segments[count++] = iName-start;
400
				}
401
				return segments;
402
			}
403
			switch (previous) {
404
				case '*':
405
				case '?':
406
					break;
407
				default:
408
					segments[count++] = start;
409
					segments[count++] = iName-start;
410
					break;
411
			}
412
			prefixStart = iName;
413
			start = prefixStart;
414
			previous = patternChar;
415
			previousSegment = patternChar;
416
			continue checkSegment;
417
		}
418
		/* check current name character */
419
		if (patternChar == '?') {
420
			switch (previous) {
421
				case '*':
422
				case '?':
423
					break;
424
				default:
425
					segments[count++] = start;
426
					segments[count++] = iName-start;
427
					break;
428
			}
429
		} else {
430
			if ((isCaseSensitive ? name.charAt(iName) : ScannerHelper.toLowerCase(name.charAt(iName))) != patternChar) {
431
				iPattern = segmentStart; // mismatch - restart current segment
432
				iName = ++prefixStart;
433
				start = prefixStart;
434
				if (previous == '?') count -= 2;
435
				previous = previousSegment;
436
				continue checkSegment;
437
			}
438
			switch (previous) {
439
				case '?':
440
					start = iName;
441
					break;
442
			}
443
		}
444
		iName++;
445
		iPattern++;
446
		previous = patternChar;
447
	}
448
449
	if ((segmentStart == patternEnd)
450
		|| (iName == nameEnd && iPattern == patternEnd)
451
		|| (iPattern == patternEnd - 1 && pattern.charAt(iPattern) == '*')) {
452
		if (count < (parts*2)) {
453
			segments[count++] = start;
454
			segments[count++] = iName-start;
455
		}
456
		return segments;
457
	}
458
	return null;
459
}
460
}
(-)src/org/eclipse/jdt/core/tests/model/RunJavaSearchTests.java (+1 lines)
Lines 61-66 Link Here
61
		allClasses.add(JavaSearchMultipleProjectsTests.class);
61
		allClasses.add(JavaSearchMultipleProjectsTests.class);
62
		allClasses.add(SearchTests.class);
62
		allClasses.add(SearchTests.class);
63
		allClasses.add(JavaSearchScopeTests.class);
63
		allClasses.add(JavaSearchScopeTests.class);
64
		allClasses.add(MatchingRegionsTest.class);
64
65
65
		// Reset forgotten subsets of tests
66
		// Reset forgotten subsets of tests
66
		TestCase.TESTS_PREFIX = null;
67
		TestCase.TESTS_PREFIX = null;
(-)src/org/eclipse/jdt/core/tests/model/MatchingRegionsTest.java (+1358 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.jdt.core.tests.model;
12
13
import junit.framework.Test;
14
15
16
import org.eclipse.jdt.core.search.SearchPattern;
17
18
public class MatchingRegionsTest extends AbstractJavaModelTests {
19
20
public MatchingRegionsTest(String name) {
21
	super(name);
22
}
23
24
public static Test suite() {
25
	return buildTestSuite(MatchingRegionsTest.class);
26
}
27
28
/*
29
 * Print regions in a string.
30
 */
31
private String printRegions(String name, int[] regions) {
32
	if (regions == null) return null;
33
	if (regions.length == 0) return name;
34
	StringBuffer buffer = new StringBuffer();
35
	int start = 0;
36
	for (int i=0; i<regions.length; i+=2) {
37
		int segmentStart = regions[i];
38
		int rLength = regions[i+1];
39
		if (start != segmentStart) {
40
			if (start > 0) buffer.append(']');
41
			buffer.append(name.substring(start, segmentStart));
42
			buffer.append('[');
43
		} else if (start == 0) {
44
			buffer.append('[');
45
		}
46
		buffer.append(name.substring(segmentStart, segmentStart+rLength));
47
		start = segmentStart+rLength;
48
	}
49
	buffer.append(']');
50
	int nLength= name.length();
51
	if (nLength > start) {
52
		buffer.append(name.substring(start, nLength));
53
	}
54
	return buffer.toString();
55
}
56
57
// Tests generated while running JDT/Core Model tests
58
public void test0001() {
59
	String name = "P";
60
	int[] regions = SearchPattern.getMatchingRegions("P",  name, SearchPattern.R_EXACT_MATCH);
61
	assertEquals("Unexpected regions length", 2, regions.length);
62
	assertEquals("Unexpected matching regions", "[P]", printRegions(name, regions));
63
}
64
public void test0002() {
65
	String name = "class_path";
66
	int[] regions = SearchPattern.getMatchingRegions("class*path",  name, SearchPattern.R_PATTERN_MATCH);
67
	assertEquals("Unexpected regions length", 4, regions.length);
68
	assertEquals("Unexpected matching regions", "[class]_[path]", printRegions(name, regions));
69
}
70
public void test0003() {
71
	String name = "p3.p2.p";
72
	int[] regions = SearchPattern.getMatchingRegions("p3*",  name, SearchPattern.R_PATTERN_MATCH);
73
	assertEquals("Unexpected regions length", 2, regions.length);
74
	assertEquals("Unexpected matching regions", "[p3].p2.p", printRegions(name, regions));
75
}
76
public void test0004() {
77
	String name = "j1";
78
	int[] regions = SearchPattern.getMatchingRegions("j?",  name, SearchPattern.R_PATTERN_MATCH);
79
	assertEquals("Unexpected regions length", 2, regions.length);
80
	assertEquals("Unexpected matching regions", "[j]1", printRegions(name, regions));
81
}
82
public void test0005() {
83
	String name = "j1";
84
	int[] regions = SearchPattern.getMatchingRegions("j*",  name, SearchPattern.R_PATTERN_MATCH);
85
	assertEquals("Unexpected regions length", 2, regions.length);
86
	assertEquals("Unexpected matching regions", "[j]1", printRegions(name, regions));
87
}
88
public void test0006() {
89
	String name = "j7.qua.li.fied";
90
	int[] regions = SearchPattern.getMatchingRegions("j7.*",  name, SearchPattern.R_PATTERN_MATCH);
91
	assertEquals("Unexpected regions length", 2, regions.length);
92
	assertEquals("Unexpected matching regions", "[j7.]qua.li.fied", printRegions(name, regions));
93
}
94
public void test0007() {
95
	String name = "j7.qua.li.fied";
96
	int[] regions = SearchPattern.getMatchingRegions("j7.*.*",  name, SearchPattern.R_PATTERN_MATCH);
97
	assertEquals("Unexpected regions length", 4, regions.length);
98
	assertEquals("Unexpected matching regions", "[j7.]qua[.]li.fied", printRegions(name, regions));
99
}
100
public void test0008() {
101
	String name = "java.lang";
102
	int[] regions = SearchPattern.getMatchingRegions("????.????",  name, SearchPattern.R_PATTERN_MATCH);
103
	assertEquals("Unexpected regions length", 2, regions.length);
104
	assertEquals("Unexpected matching regions", "java[.]lang", printRegions(name, regions));
105
}
106
public void test0009() {
107
	String name = "java";
108
	int[] regions = SearchPattern.getMatchingRegions("*",  name, SearchPattern.R_PATTERN_MATCH);
109
	assertEquals("Unexpected regions length", 2, regions.length);
110
	assertEquals("Unexpected matching regions", "[java]", printRegions(name, regions));
111
}
112
public void test0010() {
113
	String name = "p2";
114
	int[] regions = SearchPattern.getMatchingRegions("*p2",  name, SearchPattern.R_PATTERN_MATCH);
115
	assertEquals("Unexpected regions length", 2, regions.length);
116
	assertEquals("Unexpected matching regions", "[p2]", printRegions(name, regions));
117
}
118
public void test0011() {
119
	String name = "p3.p2.p";
120
	int[] regions = SearchPattern.getMatchingRegions("*p2.*",  name, SearchPattern.R_PATTERN_MATCH);
121
	assertEquals("Unexpected regions length", 2, regions.length);
122
	assertEquals("Unexpected matching regions", "p3.[p2.]p", printRegions(name, regions));
123
}
124
public void test0012() {
125
	String name = "foo/1";
126
	int[] regions = SearchPattern.getMatchingRegions("foo*",  name, SearchPattern.R_PATTERN_MATCH);
127
	assertEquals("Unexpected regions length", 2, regions.length);
128
	assertEquals("Unexpected matching regions", "[foo]/1", printRegions(name, regions));
129
}
130
public void test0013() {
131
	String name = "p24741.A";
132
	int[] regions = SearchPattern.getMatchingRegions("p24741.*",  name, SearchPattern.R_PATTERN_MATCH);
133
	assertEquals("Unexpected regions length", 2, regions.length);
134
	assertEquals("Unexpected matching regions", "[p24741.]A", printRegions(name, regions));
135
}
136
public void test0014() {
137
	String name = "RuntimeException/java.lang//!";
138
	int[] regions = SearchPattern.getMatchingRegions("RE",  name, SearchPattern.R_CAMELCASE_MATCH);
139
	assertEquals("Unexpected regions length", 4, regions.length);
140
	assertEquals("Unexpected matching regions", "[R]untime[E]xception/java.lang//!", printRegions(name, regions));
141
}
142
public void test0015() {
143
	String name = "RuntimeException/java.lang//!";
144
	int[] regions = SearchPattern.getMatchingRegions("RException",  name, SearchPattern.R_CAMELCASE_MATCH);
145
	assertEquals("Unexpected regions length", 4, regions.length);
146
	assertEquals("Unexpected matching regions", "[R]untime[Exception]/java.lang//!", printRegions(name, regions));
147
}
148
public void test0016() {
149
	String name = "RuntimeException/java.lang//!";
150
	int[] regions = SearchPattern.getMatchingRegions("RuntimeException",  name, SearchPattern.R_CAMELCASE_MATCH);
151
	assertEquals("Unexpected regions length", 2, regions.length);
152
	assertEquals("Unexpected matching regions", "[RuntimeException]/java.lang//!", printRegions(name, regions));
153
}
154
public void test0017() {
155
	String name = "RuntimeException/java.lang//!";
156
	int[] regions = SearchPattern.getMatchingRegions("r*e*",  name, SearchPattern.R_PATTERN_MATCH);
157
	assertEquals("Unexpected regions length", 4, regions.length);
158
	assertEquals("Unexpected matching regions", "[R]untim[e]Exception/java.lang//!", printRegions(name, regions));
159
}
160
public void test0018() {
161
	String name = "CloneNotSupportedException/java.lang//!";
162
	int[] regions = SearchPattern.getMatchingRegions("CNS",  name, SearchPattern.R_CAMELCASE_MATCH);
163
	assertEquals("Unexpected regions length", 6, regions.length);
164
	assertEquals("Unexpected matching regions", "[C]lone[N]ot[S]upportedException/java.lang//!", printRegions(name, regions));
165
}
166
public void test0019() {
167
	String name = "AA/d8//";
168
	int[] regions = SearchPattern.getMatchingRegions("AA",  name, SearchPattern.R_CAMELCASE_MATCH);
169
	assertEquals("Unexpected regions length", 2, regions.length);
170
	assertEquals("Unexpected matching regions", "[AA]/d8//", printRegions(name, regions));
171
}
172
public void test0020() {
173
	String name = "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz/c9///S";
174
	int[] regions = SearchPattern.getMatchingRegions("AA",  name, SearchPattern.R_CAMELCASE_MATCH);
175
	assertEquals("Unexpected regions length", 4, regions.length);
176
	assertEquals("Unexpected matching regions", "[A]bcdefghijklmnopqrstuvwxyz[A]bcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz/c9///S", printRegions(name, regions));
177
}
178
public void test0021() {
179
	String name = "gen_obj";
180
	int[] regions = SearchPattern.getMatchingRegions("gen_???",  name, SearchPattern.R_PATTERN_MATCH);
181
	assertEquals("Unexpected regions length", 2, regions.length);
182
	assertEquals("Unexpected matching regions", "[gen_]obj", printRegions(name, regions));
183
}
184
public void test0022() {
185
	String name = "gen_exc";
186
	int[] regions = SearchPattern.getMatchingRegions("gen_*",  name, SearchPattern.R_PATTERN_MATCH);
187
	assertEquals("Unexpected regions length", 2, regions.length);
188
	assertEquals("Unexpected matching regions", "[gen_]exc", printRegions(name, regions));
189
}
190
public void test0023() {
191
	String name = "qgen_obj";
192
	int[] regions = SearchPattern.getMatchingRegions("?gen_*",  name, SearchPattern.R_PATTERN_MATCH);
193
	assertEquals("Unexpected regions length", 2, regions.length);
194
	assertEquals("Unexpected matching regions", "q[gen_]obj", printRegions(name, regions));
195
}
196
public void test0024() {
197
	String name = "qgen_run";
198
	int[] regions = SearchPattern.getMatchingRegions("qgen_*",  name, SearchPattern.R_PATTERN_MATCH);
199
	assertEquals("Unexpected regions length", 2, regions.length);
200
	assertEquals("Unexpected matching regions", "[qgen_]run", printRegions(name, regions));
201
}
202
public void test0025() {
203
	String name = "complete/4";
204
	int[] regions = SearchPattern.getMatchingRegions("complete/*",  name, SearchPattern.R_PATTERN_MATCH);
205
	assertEquals("Unexpected regions length", 2, regions.length);
206
	assertEquals("Unexpected matching regions", "[complete/]4", printRegions(name, regions));
207
}
208
public void test0026() {
209
	String name = "generic/1";
210
	int[] regions = SearchPattern.getMatchingRegions("*e?e*",  name, SearchPattern.R_PATTERN_MATCH);
211
	assertEquals("Unexpected regions length", 4, regions.length);
212
	assertEquals("Unexpected matching regions", "g[e]n[e]ric/1", printRegions(name, regions));
213
}
214
public void test0027() {
215
	String name = "generic/1";
216
	int[] regions = SearchPattern.getMatchingRegions("generic/*",  name, SearchPattern.R_PATTERN_MATCH);
217
	assertEquals("Unexpected regions length", 2, regions.length);
218
	assertEquals("Unexpected matching regions", "[generic/]1", printRegions(name, regions));
219
}
220
public void test0028() {
221
	String name = "A/e8//";
222
	int[] regions = SearchPattern.getMatchingRegions("a*",  name, SearchPattern.R_PATTERN_MATCH);
223
	assertEquals("Unexpected regions length", 2, regions.length);
224
	assertEquals("Unexpected matching regions", "[A]/e8//", printRegions(name, regions));
225
}
226
public void test0029() {
227
	String name = "java.lang";
228
	int[] regions = SearchPattern.getMatchingRegions("*.lang",  name, SearchPattern.R_PATTERN_MATCH);
229
	assertEquals("Unexpected regions length", 2, regions.length);
230
	assertEquals("Unexpected matching regions", "java[.lang]", printRegions(name, regions));
231
}
232
public void test0030() {
233
	String name = "Collection/b87627//?";
234
	int[] regions = SearchPattern.getMatchingRegions("*tion/*",  name, SearchPattern.R_PATTERN_MATCH);
235
	assertEquals("Unexpected regions length", 2, regions.length);
236
	assertEquals("Unexpected matching regions", "Collec[tion/]b87627//?", printRegions(name, regions));
237
}
238
public void test0031() {
239
	String name = "Collection";
240
	int[] regions = SearchPattern.getMatchingRegions("*tion",  name, SearchPattern.R_PATTERN_MATCH);
241
	assertEquals("Unexpected regions length", 2, regions.length);
242
	assertEquals("Unexpected matching regions", "Collec[tion]", printRegions(name, regions));
243
}
244
public void test0032() {
245
	String name = "java.lang.annotation";
246
	int[] regions = SearchPattern.getMatchingRegions("*.lang*",  name, SearchPattern.R_PATTERN_MATCH);
247
	assertEquals("Unexpected regions length", 2, regions.length);
248
	assertEquals("Unexpected matching regions", "java[.lang].annotation", printRegions(name, regions));
249
}
250
public void test0033() {
251
	String name = "pack.age.Test";
252
	int[] regions = SearchPattern.getMatchingRegions("*.test*",  name, SearchPattern.R_PATTERN_MATCH);
253
	assertEquals("Unexpected regions length", 2, regions.length);
254
	assertEquals("Unexpected matching regions", "pack.age[.Test]", printRegions(name, regions));
255
}
256
public void test0034() {
257
	String name = "b124645.test";
258
	int[] regions = SearchPattern.getMatchingRegions("b12*",  name, SearchPattern.R_PATTERN_MATCH);
259
	assertEquals("Unexpected regions length", 2, regions.length);
260
	assertEquals("Unexpected matching regions", "[b12]4645.test", printRegions(name, regions));
261
}
262
public void test0035() {
263
	String name = "ELPM/pack//!";
264
	int[] regions = SearchPattern.getMatchingRegions("e*",  name, SearchPattern.R_PATTERN_MATCH);
265
	assertEquals("Unexpected regions length", 2, regions.length);
266
	assertEquals("Unexpected matching regions", "[E]LPM/pack//!", printRegions(name, regions));
267
}
268
public void test0036() {
269
	String name = "IDocumentExtension3";
270
	int[] regions = SearchPattern.getMatchingRegions("IDE3",  name, SearchPattern.R_CAMELCASE_MATCH);
271
	assertEquals("Unexpected regions length", 6, regions.length);
272
	assertEquals("Unexpected matching regions", "[ID]ocument[E]xtension[3]", printRegions(name, regions));
273
}
274
public void test0037() {
275
	String name = "IDocumentExtension135";
276
	int[] regions = SearchPattern.getMatchingRegions("IDE3",  name, SearchPattern.R_CAMELCASE_MATCH);
277
	assertEquals("Unexpected regions length", 6, regions.length);
278
	assertEquals("Unexpected matching regions", "[ID]ocument[E]xtension1[3]5", printRegions(name, regions));
279
}
280
public void test0038() {
281
	String name = "IDocumentProviderExtension3";
282
	int[] regions = SearchPattern.getMatchingRegions("IDPE3",  name, SearchPattern.R_CAMELCASE_MATCH);
283
	assertEquals("Unexpected regions length", 8, regions.length);
284
	assertEquals("Unexpected matching regions", "[ID]ocument[P]rovider[E]xtension[3]", printRegions(name, regions));
285
}
286
public void test0039() {
287
	String name = "IDocumentProviderExtension12345";
288
	int[] regions = SearchPattern.getMatchingRegions("IDPE3",  name, SearchPattern.R_CAMELCASE_MATCH);
289
	assertEquals("Unexpected regions length", 8, regions.length);
290
	assertEquals("Unexpected matching regions", "[ID]ocument[P]rovider[E]xtension12[3]45", printRegions(name, regions));
291
}
292
public void test0040() {
293
	String name = "IPerspectiveListener3";
294
	int[] regions = SearchPattern.getMatchingRegions("IPL3",  name, SearchPattern.R_CAMELCASE_MATCH);
295
	assertEquals("Unexpected regions length", 6, regions.length);
296
	assertEquals("Unexpected matching regions", "[IP]erspective[L]istener[3]", printRegions(name, regions));
297
}
298
public void test0041() {
299
	String name = "IPropertySource2";
300
	int[] regions = SearchPattern.getMatchingRegions("IPS2",  name, SearchPattern.R_CAMELCASE_MATCH);
301
	assertEquals("Unexpected regions length", 6, regions.length);
302
	assertEquals("Unexpected matching regions", "[IP]roperty[S]ource[2]", printRegions(name, regions));
303
}
304
public void test0042() {
305
	String name = "IWorkbenchWindowPulldownDelegate2";
306
	int[] regions = SearchPattern.getMatchingRegions("IWWPD2",  name, SearchPattern.R_CAMELCASE_MATCH);
307
	assertEquals("Unexpected regions length", 10, regions.length);
308
	assertEquals("Unexpected matching regions", "[IW]orkbench[W]indow[P]ulldown[D]elegate[2]", printRegions(name, regions));
309
}
310
public void test0043() {
311
	String name = "UTF16DocumentScannerSupport";
312
	int[] regions = SearchPattern.getMatchingRegions("UTF16DSS",  name, SearchPattern.R_CAMELCASE_MATCH);
313
	assertEquals("Unexpected regions length", 6, regions.length);
314
	assertEquals("Unexpected matching regions", "[UTF16D]ocument[S]canner[S]upport", printRegions(name, regions));
315
}
316
public void test0044() {
317
	String name = "UTF16DocumentScannerSupport";
318
	int[] regions = SearchPattern.getMatchingRegions("UTF1DSS",  name, SearchPattern.R_CAMELCASE_MATCH);
319
	assertEquals("Unexpected regions length", 8, regions.length);
320
	assertEquals("Unexpected matching regions", "[UTF1]6[D]ocument[S]canner[S]upport", printRegions(name, regions));
321
}
322
public void test0045() {
323
	String name = "UTF1DocScannerSupport";
324
	int[] regions = SearchPattern.getMatchingRegions("UTF1DSS",  name, SearchPattern.R_CAMELCASE_MATCH);
325
	assertEquals("Unexpected regions length", 6, regions.length);
326
	assertEquals("Unexpected matching regions", "[UTF1D]oc[S]canner[S]upport", printRegions(name, regions));
327
}
328
public void test0046() {
329
	String name = "UTF16DocumentScannerSupport";
330
	int[] regions = SearchPattern.getMatchingRegions("UTF6DSS",  name, SearchPattern.R_CAMELCASE_MATCH);
331
	assertEquals("Unexpected regions length", 8, regions.length);
332
	assertEquals("Unexpected matching regions", "[UTF]1[6D]ocument[S]canner[S]upport", printRegions(name, regions));
333
}
334
public void test0047() {
335
	String name = "UTF6DocScannerSupport";
336
	int[] regions = SearchPattern.getMatchingRegions("UTF6DSS",  name, SearchPattern.R_CAMELCASE_MATCH);
337
	assertEquals("Unexpected regions length", 6, regions.length);
338
	assertEquals("Unexpected matching regions", "[UTF6D]oc[S]canner[S]upport", printRegions(name, regions));
339
}
340
public void test0048() {
341
	String name = "UTF16DocumentScannerSupport";
342
	int[] regions = SearchPattern.getMatchingRegions("UTFDSS",  name, SearchPattern.R_CAMELCASE_MATCH);
343
	assertEquals("Unexpected regions length", 8, regions.length);
344
	assertEquals("Unexpected matching regions", "[UTF]16[D]ocument[S]canner[S]upport", printRegions(name, regions));
345
}
346
public void test0049() {
347
	String name = "UTF1DocScannerSupport";
348
	int[] regions = SearchPattern.getMatchingRegions("UTFDSS",  name, SearchPattern.R_CAMELCASE_MATCH);
349
	assertEquals("Unexpected regions length", 8, regions.length);
350
	assertEquals("Unexpected matching regions", "[UTF]1[D]oc[S]canner[S]upport", printRegions(name, regions));
351
}
352
public void test0050() {
353
	String name = "UTFDocScannerSupport";
354
	int[] regions = SearchPattern.getMatchingRegions("UTFDSS",  name, SearchPattern.R_CAMELCASE_MATCH);
355
	assertEquals("Unexpected regions length", 6, regions.length);
356
	assertEquals("Unexpected matching regions", "[UTFD]oc[S]canner[S]upport", printRegions(name, regions));
357
}
358
public void test0051() {
359
	String name = "AaAaAa";
360
	int[] regions = SearchPattern.getMatchingRegions("AA",  name, SearchPattern.R_CAMELCASE_MATCH);
361
	assertEquals("Unexpected regions length", 4, regions.length);
362
	assertEquals("Unexpected matching regions", "[A]a[A]aAa", printRegions(name, regions));
363
}
364
public void test0052() {
365
	String name = "AxxAyy";
366
	int[] regions = SearchPattern.getMatchingRegions("AA",  name, SearchPattern.R_CAMELCASE_MATCH);
367
	assertEquals("Unexpected regions length", 4, regions.length);
368
	assertEquals("Unexpected matching regions", "[A]xx[A]yy", printRegions(name, regions));
369
}
370
public void test0053() {
371
	String name = "AAxx";
372
	int[] regions = SearchPattern.getMatchingRegions("AAx",  name, SearchPattern.R_CAMELCASE_MATCH);
373
	assertEquals("Unexpected regions length", 2, regions.length);
374
	assertEquals("Unexpected matching regions", "[AAx]x", printRegions(name, regions));
375
}
376
public void test0054() {
377
	String name = "AxxAyy";
378
	int[] regions = SearchPattern.getMatchingRegions("AxxA",  name, SearchPattern.R_CAMELCASE_MATCH);
379
	assertEquals("Unexpected regions length", 2, regions.length);
380
	assertEquals("Unexpected matching regions", "[AxxA]yy", printRegions(name, regions));
381
}
382
public void test0055() {
383
	String name = "AAa";
384
	int[] regions = SearchPattern.getMatchingRegions("AAa",  name, SearchPattern.R_CAMELCASE_MATCH);
385
	assertEquals("Unexpected regions length", 2, regions.length);
386
	assertEquals("Unexpected matching regions", "[AAa]", printRegions(name, regions));
387
}
388
public void test0056() {
389
	String name = "AaAaAa";
390
	int[] regions = SearchPattern.getMatchingRegions("AAa",  name, SearchPattern.R_CAMELCASE_MATCH);
391
	assertEquals("Unexpected regions length", 4, regions.length);
392
	assertEquals("Unexpected matching regions", "[A]a[Aa]Aa", printRegions(name, regions));
393
}
394
public void test0057() {
395
	String name = "AxAyAz";
396
	int[] regions = SearchPattern.getMatchingRegions("AxA",  name, SearchPattern.R_CAMELCASE_MATCH);
397
	assertEquals("Unexpected regions length", 2, regions.length);
398
	assertEquals("Unexpected matching regions", "[AxA]yAz", printRegions(name, regions));
399
}
400
public void test0058() {
401
	String name = "AxxAyy";
402
	int[] regions = SearchPattern.getMatchingRegions("AxA",  name, SearchPattern.R_CAMELCASE_MATCH);
403
	assertEquals("Unexpected regions length", 4, regions.length);
404
	assertEquals("Unexpected matching regions", "[Ax]x[A]yy", printRegions(name, regions));
405
}
406
public void test0059() {
407
	String name = "A1/#/?/pack";
408
	int[] regions = SearchPattern.getMatchingRegions("a*a**",  name, SearchPattern.R_PATTERN_MATCH);
409
	assertEquals("Unexpected regions length", 4, regions.length);
410
	assertEquals("Unexpected matching regions", "[A]1/#/?/p[a]ck", printRegions(name, regions));
411
}
412
public void test0060() {
413
	String name = "AAAA";
414
	int[] regions = SearchPattern.getMatchingRegions("a*a*",  name, SearchPattern.R_PATTERN_MATCH);
415
	assertEquals("Unexpected regions length", 4, regions.length);
416
	assertEquals("Unexpected matching regions", "[AA]AA", printRegions(name, regions));
417
}
418
public void test0061() {
419
	String name = "aMethodWith1Digit";
420
	int[] regions = SearchPattern.getMatchingRegions("aMWD",  name, SearchPattern.R_CAMELCASE_MATCH);
421
	assertEquals("Unexpected regions length", 6, regions.length);
422
	assertEquals("Unexpected matching regions", "[aM]ethod[W]ith1[D]igit", printRegions(name, regions));
423
}
424
public void test0062() {
425
	String name = "aMethodWithNothingSpecial";
426
	int[] regions = SearchPattern.getMatchingRegions("aMW",  name, SearchPattern.R_CAMELCASE_MATCH);
427
	assertEquals("Unexpected regions length", 4, regions.length);
428
	assertEquals("Unexpected matching regions", "[aM]ethod[W]ithNothingSpecial", printRegions(name, regions));
429
}
430
public void test0063() {
431
	String name = "aMethodWithNothingSpecial";
432
	int[] regions = SearchPattern.getMatchingRegions("aMethod",  name, SearchPattern.R_CAMELCASE_MATCH);
433
	assertEquals("Unexpected regions length", 2, regions.length);
434
	assertEquals("Unexpected matching regions", "[aMethod]WithNothingSpecial", printRegions(name, regions));
435
}
436
public void test0064() {
437
	String name = "aMethodWith1Digit";
438
	int[] regions = SearchPattern.getMatchingRegions("aMethodWith1",  name, SearchPattern.R_CAMELCASE_MATCH);
439
	assertEquals("Unexpected regions length", 2, regions.length);
440
	assertEquals("Unexpected matching regions", "[aMethodWith1]Digit", printRegions(name, regions));
441
}
442
public void test0065() {
443
	String name = "aMethodWithNothingSpecial";
444
	int[] regions = SearchPattern.getMatchingRegions("*method*with*a*",  name, SearchPattern.R_PATTERN_MATCH);
445
	assertEquals("Unexpected regions length", 6, regions.length);
446
	assertEquals("Unexpected matching regions", "a[MethodWith]NothingSpeci[a]l", printRegions(name, regions));
447
}
448
public void test0066() {
449
	String name = "aMethodWith1Digit";
450
	int[] regions = SearchPattern.getMatchingRegions("aMW1D",  name, SearchPattern.R_CAMELCASE_MATCH);
451
	assertEquals("Unexpected regions length", 6, regions.length);
452
	assertEquals("Unexpected matching regions", "[aM]ethod[W]ith[1D]igit", printRegions(name, regions));
453
}
454
public void test0067() {
455
	String name = "aMethodWith1Or2_Or_3_Or__4__DigitsAnd_Several_Underscores";
456
	int[] regions = SearchPattern.getMatchingRegions("aMWOOODASU",  name, SearchPattern.R_CAMELCASE_MATCH);
457
	assertEquals("Unexpected regions length", 18, regions.length);
458
	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));
459
}
460
public void test0068() {
461
	String name = "aFieldWithS$Dollar";
462
	int[] regions = SearchPattern.getMatchingRegions("aFWSD",  name, SearchPattern.R_CAMELCASE_MATCH);
463
	assertEquals("Unexpected regions length", 8, regions.length);
464
	assertEquals("Unexpected matching regions", "[aF]ield[W]ith[S]$[D]ollar", printRegions(name, regions));
465
}
466
public void test0069() {
467
	String name = "aFieldWith$Several$DollarslAnd1DigitAnd_1Underscore";
468
	int[] regions = SearchPattern.getMatchingRegions("aFWSD",  name, SearchPattern.R_CAMELCASE_MATCH);
469
	assertEquals("Unexpected regions length", 8, regions.length);
470
	assertEquals("Unexpected matching regions", "[aF]ield[W]ith$[S]everal$[D]ollarslAnd1DigitAnd_1Underscore", printRegions(name, regions));
471
}
472
public void test0070() {
473
	String name = "aFieldWithS$Dollar";
474
	int[] regions = SearchPattern.getMatchingRegions("aFWS$",  name, SearchPattern.R_CAMELCASE_MATCH);
475
	assertEquals("Unexpected regions length", 6, regions.length);
476
	assertEquals("Unexpected matching regions", "[aF]ield[W]ith[S$]Dollar", printRegions(name, regions));
477
}
478
public void test0071() {
479
	String name = "aStrangeFieldWith$$$$$$$$$$$$$$$SeveraContiguousDollars";
480
	int[] regions = SearchPattern.getMatchingRegions("aSFWSCD",  name, SearchPattern.R_CAMELCASE_MATCH);
481
	assertEquals("Unexpected regions length", 12, regions.length);
482
	assertEquals("Unexpected matching regions", "[aS]trange[F]ield[W]ith$$$$$$$$$$$$$$$[S]evera[C]ontiguous[D]ollars", printRegions(name, regions));
483
}
484
public void test0072() {
485
	String name = "otherFieldWhichStartsWithAnotherLetter";
486
	int[] regions = SearchPattern.getMatchingRegions("oF",  name, SearchPattern.R_CAMELCASE_MATCH);
487
	assertEquals("Unexpected regions length", 4, regions.length);
488
	assertEquals("Unexpected matching regions", "[o]ther[F]ieldWhichStartsWithAnotherLetter", printRegions(name, regions));
489
}
490
public void test0073() {
491
	String name = "oF";
492
	int[] regions = SearchPattern.getMatchingRegions("oF",  name, SearchPattern.R_CAMELCASE_MATCH);
493
	assertEquals("Unexpected regions length", 2, regions.length);
494
	assertEquals("Unexpected matching regions", "[oF]", printRegions(name, regions));
495
}
496
public void test0074() {
497
	String name = "foo/1";
498
	int[] regions = SearchPattern.getMatchingRegions("*/1",  name, SearchPattern.R_PATTERN_MATCH);
499
	assertEquals("Unexpected regions length", 2, regions.length);
500
	assertEquals("Unexpected matching regions", "foo[/1]", printRegions(name, regions));
501
}
502
public void test0075() {
503
	String name = "HashMap";
504
	int[] regions = SearchPattern.getMatchingRegions("HM",  name, SearchPattern.R_CAMELCASE_MATCH);
505
	assertEquals("Unexpected regions length", 4, regions.length);
506
	assertEquals("Unexpected matching regions", "[H]ash[M]ap", printRegions(name, regions));
507
}
508
public void test0076() {
509
	String name = "HaxMapxxxx";
510
	int[] regions = SearchPattern.getMatchingRegions("HM",  name, SearchPattern.R_CAMELCASE_MATCH);
511
	assertEquals("Unexpected regions length", 4, regions.length);
512
	assertEquals("Unexpected matching regions", "[H]ax[M]apxxxx", printRegions(name, regions));
513
}
514
public void test0077() {
515
	String name = "HashMap";
516
	int[] regions = SearchPattern.getMatchingRegions("HaM",  name, SearchPattern.R_CAMELCASE_MATCH);
517
	assertEquals("Unexpected regions length", 4, regions.length);
518
	assertEquals("Unexpected matching regions", "[Ha]sh[M]ap", printRegions(name, regions));
519
}
520
public void test0078() {
521
	String name = "HaxMapxxxx";
522
	int[] regions = SearchPattern.getMatchingRegions("HaM",  name, SearchPattern.R_CAMELCASE_MATCH);
523
	assertEquals("Unexpected regions length", 4, regions.length);
524
	assertEquals("Unexpected matching regions", "[Ha]x[M]apxxxx", printRegions(name, regions));
525
}
526
public void test0079() {
527
	String name = "HashMap";
528
	int[] regions = SearchPattern.getMatchingRegions("HashM",  name, SearchPattern.R_CAMELCASE_MATCH);
529
	assertEquals("Unexpected regions length", 2, regions.length);
530
	assertEquals("Unexpected matching regions", "[HashM]ap", printRegions(name, regions));
531
}
532
public void test0080() {
533
	String name = "HashMap";
534
	int[] regions = SearchPattern.getMatchingRegions("HMa",  name, SearchPattern.R_CAMELCASE_MATCH);
535
	assertEquals("Unexpected regions length", 4, regions.length);
536
	assertEquals("Unexpected matching regions", "[H]ash[Ma]p", printRegions(name, regions));
537
}
538
public void test0081() {
539
	String name = "HaxMapxxxx";
540
	int[] regions = SearchPattern.getMatchingRegions("HMa",  name, SearchPattern.R_CAMELCASE_MATCH);
541
	assertEquals("Unexpected regions length", 4, regions.length);
542
	assertEquals("Unexpected matching regions", "[H]ax[Ma]pxxxx", printRegions(name, regions));
543
}
544
public void test0082() {
545
	String name = "HashMap";
546
	int[] regions = SearchPattern.getMatchingRegions("HaMa",  name, SearchPattern.R_CAMELCASE_MATCH);
547
	assertEquals("Unexpected regions length", 4, regions.length);
548
	assertEquals("Unexpected matching regions", "[Ha]sh[Ma]p", printRegions(name, regions));
549
}
550
public void test0083() {
551
	String name = "HaxMapxxxx";
552
	int[] regions = SearchPattern.getMatchingRegions("HaMa",  name, SearchPattern.R_CAMELCASE_MATCH);
553
	assertEquals("Unexpected regions length", 4, regions.length);
554
	assertEquals("Unexpected matching regions", "[Ha]x[Ma]pxxxx", printRegions(name, regions));
555
}
556
public void test0084() {
557
	String name = "HashMap";
558
	int[] regions = SearchPattern.getMatchingRegions("HashMa",  name, SearchPattern.R_CAMELCASE_MATCH);
559
	assertEquals("Unexpected regions length", 2, regions.length);
560
	assertEquals("Unexpected matching regions", "[HashMa]p", printRegions(name, regions));
561
}
562
public void test0085() {
563
	String name = "HashMap";
564
	int[] regions = SearchPattern.getMatchingRegions("HMap",  name, SearchPattern.R_CAMELCASE_MATCH);
565
	assertEquals("Unexpected regions length", 4, regions.length);
566
	assertEquals("Unexpected matching regions", "[H]ash[Map]", printRegions(name, regions));
567
}
568
public void test0086() {
569
	String name = "HaxMapxxxx";
570
	int[] regions = SearchPattern.getMatchingRegions("HMap",  name, SearchPattern.R_CAMELCASE_MATCH);
571
	assertEquals("Unexpected regions length", 4, regions.length);
572
	assertEquals("Unexpected matching regions", "[H]ax[Map]xxxx", printRegions(name, regions));
573
}
574
public void test0087() {
575
	String name = "HashMap";
576
	int[] regions = SearchPattern.getMatchingRegions("HaMap",  name, SearchPattern.R_CAMELCASE_MATCH);
577
	assertEquals("Unexpected regions length", 4, regions.length);
578
	assertEquals("Unexpected matching regions", "[Ha]sh[Map]", printRegions(name, regions));
579
}
580
public void test0088() {
581
	String name = "HaxMapxxxx";
582
	int[] regions = SearchPattern.getMatchingRegions("HaMap",  name, SearchPattern.R_CAMELCASE_MATCH);
583
	assertEquals("Unexpected regions length", 4, regions.length);
584
	assertEquals("Unexpected matching regions", "[Ha]x[Map]xxxx", printRegions(name, regions));
585
}
586
public void test0089() {
587
	String name = "HashMap";
588
	int[] regions = SearchPattern.getMatchingRegions("HashMap",  name, SearchPattern.R_CAMELCASE_MATCH);
589
	assertEquals("Unexpected regions length", 2, regions.length);
590
	assertEquals("Unexpected matching regions", "[HashMap]", printRegions(name, regions));
591
}
592
public void test0090() {
593
	String name = "NullPointerException";
594
	int[] regions = SearchPattern.getMatchingRegions("NuPoEx",  name, SearchPattern.R_CAMELCASE_MATCH);
595
	assertEquals("Unexpected regions length", 6, regions.length);
596
	assertEquals("Unexpected matching regions", "[Nu]ll[Po]inter[Ex]ception", printRegions(name, regions));
597
}
598
public void test0091() {
599
	String name = "NullPointerException";
600
	int[] regions = SearchPattern.getMatchingRegions("NPE",  name, SearchPattern.R_CAMELCASE_MATCH);
601
	assertEquals("Unexpected regions length", 6, regions.length);
602
	assertEquals("Unexpected matching regions", "[N]ull[P]ointer[E]xception", printRegions(name, regions));
603
}
604
public void test0092() {
605
	String name = "NullPointerException";
606
	int[] regions = SearchPattern.getMatchingRegions("NullPE",  name, SearchPattern.R_CAMELCASE_MATCH);
607
	assertEquals("Unexpected regions length", 4, regions.length);
608
	assertEquals("Unexpected matching regions", "[NullP]ointer[E]xception", printRegions(name, regions));
609
}
610
public void test0093() {
611
	String name = "TZ";
612
	int[] regions = SearchPattern.getMatchingRegions("TZ",  name, SearchPattern.R_CAMELCASE_MATCH);
613
	assertEquals("Unexpected regions length", 2, regions.length);
614
	assertEquals("Unexpected matching regions", "[TZ]", printRegions(name, regions));
615
}
616
public void test0094() {
617
	String name = "TimeZone";
618
	int[] regions = SearchPattern.getMatchingRegions("TZ",  name, SearchPattern.R_CAMELCASE_MATCH);
619
	assertEquals("Unexpected regions length", 4, regions.length);
620
	assertEquals("Unexpected matching regions", "[T]ime[Z]one", printRegions(name, regions));
621
}
622
public void test0095() {
623
	String name = "TimeZone";
624
	int[] regions = SearchPattern.getMatchingRegions("TiZo",  name, SearchPattern.R_CAMELCASE_MATCH);
625
	assertEquals("Unexpected regions length", 4, regions.length);
626
	assertEquals("Unexpected matching regions", "[Ti]me[Zo]ne", printRegions(name, regions));
627
}
628
public void test0096() {
629
	String name = "IllegalMonitorStateException/java.lang//!";
630
	int[] regions = SearchPattern.getMatchingRegions("IllegalMSException",  name, SearchPattern.R_CAMELCASE_MATCH);
631
	assertEquals("Unexpected regions length", 6, regions.length);
632
	assertEquals("Unexpected matching regions", "[IllegalM]onitor[S]tate[Exception]/java.lang//!", printRegions(name, regions));
633
}
634
public void test0097() {
635
	String name = "CloneNotSupportedException/java.lang//!";
636
	int[] regions = SearchPattern.getMatchingRegions("CloneNotSupportedEx",  name, SearchPattern.R_CAMELCASE_MATCH);
637
	assertEquals("Unexpected regions length", 2, regions.length);
638
	assertEquals("Unexpected matching regions", "[CloneNotSupportedEx]ception/java.lang//!", printRegions(name, regions));
639
}
640
public void test0098() {
641
	String name = "CloneNotSupportedException/java.lang//!";
642
	int[] regions = SearchPattern.getMatchingRegions("CloneNotSupportedException",  name, SearchPattern.R_CAMELCASE_MATCH);
643
	assertEquals("Unexpected regions length", 2, regions.length);
644
	assertEquals("Unexpected matching regions", "[CloneNotSupportedException]/java.lang//!", printRegions(name, regions));
645
}
646
public void test0099() {
647
	String name = "CxxxxCasexx/b201064///S";
648
	int[] regions = SearchPattern.getMatchingRegions("CCase",  name, SearchPattern.R_CAMELCASE_MATCH);
649
	assertEquals("Unexpected regions length", 4, regions.length);
650
	assertEquals("Unexpected matching regions", "[C]xxxx[Case]xx/b201064///S", printRegions(name, regions));
651
}
652
public void test0100() {
653
	String name = "CatCasexx/b201064///S";
654
	int[] regions = SearchPattern.getMatchingRegions("CCase",  name, SearchPattern.R_CAMELCASE_MATCH);
655
	assertEquals("Unexpected regions length", 4, regions.length);
656
	assertEquals("Unexpected matching regions", "[C]at[Case]xx/b201064///S", printRegions(name, regions));
657
}
658
public void test0101() {
659
	String name = "CamelCasexxEntry/b201064///S";
660
	int[] regions = SearchPattern.getMatchingRegions("CaCase",  name, SearchPattern.R_CAMELCASE_MATCH);
661
	assertEquals("Unexpected regions length", 4, regions.length);
662
	assertEquals("Unexpected matching regions", "[Ca]mel[Case]xxEntry/b201064///S", printRegions(name, regions));
663
}
664
public void test0102() {
665
	String name = "CatCasexx/b201064///S";
666
	int[] regions = SearchPattern.getMatchingRegions("CaCase",  name, SearchPattern.R_CAMELCASE_MATCH);
667
	assertEquals("Unexpected regions length", 4, regions.length);
668
	assertEquals("Unexpected matching regions", "[Ca]t[Case]xx/b201064///S", printRegions(name, regions));
669
}
670
public void test0103() {
671
	String name = "CamelCasexxEntry/b201064///S";
672
	int[] regions = SearchPattern.getMatchingRegions("CamelCase",  name, SearchPattern.R_CAMELCASE_MATCH);
673
	assertEquals("Unexpected regions length", 2, regions.length);
674
	assertEquals("Unexpected matching regions", "[CamelCase]xxEntry/b201064///S", printRegions(name, regions));
675
}
676
public void test0104() {
677
	String name = "CxxxxCasexx/b201064///S";
678
	int[] regions = SearchPattern.getMatchingRegions("CC",  name, SearchPattern.R_CAMELCASE_MATCH);
679
	assertEquals("Unexpected regions length", 4, regions.length);
680
	assertEquals("Unexpected matching regions", "[C]xxxx[C]asexx/b201064///S", printRegions(name, regions));
681
}
682
public void test0105() {
683
	String name = "CatCasexx/b201064///S";
684
	int[] regions = SearchPattern.getMatchingRegions("CC",  name, SearchPattern.R_CAMELCASE_MATCH);
685
	assertEquals("Unexpected regions length", 4, regions.length);
686
	assertEquals("Unexpected matching regions", "[C]at[C]asexx/b201064///S", printRegions(name, regions));
687
}
688
public void test0106() {
689
	String name = "CamelCasexxEntry/b201064///S";
690
	int[] regions = SearchPattern.getMatchingRegions("CaC",  name, SearchPattern.R_CAMELCASE_MATCH);
691
	assertEquals("Unexpected regions length", 4, regions.length);
692
	assertEquals("Unexpected matching regions", "[Ca]mel[C]asexxEntry/b201064///S", printRegions(name, regions));
693
}
694
public void test0107() {
695
	String name = "CatCasexx/b201064///S";
696
	int[] regions = SearchPattern.getMatchingRegions("CaC",  name, SearchPattern.R_CAMELCASE_MATCH);
697
	assertEquals("Unexpected regions length", 4, regions.length);
698
	assertEquals("Unexpected matching regions", "[Ca]t[C]asexx/b201064///S", printRegions(name, regions));
699
}
700
public void test0108() {
701
	String name = "CamelCasexxEntry/b201064///S";
702
	int[] regions = SearchPattern.getMatchingRegions("CamelC",  name, SearchPattern.R_CAMELCASE_MATCH);
703
	assertEquals("Unexpected regions length", 2, regions.length);
704
	assertEquals("Unexpected matching regions", "[CamelC]asexxEntry/b201064///S", printRegions(name, regions));
705
}
706
public void test0109() {
707
	String name = "CxxxxCasexx/b201064///S";
708
	int[] regions = SearchPattern.getMatchingRegions("CCa",  name, SearchPattern.R_CAMELCASE_MATCH);
709
	assertEquals("Unexpected regions length", 4, regions.length);
710
	assertEquals("Unexpected matching regions", "[C]xxxx[Ca]sexx/b201064///S", printRegions(name, regions));
711
}
712
public void test0110() {
713
	String name = "CatCasexx/b201064///S";
714
	int[] regions = SearchPattern.getMatchingRegions("CCa",  name, SearchPattern.R_CAMELCASE_MATCH);
715
	assertEquals("Unexpected regions length", 4, regions.length);
716
	assertEquals("Unexpected matching regions", "[C]at[Ca]sexx/b201064///S", printRegions(name, regions));
717
}
718
public void test0111() {
719
	String name = "CamelCasexxEntry/b201064///S";
720
	int[] regions = SearchPattern.getMatchingRegions("CaCa",  name, SearchPattern.R_CAMELCASE_MATCH);
721
	assertEquals("Unexpected regions length", 4, regions.length);
722
	assertEquals("Unexpected matching regions", "[Ca]mel[Ca]sexxEntry/b201064///S", printRegions(name, regions));
723
}
724
public void test0112() {
725
	String name = "CatCasexx/b201064///S";
726
	int[] regions = SearchPattern.getMatchingRegions("CaCa",  name, SearchPattern.R_CAMELCASE_MATCH);
727
	assertEquals("Unexpected regions length", 4, regions.length);
728
	assertEquals("Unexpected matching regions", "[Ca]t[Ca]sexx/b201064///S", printRegions(name, regions));
729
}
730
public void test0113() {
731
	String name = "CamelCasexxEntry/b201064///S";
732
	int[] regions = SearchPattern.getMatchingRegions("CamelCa",  name, SearchPattern.R_CAMELCASE_MATCH);
733
	assertEquals("Unexpected regions length", 2, regions.length);
734
	assertEquals("Unexpected matching regions", "[CamelCa]sexxEntry/b201064///S", printRegions(name, regions));
735
}
736
public void test0114() {
737
	String name = "test.Bug";
738
	int[] regions = SearchPattern.getMatchingRegions("*bug",  name, SearchPattern.R_PATTERN_MATCH);
739
	assertEquals("Unexpected regions length", 2, regions.length);
740
	assertEquals("Unexpected matching regions", "test.[Bug]", printRegions(name, regions));
741
}
742
public void test0115() {
743
	String name = "pack.TestInner$Member";
744
	int[] regions = SearchPattern.getMatchingRegions("*member",  name, SearchPattern.R_PATTERN_MATCH);
745
	assertEquals("Unexpected regions length", 2, regions.length);
746
	assertEquals("Unexpected matching regions", "pack.TestInner$[Member]", printRegions(name, regions));
747
}
748
public void test0116() {
749
	String name = "TestConstructor1";
750
	int[] regions = SearchPattern.getMatchingRegions("TestConstructor",  name, SearchPattern.R_CAMELCASE_MATCH);
751
	assertEquals("Unexpected regions length", 2, regions.length);
752
	assertEquals("Unexpected matching regions", "[TestConstructor]1", printRegions(name, regions));
753
}
754
public void test0117() {
755
	String name = "oneTwoThree";
756
	int[] regions = SearchPattern.getMatchingRegions("oTT",  name, SearchPattern.R_CAMELCASE_MATCH);
757
	assertEquals("Unexpected regions length", 6, regions.length);
758
	assertEquals("Unexpected matching regions", "[o]ne[T]wo[T]hree", printRegions(name, regions));
759
}
760
public void test0118() {
761
	String name = "FFFTest";
762
	int[] regions = SearchPattern.getMatchingRegions("FF",  name, SearchPattern.R_CAMELCASE_MATCH);
763
	assertEquals("Unexpected regions length", 2, regions.length);
764
	assertEquals("Unexpected matching regions", "[FF]FTest", printRegions(name, regions));
765
}
766
public void test0119() {
767
	String name = "FoFoFo";
768
	int[] regions = SearchPattern.getMatchingRegions("FF",  name, SearchPattern.R_CAMELCASE_MATCH);
769
	assertEquals("Unexpected regions length", 4, regions.length);
770
	assertEquals("Unexpected matching regions", "[F]o[F]oFo", printRegions(name, regions));
771
}
772
public void test0120() {
773
	String name = "IZZAException";
774
	int[] regions = SearchPattern.getMatchingRegions("IZZ",  name, SearchPattern.R_CAMELCASE_MATCH);
775
	assertEquals("Unexpected regions length", 2, regions.length);
776
	assertEquals("Unexpected matching regions", "[IZZ]AException", printRegions(name, regions));
777
}
778
public void test0121() {
779
	String name = "IZZBException";
780
	int[] regions = SearchPattern.getMatchingRegions("*exception*",  name, SearchPattern.R_PATTERN_MATCH);
781
	assertEquals("Unexpected regions length", 2, regions.length);
782
	assertEquals("Unexpected matching regions", "IZZB[Exception]", printRegions(name, regions));
783
}
784
public void test0122() {
785
	String name = "ABC/p2//";
786
	int[] regions = SearchPattern.getMatchingRegions("ABC",  name, SearchPattern.R_CAMELCASE_MATCH);
787
	assertEquals("Unexpected regions length", 2, regions.length);
788
	assertEquals("Unexpected matching regions", "[ABC]/p2//", printRegions(name, regions));
789
}
790
public void test0123() {
791
	String name = "field";
792
	int[] regions = SearchPattern.getMatchingRegions("Fiel",  name, SearchPattern.R_PREFIX_MATCH);
793
	assertEquals("Unexpected regions length", 2, regions.length);
794
	assertEquals("Unexpected matching regions", "[fiel]d", printRegions(name, regions));
795
}
796
public void test0124() {
797
	String name = "java";
798
	int[] regions = SearchPattern.getMatchingRegions("Ja",  name, SearchPattern.R_PREFIX_MATCH);
799
	assertEquals("Unexpected regions length", 2, regions.length);
800
	assertEquals("Unexpected matching regions", "[ja]va", printRegions(name, regions));
801
}
802
public void test0125() {
803
	String name = "XX01";
804
	int[] regions = SearchPattern.getMatchingRegions("xx",  name, SearchPattern.R_PREFIX_MATCH);
805
	assertEquals("Unexpected regions length", 2, regions.length);
806
	assertEquals("Unexpected matching regions", "[XX]01", printRegions(name, regions));
807
}
808
public void test0126() {
809
	String name = "NAM_TYPE_NAME_REQUESTOR";
810
	int[] regions = SearchPattern.getMatchingRegions("nam",  name, SearchPattern.R_PREFIX_MATCH);
811
	assertEquals("Unexpected regions length", 2, regions.length);
812
	assertEquals("Unexpected matching regions", "[NAM]_TYPE_NAME_REQUESTOR", printRegions(name, regions));
813
}
814
public void test0127() {
815
	String name = "PX/pack1.pack3//";
816
	int[] regions = SearchPattern.getMatchingRegions("PX",  name, SearchPattern.R_CAMELCASE_MATCH);
817
	assertEquals("Unexpected regions length", 2, regions.length);
818
	assertEquals("Unexpected matching regions", "[PX]/pack1.pack3//", printRegions(name, regions));
819
}
820
public void test0128() {
821
	String name = "pack1.pack3";
822
	int[] regions = SearchPattern.getMatchingRegions("pack1.P",  name, SearchPattern.R_PREFIX_MATCH);
823
	assertEquals("Unexpected regions length", 2, regions.length);
824
	assertEquals("Unexpected matching regions", "[pack1.p]ack3", printRegions(name, regions));
825
}
826
public void test0129() {
827
	String name = "ZInner2";
828
	int[] regions = SearchPattern.getMatchingRegions("ZInner",  name, SearchPattern.R_CAMELCASE_MATCH);
829
	assertEquals("Unexpected regions length", 2, regions.length);
830
	assertEquals("Unexpected matching regions", "[ZInner]2", printRegions(name, regions));
831
}
832
public void test0130() {
833
	String name = "ZZZZ";
834
	int[] regions = SearchPattern.getMatchingRegions("ZZZ",  name, SearchPattern.R_CAMELCASE_MATCH);
835
	assertEquals("Unexpected regions length", 2, regions.length);
836
	assertEquals("Unexpected matching regions", "[ZZZ]Z", printRegions(name, regions));
837
}
838
public void test0131() {
839
	String name = "AClass2";
840
	int[] regions = SearchPattern.getMatchingRegions("AClas",  name, SearchPattern.R_CAMELCASE_MATCH);
841
	assertEquals("Unexpected regions length", 2, regions.length);
842
	assertEquals("Unexpected matching regions", "[AClas]s2", printRegions(name, regions));
843
}
844
public void test0132() {
845
	String name = "CompletionInsideExtends10";
846
	int[] regions = SearchPattern.getMatchingRegions("CompletionInsideExtends",  name, SearchPattern.R_CAMELCASE_MATCH);
847
	assertEquals("Unexpected regions length", 2, regions.length);
848
	assertEquals("Unexpected matching regions", "[CompletionInsideExtends]10", printRegions(name, regions));
849
}
850
public void test0133() {
851
	String name = "CompletionInsideGenericClass";
852
	int[] regions = SearchPattern.getMatchingRegions("CompletionInsideGenericClas",  name, SearchPattern.R_CAMELCASE_MATCH);
853
	assertEquals("Unexpected regions length", 2, regions.length);
854
	assertEquals("Unexpected matching regions", "[CompletionInsideGenericClas]s", printRegions(name, regions));
855
}
856
public void test0134() {
857
	String name = "WWWCompletionInstanceof3////S";
858
	int[] regions = SearchPattern.getMatchingRegions("WWWCompletionInstanceof",  name, SearchPattern.R_CAMELCASE_MATCH);
859
	assertEquals("Unexpected regions length", 2, regions.length);
860
	assertEquals("Unexpected matching regions", "[WWWCompletionInstanceof]3////S", printRegions(name, regions));
861
}
862
public void test0135() {
863
	String name = "ClassWithComplexName";
864
	int[] regions = SearchPattern.getMatchingRegions("cla",  name, SearchPattern.R_PREFIX_MATCH);
865
	assertEquals("Unexpected regions length", 2, regions.length);
866
	assertEquals("Unexpected matching regions", "[Cla]ssWithComplexName", printRegions(name, regions));
867
}
868
public void test0136() {
869
	String name = "Default";
870
	int[] regions = SearchPattern.getMatchingRegions("def",  name, SearchPattern.R_PREFIX_MATCH);
871
	assertEquals("Unexpected regions length", 2, regions.length);
872
	assertEquals("Unexpected matching regions", "[Def]ault", printRegions(name, regions));
873
}
874
public void test0137() {
875
	String name = "SuperClass";
876
	int[] regions = SearchPattern.getMatchingRegions("sup",  name, SearchPattern.R_PREFIX_MATCH);
877
	assertEquals("Unexpected regions length", 2, regions.length);
878
	assertEquals("Unexpected matching regions", "[Sup]erClass", printRegions(name, regions));
879
}
880
public void test0138() {
881
	String name = "Throwable";
882
	int[] regions = SearchPattern.getMatchingRegions("thr",  name, SearchPattern.R_PREFIX_MATCH);
883
	assertEquals("Unexpected regions length", 2, regions.length);
884
	assertEquals("Unexpected matching regions", "[Thr]owable", printRegions(name, regions));
885
}
886
public void test0139() {
887
	String name = "MemberType";
888
	int[] regions = SearchPattern.getMatchingRegions("MemberType",  name, SearchPattern.R_CAMELCASE_MATCH);
889
	assertEquals("Unexpected regions length", 2, regions.length);
890
	assertEquals("Unexpected matching regions", "[MemberType]", printRegions(name, regions));
891
}
892
public void test0140() {
893
	String name = "MemberException";
894
	int[] regions = SearchPattern.getMatchingRegions("MemberE",  name, SearchPattern.R_CAMELCASE_MATCH);
895
	assertEquals("Unexpected regions length", 2, regions.length);
896
	assertEquals("Unexpected matching regions", "[MemberE]xception", printRegions(name, regions));
897
}
898
public void test0141() {
899
	String name = "CloneNotSupportedException";
900
	int[] regions = SearchPattern.getMatchingRegions("clon",  name, SearchPattern.R_PREFIX_MATCH);
901
	assertEquals("Unexpected regions length", 2, regions.length);
902
	assertEquals("Unexpected matching regions", "[Clon]eNotSupportedException", printRegions(name, regions));
903
}
904
public void test0142() {
905
	String name = "ii1";
906
	int[] regions = SearchPattern.getMatchingRegions("Ii",  name, SearchPattern.R_PREFIX_MATCH);
907
	assertEquals("Unexpected regions length", 2, regions.length);
908
	assertEquals("Unexpected matching regions", "[ii]1", printRegions(name, regions));
909
}
910
public void test0143() {
911
	String name = "Qla1";
912
	int[] regions = SearchPattern.getMatchingRegions("ql",  name, SearchPattern.R_PREFIX_MATCH);
913
	assertEquals("Unexpected regions length", 2, regions.length);
914
	assertEquals("Unexpected matching regions", "[Ql]a1", printRegions(name, regions));
915
}
916
public void test0144() {
917
	String name = "CompletionRepeatedOtherType////S";
918
	int[] regions = SearchPattern.getMatchingRegions("CompletionRepeated",  name, SearchPattern.R_CAMELCASE_MATCH);
919
	assertEquals("Unexpected regions length", 2, regions.length);
920
	assertEquals("Unexpected matching regions", "[CompletionRepeated]OtherType////S", printRegions(name, regions));
921
}
922
public void test0145() {
923
	String name = "CompletionSameClass///";
924
	int[] regions = SearchPattern.getMatchingRegions("CompletionSameClas",  name, SearchPattern.R_CAMELCASE_MATCH);
925
	assertEquals("Unexpected regions length", 2, regions.length);
926
	assertEquals("Unexpected matching regions", "[CompletionSameClas]s///", printRegions(name, regions));
927
}
928
public void test0146() {
929
	String name = "CompletionSuperType2";
930
	int[] regions = SearchPattern.getMatchingRegions("CompletionSuper",  name, SearchPattern.R_CAMELCASE_MATCH);
931
	assertEquals("Unexpected regions length", 2, regions.length);
932
	assertEquals("Unexpected matching regions", "[CompletionSuper]Type2", printRegions(name, regions));
933
}
934
public void test0147() {
935
	String name = "CompletionToplevelType1/p3//";
936
	int[] regions = SearchPattern.getMatchingRegions("CompletionToplevelType1",  name, SearchPattern.R_CAMELCASE_MATCH);
937
	assertEquals("Unexpected regions length", 2, regions.length);
938
	assertEquals("Unexpected matching regions", "[CompletionToplevelType1]/p3//", printRegions(name, regions));
939
}
940
public void test0148() {
941
	String name = "CompletionType1";
942
	int[] regions = SearchPattern.getMatchingRegions("CT1",  name, SearchPattern.R_CAMELCASE_MATCH);
943
	assertEquals("Unexpected regions length", 6, regions.length);
944
	assertEquals("Unexpected matching regions", "[C]ompletion[T]ype[1]", printRegions(name, regions));
945
}
946
public void test0149() {
947
	String name = "CT1/q2//";
948
	int[] regions = SearchPattern.getMatchingRegions("CT1",  name, SearchPattern.R_CAMELCASE_MATCH);
949
	assertEquals("Unexpected regions length", 2, regions.length);
950
	assertEquals("Unexpected matching regions", "[CT1]/q2//", printRegions(name, regions));
951
}
952
public void test0150() {
953
	String name = "preTheFooBarsuf";
954
	int[] regions = SearchPattern.getMatchingRegions("prethe",  name, SearchPattern.R_PREFIX_MATCH);
955
	assertEquals("Unexpected regions length", 2, regions.length);
956
	assertEquals("Unexpected matching regions", "[preThe]FooBarsuf", printRegions(name, regions));
957
}
958
public void test0151() {
959
	String name = "preFooBarsuf";
960
	int[] regions = SearchPattern.getMatchingRegions("prefo",  name, SearchPattern.R_PREFIX_MATCH);
961
	assertEquals("Unexpected regions length", 2, regions.length);
962
	assertEquals("Unexpected matching regions", "[preFo]oBarsuf", printRegions(name, regions));
963
}
964
public void test0152() {
965
	String name = "preThefoFooBarsuf";
966
	int[] regions = SearchPattern.getMatchingRegions("prethefo",  name, SearchPattern.R_PREFIX_MATCH);
967
	assertEquals("Unexpected regions length", 2, regions.length);
968
	assertEquals("Unexpected matching regions", "[preThefo]FooBarsuf", printRegions(name, regions));
969
}
970
public void test0153() {
971
	String name = "mypackage";
972
	int[] regions = SearchPattern.getMatchingRegions("My",  name, SearchPattern.R_PREFIX_MATCH);
973
	assertEquals("Unexpected regions length", 2, regions.length);
974
	assertEquals("Unexpected matching regions", "[my]package", printRegions(name, regions));
975
}
976
public void test0154() {
977
	String name = "ZZZType1";
978
	int[] regions = SearchPattern.getMatchingRegions("ZZZTy",  name, SearchPattern.R_CAMELCASE_MATCH);
979
	assertEquals("Unexpected regions length", 2, regions.length);
980
	assertEquals("Unexpected matching regions", "[ZZZTy]pe1", printRegions(name, regions));
981
}
982
public void test0155() {
983
	String name = "Bug127628Type2/deprecation//";
984
	int[] regions = SearchPattern.getMatchingRegions("Bug127628Ty",  name, SearchPattern.R_CAMELCASE_MATCH);
985
	assertEquals("Unexpected regions length", 2, regions.length);
986
	assertEquals("Unexpected matching regions", "[Bug127628Ty]pe2/deprecation//", printRegions(name, regions));
987
}
988
public void test0156() {
989
	String name = "TestEvaluationContextCompletion3";
990
	int[] regions = SearchPattern.getMatchingRegions("TestEvaluationContextCompletion3",  name, SearchPattern.R_CAMELCASE_MATCH);
991
	assertEquals("Unexpected regions length", 2, regions.length);
992
	assertEquals("Unexpected matching regions", "[TestEvaluationContextCompletion3]", printRegions(name, regions));
993
}
994
public void test0157() {
995
	String name = "AllConstructors01b";
996
	int[] regions = SearchPattern.getMatchingRegions("AllConstructors",  name, SearchPattern.R_CAMELCASE_MATCH);
997
	assertEquals("Unexpected regions length", 2, regions.length);
998
	assertEquals("Unexpected matching regions", "[AllConstructors]01b", printRegions(name, regions));
999
}
1000
public void test0158() {
1001
	String name = "XX2/b//";
1002
	int[] regions = SearchPattern.getMatchingRegions("XX",  name, SearchPattern.R_CAMELCASE_MATCH);
1003
	assertEquals("Unexpected regions length", 2, regions.length);
1004
	assertEquals("Unexpected matching regions", "[XX]2/b//", printRegions(name, regions));
1005
}
1006
public void test0159() {
1007
	String name = "XZXSuper/test0004///S";
1008
	int[] regions = SearchPattern.getMatchingRegions("XZ",  name, SearchPattern.R_CAMELCASE_MATCH);
1009
	assertEquals("Unexpected regions length", 2, regions.length);
1010
	assertEquals("Unexpected matching regions", "[XZ]XSuper/test0004///S", printRegions(name, regions));
1011
}
1012
public void test0160() {
1013
	String name = "XYX";
1014
	int[] regions = SearchPattern.getMatchingRegions("XY",  name, SearchPattern.R_CAMELCASE_MATCH);
1015
	assertEquals("Unexpected regions length", 2, regions.length);
1016
	assertEquals("Unexpected matching regions", "[XY]X", printRegions(name, regions));
1017
}
1018
public void test0161() {
1019
	String name = "Z0022ZZ";
1020
	int[] regions = SearchPattern.getMatchingRegions("Z0022Z",  name, SearchPattern.R_CAMELCASE_MATCH);
1021
	assertEquals("Unexpected regions length", 2, regions.length);
1022
	assertEquals("Unexpected matching regions", "[Z0022Z]Z", printRegions(name, regions));
1023
}
1024
public void test0162() {
1025
	String name = "QQAnnotation";
1026
	int[] regions = SearchPattern.getMatchingRegions("QQAnnot",  name, SearchPattern.R_CAMELCASE_MATCH);
1027
	assertEquals("Unexpected regions length", 2, regions.length);
1028
	assertEquals("Unexpected matching regions", "[QQAnnot]ation", printRegions(name, regions));
1029
}
1030
public void test0163() {
1031
	String name = "ZZClass";
1032
	int[] regions = SearchPattern.getMatchingRegions("ZZ",  name, SearchPattern.R_CAMELCASE_MATCH);
1033
	assertEquals("Unexpected regions length", 2, regions.length);
1034
	assertEquals("Unexpected matching regions", "[ZZ]Class", printRegions(name, regions));
1035
}
1036
public void test0164() {
1037
	String name = "AType";
1038
	int[] regions = SearchPattern.getMatchingRegions("ATy",  name, SearchPattern.R_CAMELCASE_MATCH);
1039
	assertEquals("Unexpected regions length", 2, regions.length);
1040
	assertEquals("Unexpected matching regions", "[ATy]pe", printRegions(name, regions));
1041
}
1042
public void test0165() {
1043
	String name = "VAR";
1044
	int[] regions = SearchPattern.getMatchingRegions("va",  name, SearchPattern.R_PREFIX_MATCH);
1045
	assertEquals("Unexpected regions length", 2, regions.length);
1046
	assertEquals("Unexpected matching regions", "[VA]R", printRegions(name, regions));
1047
}
1048
public void test0166() {
1049
	String name = "Test0233Z";
1050
	int[] regions = SearchPattern.getMatchingRegions("Test0233Z",  name, SearchPattern.R_CAMELCASE_MATCH);
1051
	assertEquals("Unexpected regions length", 2, regions.length);
1052
	assertEquals("Unexpected matching regions", "[Test0233Z]", printRegions(name, regions));
1053
}
1054
public void test0167() {
1055
	String name = "ProviderImpl";
1056
	int[] regions = SearchPattern.getMatchingRegions("ProviderImp",  name, SearchPattern.R_CAMELCASE_MATCH);
1057
	assertEquals("Unexpected regions length", 2, regions.length);
1058
	assertEquals("Unexpected matching regions", "[ProviderImp]l", printRegions(name, regions));
1059
}
1060
public void test0168() {
1061
	String name = "Annotation";
1062
	int[] regions = SearchPattern.getMatchingRegions("ann",  name, SearchPattern.R_PREFIX_MATCH);
1063
	assertEquals("Unexpected regions length", 2, regions.length);
1064
	assertEquals("Unexpected matching regions", "[Ann]otation", printRegions(name, regions));
1065
}
1066
public void test0169() {
1067
	String name = "MyEnum";
1068
	int[] regions = SearchPattern.getMatchingRegions("MyEnum",  name, SearchPattern.R_CAMELCASE_MATCH);
1069
	assertEquals("Unexpected regions length", 2, regions.length);
1070
	assertEquals("Unexpected matching regions", "[MyEnum]", printRegions(name, regions));
1071
}
1072
public void test0170() {
1073
	String name = "ZZZNeedsImportEnum";
1074
	int[] regions = SearchPattern.getMatchingRegions("ZZZN",  name, SearchPattern.R_CAMELCASE_MATCH);
1075
	assertEquals("Unexpected regions length", 2, regions.length);
1076
	assertEquals("Unexpected matching regions", "[ZZZN]eedsImportEnum", printRegions(name, regions));
1077
}
1078
public void test0171() {
1079
	String name = "B2";
1080
	int[] regions = SearchPattern.getMatchingRegions("b",  name, SearchPattern.R_PREFIX_MATCH);
1081
	assertEquals("Unexpected regions length", 2, regions.length);
1082
	assertEquals("Unexpected matching regions", "[B]2", printRegions(name, regions));
1083
}
1084
public void test0172() {
1085
	String name = "ZTest3";
1086
	int[] regions = SearchPattern.getMatchingRegions("ZTes",  name, SearchPattern.R_CAMELCASE_MATCH);
1087
	assertEquals("Unexpected regions length", 2, regions.length);
1088
	assertEquals("Unexpected matching regions", "[ZTes]t3", printRegions(name, regions));
1089
}
1090
public void test0173() {
1091
	String name = "MyEnum";
1092
	int[] regions = SearchPattern.getMatchingRegions("MyEnu",  name, SearchPattern.R_CAMELCASE_MATCH);
1093
	assertEquals("Unexpected regions length", 2, regions.length);
1094
	assertEquals("Unexpected matching regions", "[MyEnu]m", printRegions(name, regions));
1095
}
1096
public void test0174() {
1097
	String name = "Enum";
1098
	int[] regions = SearchPattern.getMatchingRegions("enu",  name, SearchPattern.R_PREFIX_MATCH);
1099
	assertEquals("Unexpected regions length", 2, regions.length);
1100
	assertEquals("Unexpected matching regions", "[Enu]m", printRegions(name, regions));
1101
}
1102
public void test0175() {
1103
	String name = "BasicTestReferences/org.eclipse.jdt.core.tests//";
1104
	int[] regions = SearchPattern.getMatchingRegions("BasicTest",  name, SearchPattern.R_CAMELCASE_MATCH);
1105
	assertEquals("Unexpected regions length", 2, regions.length);
1106
	assertEquals("Unexpected matching regions", "[BasicTest]References/org.eclipse.jdt.core.tests//", printRegions(name, regions));
1107
}
1108
public void test0176() {
1109
	String name = "BasicTestTypesMember";
1110
	int[] regions = SearchPattern.getMatchingRegions("BasicTestTypesM",  name, SearchPattern.R_CAMELCASE_MATCH);
1111
	assertEquals("Unexpected regions length", 2, regions.length);
1112
	assertEquals("Unexpected matching regions", "[BasicTestTypesM]ember", printRegions(name, regions));
1113
}
1114
public void test0177() {
1115
	String name = "BasicTestTypesSecondary";
1116
	int[] regions = SearchPattern.getMatchingRegions("BasicTestTypesS",  name, SearchPattern.R_CAMELCASE_MATCH);
1117
	assertEquals("Unexpected regions length", 2, regions.length);
1118
	assertEquals("Unexpected matching regions", "[BasicTestTypesS]econdary", printRegions(name, regions));
1119
}
1120
public void test0178() {
1121
	String name = "BasicTestTypes";
1122
	int[] regions = SearchPattern.getMatchingRegions("BTT",  name, SearchPattern.R_CAMELCASE_MATCH);
1123
	assertEquals("Unexpected regions length", 6, regions.length);
1124
	assertEquals("Unexpected matching regions", "[B]asic[T]est[T]ypes", printRegions(name, regions));
1125
}
1126
public void test0179() {
1127
	String name = "ZBasicTestTypes";
1128
	int[] regions = SearchPattern.getMatchingRegions("ZBasi",  name, SearchPattern.R_CAMELCASE_MATCH);
1129
	assertEquals("Unexpected regions length", 2, regions.length);
1130
	assertEquals("Unexpected matching regions", "[ZBasi]cTestTypes", printRegions(name, regions));
1131
}
1132
public void test0180() {
1133
	String name = "OtherFields";
1134
	int[] regions = SearchPattern.getMatchingRegions("oth",  name, SearchPattern.R_PREFIX_MATCH);
1135
	assertEquals("Unexpected regions length", 2, regions.length);
1136
	assertEquals("Unexpected matching regions", "[Oth]erFields", printRegions(name, regions));
1137
}
1138
public void test0181() {
1139
	String name = "BasicTestMethodsException1";
1140
	int[] regions = SearchPattern.getMatchingRegions("BasicTestMethodsE",  name, SearchPattern.R_CAMELCASE_MATCH);
1141
	assertEquals("Unexpected regions length", 2, regions.length);
1142
	assertEquals("Unexpected matching regions", "[BasicTestMethodsE]xception1", printRegions(name, regions));
1143
}
1144
public void test0182() {
1145
	String name = "BasicTestMethods";
1146
	int[] regions = SearchPattern.getMatchingRegions("ba",  name, SearchPattern.R_PREFIX_MATCH);
1147
	assertEquals("Unexpected regions length", 2, regions.length);
1148
	assertEquals("Unexpected matching regions", "[Ba]sicTestMethods", printRegions(name, regions));
1149
}
1150
public void test0183() {
1151
	String name = "InterruptedException";
1152
	int[] regions = SearchPattern.getMatchingRegions("in",  name, SearchPattern.R_PREFIX_MATCH);
1153
	assertEquals("Unexpected regions length", 2, regions.length);
1154
	assertEquals("Unexpected matching regions", "[In]terruptedException", printRegions(name, regions));
1155
}
1156
public void test0184() {
1157
	String name = "InterruptedException";
1158
	int[] regions = SearchPattern.getMatchingRegions("int",  name, SearchPattern.R_PREFIX_MATCH);
1159
	assertEquals("Unexpected regions length", 2, regions.length);
1160
	assertEquals("Unexpected matching regions", "[Int]erruptedException", printRegions(name, regions));
1161
}
1162
public void test0185() {
1163
	String name = "BasicTestMethods";
1164
	int[] regions = SearchPattern.getMatchingRegions("BTM",  name, SearchPattern.R_CAMELCASE_MATCH);
1165
	assertEquals("Unexpected regions length", 6, regions.length);
1166
	assertEquals("Unexpected matching regions", "[B]asic[T]est[M]ethods", printRegions(name, regions));
1167
}
1168
public void test0186() {
1169
	String name = "BasicTestReferences/org.eclipse.jdt.core.tests//";
1170
	int[] regions = SearchPattern.getMatchingRegions("BasicTestRef",  name, SearchPattern.R_CAMELCASE_MATCH);
1171
	assertEquals("Unexpected regions length", 2, regions.length);
1172
	assertEquals("Unexpected matching regions", "[BasicTestRef]erences/org.eclipse.jdt.core.tests//", printRegions(name, regions));
1173
}
1174
public void test0187() {
1175
	String name = "BasicTestTextIns";
1176
	int[] regions = SearchPattern.getMatchingRegions("BasicTestTextIns",  name, SearchPattern.R_CAMELCASE_MATCH);
1177
	assertEquals("Unexpected regions length", 2, regions.length);
1178
	assertEquals("Unexpected matching regions", "[BasicTestTextIns]", printRegions(name, regions));
1179
}
1180
public void test0188() {
1181
	String name = "short";
1182
	int[] regions = SearchPattern.getMatchingRegions("S",  name, SearchPattern.R_PREFIX_MATCH);
1183
	assertEquals("Unexpected regions length", 2, regions.length);
1184
	assertEquals("Unexpected matching regions", "[s]hort", printRegions(name, regions));
1185
}
1186
public void test0189() {
1187
	String name = "Victory";
1188
	int[] regions = SearchPattern.getMatchingRegions("v",  name, SearchPattern.R_PREFIX_MATCH);
1189
	assertEquals("Unexpected regions length", 2, regions.length);
1190
	assertEquals("Unexpected matching regions", "[V]ictory", printRegions(name, regions));
1191
}
1192
public void test0190() {
1193
	String name = "A.java";
1194
	int[] regions = SearchPattern.getMatchingRegions("*.java",  name, SearchPattern.R_PATTERN_MATCH);
1195
	assertEquals("Unexpected regions length", 2, regions.length);
1196
	assertEquals("Unexpected matching regions", "A[.java]", printRegions(name, regions));
1197
}
1198
public void test0191() {
1199
	String name = "ArrayAllocationExpression/com.ibm.compiler.java.ast//";
1200
	int[] regions = SearchPattern.getMatchingRegions("*rr*/com.ibm.compiler.java.ast/*",  name, SearchPattern.R_PATTERN_MATCH);
1201
	assertEquals("Unexpected regions length", 4, regions.length);
1202
	assertEquals("Unexpected matching regions", "A[rr]ayAllocationExpression[/com.ibm.compiler.java.ast/]/", printRegions(name, regions));
1203
}
1204
public void test0192() {
1205
	String name = "SuperReference";
1206
	int[] regions = SearchPattern.getMatchingRegions("*rr*",  name, SearchPattern.R_PATTERN_MATCH);
1207
	assertEquals("Unexpected regions length", 2, regions.length);
1208
	assertEquals("Unexpected matching regions", "Supe[rR]eference", printRegions(name, regions));
1209
}
1210
public void test0193() {
1211
	String name = "ConditionalExpression/com.ibm.compiler.java.ast//";
1212
	int[] regions = SearchPattern.getMatchingRegions("*expression*",  name, SearchPattern.R_PATTERN_MATCH);
1213
	assertEquals("Unexpected regions length", 2, regions.length);
1214
	assertEquals("Unexpected matching regions", "Conditional[Expression]/com.ibm.compiler.java.ast//", printRegions(name, regions));
1215
}
1216
public void test0194() {
1217
	String name = "boolean";
1218
	int[] regions = SearchPattern.getMatchingRegions("Boo",  name, SearchPattern.R_PREFIX_MATCH);
1219
	assertEquals("Unexpected regions length", 2, regions.length);
1220
	assertEquals("Unexpected matching regions", "[boo]lean", printRegions(name, regions));
1221
}
1222
1223
// Test generated while running JDT/Text tests
1224
public void test0201() {
1225
	String name = "methodCallWithParams";
1226
	int[] regions = SearchPattern.getMatchingRegions("mCW",  name, SearchPattern.R_CAMELCASE_MATCH);
1227
	assertEquals("Unexpected regions length", 6, regions.length);
1228
	assertEquals("Unexpected matching regions", "[m]ethod[C]all[W]ithParams", printRegions(name, regions));
1229
}
1230
public void test0202() {
1231
	String name = "methodCallWithParams";
1232
	int[] regions = SearchPattern.getMatchingRegions("mCWith",  name, SearchPattern.R_CAMELCASE_MATCH);
1233
	assertEquals("Unexpected regions length", 6, regions.length);
1234
	assertEquals("Unexpected matching regions", "[m]ethod[C]all[With]Params", printRegions(name, regions));
1235
}
1236
public void test0203() {
1237
	String name = "multiCamelCaseField";
1238
	int[] regions = SearchPattern.getMatchingRegions("mCC",  name, SearchPattern.R_CAMELCASE_MATCH);
1239
	assertEquals("Unexpected regions length", 6, regions.length);
1240
	assertEquals("Unexpected matching regions", "[m]ulti[C]amel[C]aseField", printRegions(name, regions));
1241
}
1242
public void test0204() {
1243
	String name = "DuplicateFormatFlagsException/java.util//!";
1244
	int[] regions = SearchPattern.getMatchingRegions("DF",  name, SearchPattern.R_CAMELCASE_MATCH);
1245
	assertEquals("Unexpected regions length", 4, regions.length);
1246
	assertEquals("Unexpected matching regions", "[D]uplicate[F]ormatFlagsException/java.util//!", printRegions(name, regions));
1247
}
1248
public void test0205() {
1249
	String name = "DecimalFormatSymbols/java.text//1";
1250
	int[] regions = SearchPattern.getMatchingRegions("DF",  name, SearchPattern.R_CAMELCASE_MATCH);
1251
	assertEquals("Unexpected regions length", 4, regions.length);
1252
	assertEquals("Unexpected matching regions", "[D]ecimal[F]ormatSymbols/java.text//1", printRegions(name, regions));
1253
}
1254
public void test0206() {
1255
	String name = "DateFormat/java.text//?";
1256
	int[] regions = SearchPattern.getMatchingRegions("DF",  name, SearchPattern.R_CAMELCASE_MATCH);
1257
	assertEquals("Unexpected regions length", 4, regions.length);
1258
	assertEquals("Unexpected matching regions", "[D]ate[F]ormat/java.text//?", printRegions(name, regions));
1259
}
1260
public void test0207() {
1261
	String name = "hashCode";
1262
	int[] regions = SearchPattern.getMatchingRegions("hC",  name, SearchPattern.R_CAMELCASE_MATCH);
1263
	assertEquals("Unexpected regions length", 4, regions.length);
1264
	assertEquals("Unexpected matching regions", "[h]ash[C]ode", printRegions(name, regions));
1265
}
1266
public void test0208() {
1267
	String name = "StringBuffer/java.lang//1";
1268
	int[] regions = SearchPattern.getMatchingRegions("StringBuffer",  name, SearchPattern.R_CAMELCASE_MATCH);
1269
	assertEquals("Unexpected regions length", 2, regions.length);
1270
	assertEquals("Unexpected matching regions", "[StringBuffer]/java.lang//1", printRegions(name, regions));
1271
}
1272
public void test0209() {
1273
	String name = "StringBuilder/java.lang//1";
1274
	int[] regions = SearchPattern.getMatchingRegions("SB",  name, SearchPattern.R_CAMELCASE_MATCH);
1275
	assertEquals("Unexpected regions length", 4, regions.length);
1276
	assertEquals("Unexpected matching regions", "[S]tring[B]uilder/java.lang//1", printRegions(name, regions));
1277
}
1278
public void test0210() {
1279
	String name = "ScatteringByteChannel/java.nio.channels//?";
1280
	int[] regions = SearchPattern.getMatchingRegions("SB",  name, SearchPattern.R_CAMELCASE_MATCH);
1281
	assertEquals("Unexpected regions length", 4, regions.length);
1282
	assertEquals("Unexpected matching regions", "[S]cattering[B]yteChannel/java.nio.channels//?", printRegions(name, regions));
1283
}
1284
public void test0211() {
1285
	String name = "ShortBuffer/java.nio//?";
1286
	int[] regions = SearchPattern.getMatchingRegions("SB",  name, SearchPattern.R_CAMELCASE_MATCH);
1287
	assertEquals("Unexpected regions length", 4, regions.length);
1288
	assertEquals("Unexpected matching regions", "[S]hort[B]uffer/java.nio//?", printRegions(name, regions));
1289
}
1290
public void test0212() {
1291
	String name = "IndexOutOfBoundsException/java.lang//!";
1292
	int[] regions = SearchPattern.getMatchingRegions("IO",  name, SearchPattern.R_CAMELCASE_MATCH);
1293
	assertEquals("Unexpected regions length", 4, regions.length);
1294
	assertEquals("Unexpected matching regions", "[I]ndex[O]utOfBoundsException/java.lang//!", printRegions(name, regions));
1295
}
1296
public void test0213() {
1297
	String name = "InvalidObjectException/java.io//!";
1298
	int[] regions = SearchPattern.getMatchingRegions("IO",  name, SearchPattern.R_CAMELCASE_MATCH);
1299
	assertEquals("Unexpected regions length", 4, regions.length);
1300
	assertEquals("Unexpected matching regions", "[I]nvalid[O]bjectException/java.io//!", printRegions(name, regions));
1301
}
1302
public void test0214() {
1303
	String name = "IOException/java.io//!";
1304
	int[] regions = SearchPattern.getMatchingRegions("IO",  name, SearchPattern.R_CAMELCASE_MATCH);
1305
	assertEquals("Unexpected regions length", 2, regions.length);
1306
	assertEquals("Unexpected matching regions", "[IO]Exception/java.io//!", printRegions(name, regions));
1307
}
1308
public void test0215() {
1309
	String name = "JarEntry/java.util.jar//!";
1310
	int[] regions = SearchPattern.getMatchingRegions("JaEn",  name, SearchPattern.R_CAMELCASE_MATCH);
1311
	assertEquals("Unexpected regions length", 4, regions.length);
1312
	assertEquals("Unexpected matching regions", "[Ja]r[En]try/java.util.jar//!", printRegions(name, regions));
1313
}
1314
public void test0216() {
1315
	String name = "JarEntry/java.util.jar//!";
1316
	int[] regions = SearchPattern.getMatchingRegions("JaE",  name, SearchPattern.R_CAMELCASE_MATCH);
1317
	assertEquals("Unexpected regions length", 4, regions.length);
1318
	assertEquals("Unexpected matching regions", "[Ja]r[E]ntry/java.util.jar//!", printRegions(name, regions));
1319
}
1320
public void test0217() {
1321
	String name = "InvalidObjectException/java.io//!";
1322
	int[] regions = SearchPattern.getMatchingRegions("IOExce",  name, SearchPattern.R_CAMELCASE_MATCH);
1323
	assertEquals("Unexpected regions length", 6, regions.length);
1324
	assertEquals("Unexpected matching regions", "[I]nvalid[O]bject[Exce]ption/java.io//!", printRegions(name, regions));
1325
}
1326
public void test0218() {
1327
	String name = "IOException/java.io//!";
1328
	int[] regions = SearchPattern.getMatchingRegions("IOExce",  name, SearchPattern.R_CAMELCASE_MATCH);
1329
	assertEquals("Unexpected regions length", 2, regions.length);
1330
	assertEquals("Unexpected matching regions", "[IOExce]ption/java.io//!", printRegions(name, regions));
1331
}
1332
public void test0219() {
1333
	String name = "InvalidObjectException";
1334
	int[] regions = SearchPattern.getMatchingRegions("IOException",  name, SearchPattern.R_CAMELCASE_MATCH);
1335
	assertEquals("Unexpected regions length", 6, regions.length);
1336
	assertEquals("Unexpected matching regions", "[I]nvalid[O]bject[Exception]", printRegions(name, regions));
1337
}
1338
public void test0220() {
1339
	String name = "SecureCacheResponse";
1340
	int[] regions = SearchPattern.getMatchingRegions("se",  name, SearchPattern.R_PREFIX_MATCH);
1341
	assertEquals("Unexpected regions length", 2, regions.length);
1342
	assertEquals("Unexpected matching regions", "[Se]cureCacheResponse", printRegions(name, regions));
1343
}
1344
1345
// Addtional 'manual' tests
1346
public void test0300() {
1347
	String name = "HmacCore";
1348
	int[] regions = SearchPattern.getMatchingRegions("HMac",  name, SearchPattern.R_PREFIX_MATCH);
1349
	assertEquals("Unexpected regions length", 2, regions.length);
1350
	assertEquals("Unexpected matching regions", "[Hmac]Core", printRegions(name, regions));
1351
}
1352
public void test0301() {
1353
	String name = "HmacMD5";
1354
	int[] regions = SearchPattern.getMatchingRegions("HMac",  name, SearchPattern.R_PREFIX_MATCH);
1355
	assertEquals("Unexpected regions length", 2, regions.length);
1356
	assertEquals("Unexpected matching regions", "[Hmac]MD5", printRegions(name, regions));
1357
}
1358
}

Return to bug 218605