blob: 4c58cfb0f612ebb0b84c68ba429d4895147b499f [file] [log] [blame]
/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.engine.services.assist;
import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.context.AnalysisContext;
import com.google.dart.engine.element.ClassElement;
import com.google.dart.engine.element.CompilationUnitElement;
import com.google.dart.engine.search.SearchEngine;
import com.google.dart.engine.services.internal.correction.AbstractDartTest;
import com.google.dart.engine.source.Source;
import com.google.dart.engine.utilities.source.SourceRange;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class AssistContextTest extends AbstractDartTest {
private final SearchEngine searchEngine = mock(SearchEngine.class);
private final AnalysisContext analysisContext = mock(AnalysisContext.class);
public void test_access() throws Exception {
Source source = mock(Source.class);
CompilationUnit compilationUnit = mock(CompilationUnit.class);
CompilationUnitElement compilationUnitElement = mock(CompilationUnitElement.class);
when(compilationUnit.getElement()).thenReturn(compilationUnitElement);
when(compilationUnitElement.getSource()).thenReturn(source);
int selectionOffset = 10;
int selectionLength = 2;
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
source,
compilationUnit,
selectionOffset,
selectionLength);
assertSame(searchEngine, context.getSearchEngine());
assertSame(source, context.getSource());
assertSame(compilationUnit, context.getCompilationUnit());
assertEquals(10, context.getSelectionOffset());
assertEquals(2, context.getSelectionLength());
assertEquals(new SourceRange(10, 2), context.getSelectionRange());
}
public void test_access_noElement() throws Exception {
Source source = mock(Source.class);
CompilationUnit compilationUnit = mock(CompilationUnit.class);
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
source,
compilationUnit,
0,
0);
assertSame(source, context.getSource());
}
public void test_getCoveredElement() throws Exception {
parseTestUnit(
"// filler filler filler filler filler filler filler filler filler filler",
"main() {",
" String text = '';",
"}",
"");
//
int selectionOffset = testCode.indexOf("tring ");
int selectionLength = testCode.indexOf("ng ") - selectionOffset;
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
testSource,
testUnit,
selectionOffset,
selectionLength);
ClassElement coveredElement = (ClassElement) context.getCoveredElement();
assertNotNull(coveredElement);
assertEquals("String", coveredElement.getDisplayName());
}
public void test_getCoveredElement_null() throws Exception {
Source source = mock(Source.class);
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
source,
null,
0,
0);
assertNull(context.getCoveredElement());
}
public void test_getNode() throws Exception {
parseTestUnit(
"// filler filler filler filler filler filler filler filler filler filler",
"main() {",
" String text = '';",
"}",
"");
// covering == covered
{
int selectionOffset = testCode.indexOf("tring ");
int selectionEnd = testCode.indexOf("ng ");
int selectionLength = selectionEnd - selectionOffset;
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
testSource,
testUnit,
selectionOffset,
selectionLength);
assertSame(testUnit, context.getCompilationUnit());
assertEquals("String", context.getCoveredNode().toSource());
assertEquals("String", context.getCoveringNode().toSource());
assertEquals(selectionOffset, context.getSelectionOffset());
assertEquals(selectionLength, context.getSelectionLength());
}
// covering > covered
{
int selectionOffset = testCode.indexOf("tring ");
int selectionEnd = testCode.indexOf(" = ''");
int selectionLength = selectionEnd - selectionOffset;
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
testSource,
testUnit,
selectionOffset,
selectionLength);
assertSame(testUnit, context.getCompilationUnit());
assertEquals("String", context.getCoveredNode().toSource());
assertEquals("String text = ''", context.getCoveringNode().toSource());
assertEquals(selectionOffset, context.getSelectionOffset());
assertEquals(selectionLength, context.getSelectionLength());
}
}
public void test_new_SourceRange() throws Exception {
Source source = mock(Source.class);
CompilationUnit compilationUnit = mock(CompilationUnit.class);
AssistContext context = new AssistContext(
searchEngine,
analysisContext,
null,
source,
compilationUnit,
new SourceRange(10, 2));
assertSame(compilationUnit, context.getCompilationUnit());
assertEquals(10, context.getSelectionOffset());
assertEquals(2, context.getSelectionLength());
assertEquals(new SourceRange(10, 2), context.getSelectionRange());
}
}