/*******************************************************************************
* Copyright (c) 2011 Jens Elmenthaler and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion)
*******************************************************************************/
package org.eclipse.cdt.ui.tests.text.contentassist2;
import junit.framework.Test;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
/**
* Test the correct response to the value of {@link ContentAssistPreference#SHOW_CAMEL_CASE_MATCHES}.
*/
public class ShowCamelCasePreferenceTest extends AbstractContentAssistTest {
private static final String SOURCE_FILE_NAME = "ContentAssistPreferenceTest.cpp";
private static final String CURSOR_LOCATION_TAG = "/*cursor*/";
protected int fCursorOffset;
private IProject fProject;
public ShowCamelCasePreferenceTest(String name) {
super(name, true);
}
public static Test suite() {
return BaseTestCase.suite(ShowCamelCasePreferenceTest.class, "_");
}
@Override
protected IFile setUpProjectContent(IProject project) throws Exception {
fProject= project;
StringBuilder sourceContent= getContentsForTest(1)[0];
fCursorOffset= sourceContent.indexOf(CURSOR_LOCATION_TAG);
assertTrue("No cursor location specified", fCursorOffset >= 0);
sourceContent.delete(fCursorOffset, fCursorOffset+CURSOR_LOCATION_TAG.length());
return createFile(project, SOURCE_FILE_NAME, sourceContent.toString());
}
@Override
protected void setUp() throws Exception {
InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).remove(
ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES);
super.setUp();
}
@Override
protected void tearDown() throws Exception {
InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).remove(
ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES);
super.tearDown();
}
protected void assertCompletionResults(int offset, String[] expected, int compareType) throws Exception {
assertContentAssistResults(offset, expected, true, compareType);
}
protected void assertCompletionResults(String[] expected) throws Exception {
assertCompletionResults(fCursorOffset, expected, AbstractContentAssistTest.COMPARE_REP_STRINGS);
}
private void setShowCamelCaseMatches(boolean enabled) {
InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).putBoolean(
ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES, enabled);
}
// int fbar;
// int fooBar;
// void something() {
// fB/*cursor*/
// }
public void testDefault() throws Exception {
final String[] expected= { "fbar", "fooBar" };
assertCompletionResults(expected);
}
// int fbar;
// int fooBar;
// void something() {
// fB/*cursor*/
// }
public void testCamelCaseOff() throws Exception {
setShowCamelCaseMatches(false);
final String[] expected= { "fbar" };
assertCompletionResults(expected);
}
// int fbar;
// int fooBar;
// void something() {
// fB/*cursor*/
// }
public void testCamelCaseOn() throws Exception {
setShowCamelCaseMatches(true);
final String[] expected= { "fbar", "fooBar" };
assertCompletionResults(expected);
}
}