blob: 9f6a0961ff7bbfa543a7b87d2d6f1bf7c8daa201 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation 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:
* 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());
}
}