From 9af8c9f02e5f353560e25ab181005aeaeec86121 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 11 May 2004 20:21:55 +0000 Subject: [PATCH] Added SelectionParse failed test. --- .../failedTests/SelectionParseFailedTest.java | 38 ++++++++++ .../parser/tests/SelectionParseBaseTest.java | 69 +++++++++++++++++++ .../core/parser/tests/SelectionParseTest.java | 55 +-------------- .../core/suite/AutomatedIntegrationSuite.java | 2 + 4 files changed, 111 insertions(+), 53 deletions(-) create mode 100644 core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/SelectionParseFailedTest.java create mode 100644 core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseBaseTest.java diff --git a/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/SelectionParseFailedTest.java b/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/SelectionParseFailedTest.java new file mode 100644 index 00000000000..8a0f63b4d44 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/SelectionParseFailedTest.java @@ -0,0 +1,38 @@ +/********************************************************************** + * Copyright (c) 2002-2004 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation */ +package org.eclipse.cdt.core.parser.failedTests; + +import java.io.StringWriter; +import java.io.Writer; + +import org.eclipse.cdt.core.parser.ast.IASTNode; +import org.eclipse.cdt.core.parser.tests.SelectionParseBaseTest; + +/** + * @author johnc + * + */ +public class SelectionParseFailedTest extends SelectionParseBaseTest { + + public void testBug61800() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "class ABCDEF {\n"); //$NON-NLS-1$ + writer.write( " static int stInt; };\n"); //$NON-NLS-1$ + writer.write( "int ABCDEF::stInt = 5;\n"); //$NON-NLS-1$ + String code = writer.toString(); + int startIndex = code.indexOf( "::stInt") + 2; //$NON-NLS-1$ + IASTNode node = parse( code, startIndex, startIndex+ 5, false ); +// IASTNode node = parse( code, startIndex, startIndex+ 5 ); +// assertTrue( node instanceof IASTField ); +// assertEquals( ((IASTField)node).getName(), "stInt" ); //$NON-NLS-1$ + } + +} diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseBaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseBaseTest.java new file mode 100644 index 00000000000..283b742c19f --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseBaseTest.java @@ -0,0 +1,69 @@ +/********************************************************************** + * Copyright (c) 2002-2004 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation */ +package org.eclipse.cdt.core.parser.tests; + +import java.io.StringReader; + +import org.eclipse.cdt.core.parser.IParser; +import org.eclipse.cdt.core.parser.NullLogService; +import org.eclipse.cdt.core.parser.ParserFactory; +import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.ParserUtil; +import org.eclipse.cdt.core.parser.ScannerInfo; +import org.eclipse.cdt.core.parser.ast.IASTNode; + +/** + * @author johnc + * + */ +public class SelectionParseBaseTest extends CompleteParseBaseTest { + + protected IASTNode parse(String code, int offset1, int offset2) throws Exception { + return parse( code, offset1, offset2, true ); + } + + /** + * @param code + * @param offset1 + * @param offset2 + * @param b + * @return + */ + protected IASTNode parse(String code, int offset1, int offset2, boolean expectedToPass) throws Exception { + callback = new FullParseCallback(); + IParser parser = null; + + parser = + ParserFactory.createParser( + ParserFactory.createScanner( + new StringReader(code), + "completion-test", //$NON-NLS-1$ + new ScannerInfo(), + ParserMode.SELECTION_PARSE, + ParserLanguage.CPP, + callback, + new NullLogService(), null), + callback, + ParserMode.SELECTION_PARSE, + ParserLanguage.CPP, + ParserUtil.getParserLogService()); + + IParser.ISelectionParseResult result =parser.parse( offset1, offset2 ); + if( expectedToPass ) + { + assertNotNull( result ); + String filename = result.getFilename(); + assertTrue( !filename.equals( "")); //$NON-NLS-1$ + return (IASTNode) result.getOffsetableNamedElement(); + } + return null; + } +} diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java index 3686c9a8f8b..8f1be8c8f04 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java @@ -10,18 +10,11 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.tests; -import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; -import org.eclipse.cdt.core.parser.IParser; -import org.eclipse.cdt.core.parser.NullLogService; -import org.eclipse.cdt.core.parser.ParserFactory; -import org.eclipse.cdt.core.parser.ParserLanguage; -import org.eclipse.cdt.core.parser.ParserMode; -import org.eclipse.cdt.core.parser.ParserUtil; -import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; +import org.eclipse.cdt.core.parser.ast.IASTField; import org.eclipse.cdt.core.parser.ast.IASTFunction; import org.eclipse.cdt.core.parser.ast.IASTMethod; import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition; @@ -32,14 +25,8 @@ import org.eclipse.cdt.core.parser.ast.IASTVariable; /** * @author jcamelon */ -public class SelectionParseTest extends CompleteParseBaseTest { +public class SelectionParseTest extends SelectionParseBaseTest { - protected IASTNode parse(String code, int offset1, int offset2 ) - throws Exception { - return parse( code, offset1, offset2, true ); - } - - public void testBaseCase_VariableReference() throws Exception { String code = "void f() { int x; x=3; }"; //$NON-NLS-1$ @@ -68,44 +55,6 @@ public class SelectionParseTest extends CompleteParseBaseTest { assertNull( parse( code, offset1, offset2, false )); } - /** - * @param code - * @param offset1 - * @param offset2 - * @param b - * @return - */ - protected IASTNode parse(String code, int offset1, int offset2, boolean expectedToPass ) throws Exception { - callback = new FullParseCallback(); - IParser parser = null; - - parser = - ParserFactory.createParser( - ParserFactory.createScanner( - new StringReader(code), - "completion-test", //$NON-NLS-1$ - new ScannerInfo(), - ParserMode.SELECTION_PARSE, - ParserLanguage.CPP, - callback, - new NullLogService(), null), - callback, - ParserMode.SELECTION_PARSE, - ParserLanguage.CPP, - ParserUtil.getParserLogService()); - - IParser.ISelectionParseResult result =parser.parse( offset1, offset2 ); - if( expectedToPass ) - { - assertNotNull( result ); - String filename = result.getFilename(); - assertTrue( !filename.equals( "")); //$NON-NLS-1$ - return (IASTNode) result.getOffsetableNamedElement(); - } - return null; - } - - public void testBaseCase_FunctionDeclaration() throws Exception { String code = "int x(); x( );"; //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java index c9f4b2c8012..1de644aa9b3 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.model.tests.WorkingCopyTests; import org.eclipse.cdt.core.parser.failedTests.ASTFailedTests; import org.eclipse.cdt.core.parser.failedTests.FailedCompleteParseASTTest; import org.eclipse.cdt.core.parser.failedTests.STLFailedTests; +import org.eclipse.cdt.core.parser.failedTests.SelectionParseFailedTest; import org.eclipse.cdt.core.parser.tests.ParserTestSuite; import org.eclipse.cdt.core.search.tests.SearchTestSuite; @@ -67,6 +68,7 @@ public class AutomatedIntegrationSuite extends TestSuite { suite.addTestSuite(ASTFailedTests.class); suite.addTestSuite(STLFailedTests.class); suite.addTestSuite(FailedCompleteParseASTTest.class); + suite.addTestSuite(SelectionParseFailedTest.class); return suite; }