1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 456099. Added a test for NameComposer.createByExample method.

This commit is contained in:
Sergey Prigogin 2015-01-05 19:09:44 -08:00
parent 75900af3ae
commit bcc3aad840
2 changed files with 64 additions and 41 deletions

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011 Google, Inc and others.
* Copyright (c) 2011, 2015 Google, Inc and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -10,12 +10,12 @@
*******************************************************************************/
package org.eclipse.cdt.ui.tests.refactoring.utils;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.internal.corext.codemanipulation.StubUtility;
import static org.eclipse.cdt.internal.corext.codemanipulation.StubUtility.trimFieldName;
import static org.eclipse.cdt.internal.ui.util.NameComposer.createByExample;
import junit.framework.TestCase;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.internal.ui.util.NameComposer;
public class NameComposerTest extends TestCase {
@ -25,6 +25,16 @@ public class NameComposerTest extends TestCase {
private static final int CAPITALIZATION_CAMEL_CASE = PreferenceConstants.NAME_STYLE_CAPITALIZATION_CAMEL_CASE;
private static final int CAPITALIZATION_LOWER_CAMEL_CASE = PreferenceConstants.NAME_STYLE_CAPITALIZATION_LOWER_CAMEL_CASE;
private NameComposer assertCreatedByExample(String seedName, String composedName,
int defaultCapitalization, String defaultDelimiter) {
NameComposer composer =
createByExample(seedName, composedName, defaultCapitalization, defaultDelimiter);
assertNotNull("Failed to create a name composer for \"" + seedName + "\", \"" + composedName + "\".",
composer);
assertEquals(composedName, composer.compose(seedName));
return composer;
}
public void testCompose() {
NameComposer composer = new NameComposer(CAPITALIZATION_ORIGINAL, "", "", ".h");
assertEquals("MyClass.h", composer.compose("MyClass"));
@ -46,44 +56,51 @@ public class NameComposerTest extends TestCase {
composer = new NameComposer(CAPITALIZATION_ORIGINAL, "_", "", "");
assertEquals("RGB_Value", composer.compose("RGBValue"));
}
public void testCreateByExample() {
NameComposer composer = assertCreatedByExample("MyName", "prefix_my-name_suffix", CAPITALIZATION_ORIGINAL, "");
assertEquals("prefix_einstein-podolsky-rosen_suffix", composer.compose("EinsteinPodolskyRosen"));
assertCreatedByExample("MyName", "PREFIX-MYNAME-SUFFIX", CAPITALIZATION_ORIGINAL, "_");
assertNull(createByExample("Class", "Classic", CAPITALIZATION_ORIGINAL, ""));
}
public void testTrimFieldName() {
assertEquals("f", StubUtility.trimFieldName("f_"));
assertEquals("F", StubUtility.trimFieldName("F_"));
assertEquals("oo", StubUtility.trimFieldName("F_oo"));
assertEquals("o", StubUtility.trimFieldName("f_o"));
assertEquals("f", trimFieldName("f_"));
assertEquals("F", trimFieldName("F_"));
assertEquals("oo", trimFieldName("F_oo"));
assertEquals("o", trimFieldName("f_o"));
assertEquals("M", StubUtility.trimFieldName("a_M_"));
assertEquals("bs", StubUtility.trimFieldName("a_bs_"));
assertEquals("foo_bar", StubUtility.trimFieldName("foo_bar"));
assertEquals("foo_bar", StubUtility.trimFieldName("foo_bar_"));
assertEquals("M", trimFieldName("a_M_"));
assertEquals("bs", trimFieldName("a_bs_"));
assertEquals("foo_bar", trimFieldName("foo_bar"));
assertEquals("foo_bar", trimFieldName("foo_bar_"));
assertEquals("foo_b", StubUtility.trimFieldName("foo_b_"));
assertEquals("foo_b", trimFieldName("foo_b_"));
assertEquals("foo", StubUtility.trimFieldName("foo"));
assertEquals("foo", StubUtility.trimFieldName("_foo"));
assertEquals("bar", StubUtility.trimFieldName("_f_bar"));
assertEquals("foo", trimFieldName("foo"));
assertEquals("foo", trimFieldName("_foo"));
assertEquals("bar", trimFieldName("_f_bar"));
assertEquals("f", StubUtility.trimFieldName("f__"));
assertEquals("f", StubUtility.trimFieldName("__f"));
assertEquals("O__b", StubUtility.trimFieldName("fO__b"));
assertEquals("Oo", StubUtility.trimFieldName("fOo"));
assertEquals("O", StubUtility.trimFieldName("fO"));
assertEquals("MyStatic", StubUtility.trimFieldName("sMyStatic"));
assertEquals("MyMember", StubUtility.trimFieldName("mMyMember"));
assertEquals("f", trimFieldName("f__"));
assertEquals("f", trimFieldName("__f"));
assertEquals("O__b", trimFieldName("fO__b"));
assertEquals("Oo", trimFieldName("fOo"));
assertEquals("O", trimFieldName("fO"));
assertEquals("MyStatic", trimFieldName("sMyStatic"));
assertEquals("MyMember", trimFieldName("mMyMember"));
assertEquals("8", StubUtility.trimFieldName("_8"));
assertEquals("8", trimFieldName("_8"));
assertEquals("8bar", StubUtility.trimFieldName("_8bar_"));
assertEquals("8bar_8", StubUtility.trimFieldName("_8bar_8"));
assertEquals("8bAr", StubUtility.trimFieldName("_8bAr"));
assertEquals("b8Ar", StubUtility.trimFieldName("_b8Ar"));
assertEquals("8bar", trimFieldName("_8bar_"));
assertEquals("8bar_8", trimFieldName("_8bar_8"));
assertEquals("8bAr", trimFieldName("_8bAr"));
assertEquals("b8Ar", trimFieldName("_b8Ar"));
assertEquals("Id", StubUtility.trimFieldName("Id"));
assertEquals("ID", StubUtility.trimFieldName("ID"));
assertEquals("IDS", StubUtility.trimFieldName("IDS"));
assertEquals("ID", StubUtility.trimFieldName("bID"));
assertEquals("Id", StubUtility.trimFieldName("MId"));
assertEquals("IdA", StubUtility.trimFieldName("IdA"));
assertEquals("Id", trimFieldName("Id"));
assertEquals("ID", trimFieldName("ID"));
assertEquals("IDS", trimFieldName("IDS"));
assertEquals("ID", trimFieldName("bID"));
assertEquals("Id", trimFieldName("MId"));
assertEquals("IdA", trimFieldName("IdA"));
}
}

View file

@ -11,6 +11,7 @@
package org.eclipse.cdt.internal.ui.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.ibm.icu.text.BreakIterator;
@ -173,14 +174,19 @@ public class NameComposer {
if (seedWords.isEmpty())
return null;
List<CharSequence> composedWords = splitIntoWords(composedName);
int numPrefixWords = indexOfSublistIgnoreCase(composedWords, seedWords);
if (numPrefixWords < 0)
return null;
String prefix = deducePrefix(composedName, numPrefixWords);
String delimiter = defaultWordDelimiter;
int numPrefixWords = indexOfSublistIgnoreCase(composedWords, seedWords);
if (numPrefixWords < 0) {
delimiter = ""; //$NON-NLS-1$
seedWords = Collections.<CharSequence>singletonList(seedName);
numPrefixWords = indexOfSublistIgnoreCase(composedWords, seedWords);
if (numPrefixWords < 0)
return null;
}
String prefix = deducePrefix(composedName, numPrefixWords);
if (seedWords.size() > 1) {
delimiter = ""; //$NON-NLS-1$
int start = prefix.length() + composedWords.get(0).length();
int start = prefix.length() + composedWords.get(numPrefixWords).length();
for (int i = start; i < composedName.length(); i++) {
if (Character.isLetterOrDigit(composedName.charAt(i))) {
delimiter = composedName.substring(start, i);