blob: 4a627c56d86989175a8ab32ea03de8f61cbe4c66 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite;
public class LRCompletionHangingTest extends AbstractLRHangingTest {
public static TestSuite suite() {
return new TestSuite(LRCompletionHangingTest.class);
}
//test c
public void testCompletionDoWhileForC() throws Exception {
String code = "int main(int argc, char **argv) {" + "do{" + CONTENT_ASIST_CURSOR + "} while (i < 3);" + "}";
runTestCase(code, getCLanguage());
}
//test cpp
public void testCompletionDoWhileForCPP() throws Exception {
String code = "int main(int argc, char **argv) {" + "do{" + CONTENT_ASIST_CURSOR + "} while (i < 3);" + "}";
runTestCase(code, getCPPLanguage());
}
public void testCompletionTryCatch() throws Exception {
String code = "int main(int argc, char **argv) {" + "try {" + CONTENT_ASIST_CURSOR + "}" +
"catch(x){}" + "}";
runTestCase(code, getCPPLanguage());
}
public void testCompletionTemplateFunctionForCPP() throws Exception {
String code = "template " + CONTENT_ASIST_CURSOR + "<class myType>" + "myType GetA (myType a) {" + "return a;"
+ "}" +
"int main(int argc, char **argv) {" + "int x=0;" + "int y = GetA " + CONTENT_ASIST_CURSOR
+ " <int> (x);" + "}";
runTestCase(code, getCPPLanguage());
}
public void testCompletionIfForCPP() throws Exception {
String code = "int main(int argc, char **argv) {" + "int x=0;" + "if" + CONTENT_ASIST_CURSOR + "(x>0){}" + "}";
runTestCase(code, getCPPLanguage());
}
public void testCompletionTemplateClassForCPP() throws Exception {
String code = "template" + CONTENT_ASIST_CURSOR + " <class T> " + "class Test {" + "T val;"
+ "public:Test(T arg){" + "val = arg;" + "}" + "~" + CONTENT_ASIST_CURSOR + "Test();" + "};" + "Test::"
+ CONTENT_ASIST_CURSOR + "~" + CONTENT_ASIST_CURSOR + "Test(){}" + "int main(int argc, char **argv) {"
+ CONTENT_ASIST_CURSOR + "Test<" + CONTENT_ASIST_CURSOR + "int> t(1);" + "Test<" + CONTENT_ASIST_CURSOR
+ "double>" + CONTENT_ASIST_CURSOR + "* dt = new dt(1.0);" + "S* s = dynamic_cast<S*"
+ CONTENT_ASIST_CURSOR + ">(dt);" + "S* s = dynamic_cast" + CONTENT_ASIST_CURSOR + "<S*>(dt);" + "}";
runTestCase(code, getCPPLanguage());
}
public void testCompletionSimpleIfForCPP() throws Exception {
String code = "#" + CONTENT_ASIST_CURSOR + "include " + CONTENT_ASIST_CURSOR + "<iostream>" + "using "
+ CONTENT_ASIST_CURSOR + "namespace std;" + "if" + CONTENT_ASIST_CURSOR + "(i>0)){}" + "int "
+ CONTENT_ASIST_CURSOR + "*" + CONTENT_ASIST_CURSOR + " i " + CONTENT_ASIST_CURSOR + "="
+ CONTENT_ASIST_CURSOR + " &" + CONTENT_ASIST_CURSOR + "j;" + "*" + CONTENT_ASIST_CURSOR + "j=0;" + "*"
+ CONTENT_ASIST_CURSOR + "j++;" + "*i" + CONTENT_ASIST_CURSOR + "++ = " + CONTENT_ASIST_CURSOR
+ "*j++;";
runTestCase(code, getCPPLanguage());
}
public void testCompletionStructForCPP() throws Exception {
String code = "struct " + CONTENT_ASIST_CURSOR + "p " + CONTENT_ASIST_CURSOR + "{" + CONTENT_ASIST_CURSOR
+ "int w;" + "float p;" + "} " + CONTENT_ASIST_CURSOR + "a," + CONTENT_ASIST_CURSOR + "b,c;";
runTestCase(code, getCPPLanguage());
}
public void testCompletionGnuCPP() throws Exception {
String code = "if a>b ? " + CONTENT_ASIST_CURSOR + "g" + CONTENT_ASIST_CURSOR + ":l;" + "case 1..."
+ CONTENT_ASIST_CURSOR + "3 : ok; ";
runTestCase(code, getCPPLanguage());
}
}