### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java,v retrieving revision 1.32 diff -u -r1.32 BasicSearchEngine.java --- search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 29 Mar 2006 03:14:01 -0000 1.32 +++ search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 12 Apr 2006 14:40:31 -0000 @@ -237,6 +237,9 @@ * @param matchRule */ public static String getMatchRuleString(final int matchRule) { + if (matchRule == 0) { + return "R_EXACT_MATCH"; //$NON-NLS-1$ + } StringBuffer buffer = new StringBuffer(); for (int i=1; i<=8; i++) { int bit = matchRule & (1<<(i-1)); Index: search/org/eclipse/jdt/core/search/SearchPattern.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchPattern.java,v retrieving revision 1.57 diff -u -r1.57 SearchPattern.java --- search/org/eclipse/jdt/core/search/SearchPattern.java 11 Apr 2006 15:38:24 -0000 1.57 +++ search/org/eclipse/jdt/core/search/SearchPattern.java 12 Apr 2006 14:40:30 -0000 @@ -1853,21 +1853,20 @@ } // Verify Pattern match rule + int starIndex = stringPattern.indexOf('*'); + int questionIndex = stringPattern.indexOf('?'); + if (starIndex < 0 && questionIndex < 0) { + // reset pattern match bit if any + matchRule &= ~R_PATTERN_MATCH; + } else { + matchRule |= R_PATTERN_MATCH; + // Remove Camel Case match when there's '*' or '?' characters + matchRule &= ~R_CAMELCASE_MATCH; + } if ((matchRule & R_PATTERN_MATCH) != 0) { if ((matchRule & R_PREFIX_MATCH) != 0) { matchRule &= ~R_PREFIX_MATCH; } - int starIndex = stringPattern.indexOf('*'); - int questionIndex = stringPattern.indexOf('?'); - if (starIndex < 0 && questionIndex < 0) { - // No need to have pattern match - matchRule &= ~R_PATTERN_MATCH; - } else { - // Remove Camel Case match when there's '*' or '?' characters - if ((matchRule & R_CAMELCASE_MATCH) != 0) { - matchRule &= ~R_CAMELCASE_MATCH; - } - } } // Verify Camel Case match rule @@ -1875,10 +1874,15 @@ // Verify sting pattern validity int length = stringPattern.length(); boolean validCamelCase = true; + boolean uppercase = false; for (int i=0; i, type, exact match, case sensitive", searchPattern); } +/** + * Test CamelCase validation + */ +public void testSearchPatternValidMatchRule01() { + assertValidMatchRule("foo", SearchPattern.R_EXACT_MATCH, SearchPattern.R_EXACT_MATCH); + assertValidMatchRule("foo", SearchPattern.R_PREFIX_MATCH, SearchPattern.R_PREFIX_MATCH); + assertValidMatchRule("foo", SearchPattern.R_PATTERN_MATCH, SearchPattern.R_EXACT_MATCH); + assertValidMatchRule("foo", SearchPattern.R_PATTERN_MATCH|SearchPattern.R_PREFIX_MATCH, SearchPattern.R_PREFIX_MATCH); + assertValidMatchRule("foo", SearchPattern.R_CAMELCASE_MATCH, SearchPattern.R_PREFIX_MATCH|SearchPattern.R_CASE_SENSITIVE); +} +public void testSearchPatternValidMatchRule02() { + assertValidMatchRule("CP*P", SearchPattern.R_EXACT_MATCH, SearchPattern.R_PATTERN_MATCH); + assertValidMatchRule("CP*P", SearchPattern.R_PREFIX_MATCH, SearchPattern.R_PATTERN_MATCH); + assertValidMatchRule("CP*P", SearchPattern.R_PATTERN_MATCH, SearchPattern.R_PATTERN_MATCH); + assertValidMatchRule("CP*P", SearchPattern.R_PATTERN_MATCH|SearchPattern.R_PREFIX_MATCH, SearchPattern.R_PATTERN_MATCH); + assertValidMatchRule("CP*P", SearchPattern.R_CAMELCASE_MATCH, SearchPattern.R_PATTERN_MATCH); +} +public void testSearchPatternValidMatchRule03() { + assertValidMatchRule("NPE", SearchPattern.R_CAMELCASE_MATCH); +} +public void testSearchPatternValidMatchRule04() { + assertValidMatchRule("nPE", SearchPattern.R_CAMELCASE_MATCH); +} +public void testSearchPatternValidMatchRule05() { + assertValidMatchRule("NuPoEx", SearchPattern.R_CAMELCASE_MATCH); +} }