| /******************************************************************************* |
| * 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()); |
| } |
| |
| } |