Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Unified Diff: pkg/analysis_services/test/search/search_engine_test.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_services/test/search/search_engine_test.dart
diff --git a/pkg/analysis_services/test/search/search_engine_test.dart b/pkg/analysis_services/test/search/search_engine_test.dart
deleted file mode 100644
index 3b266f36c7dce59950fa4f24f23066bb503e6692..0000000000000000000000000000000000000000
--- a/pkg/analysis_services/test/search/search_engine_test.dart
+++ /dev/null
@@ -1,665 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test.services.src.search.search_engine;
-
-import 'dart:async';
-
-import 'package:analysis_services/index/index.dart';
-import 'package:analysis_services/index/local_memory_index.dart';
-import 'package:analysis_services/search/search_engine.dart';
-import 'package:analysis_services/src/search/search_engine.dart';
-import 'package:analysis_testing/abstract_single_unit.dart';
-import 'package:analysis_testing/mocks.dart';
-import 'package:analysis_testing/reflective_tests.dart';
-import 'package:analyzer/src/generated/element.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:typed_mock/typed_mock.dart';
-import 'package:unittest/unittest.dart';
-
-
-main() {
- groupSep = ' | ';
- runReflectiveTests(SearchEngineImplTest);
-}
-
-class ExpectedMatch {
- final Element element;
- final MatchKind kind;
- SourceRange range;
- final bool isResolved;
- final bool isQualified;
-
- ExpectedMatch(this.element, this.kind, int offset, int length,
- {this.isResolved: true, this.isQualified: false}) {
- this.range = new SourceRange(offset, length);
- }
-
- bool operator ==(SearchMatch match) {
- return match.element == this.element &&
- match.kind == this.kind &&
- match.isResolved == this.isResolved &&
- match.isQualified == this.isQualified &&
- match.sourceRange == this.range;
- }
-
- @override
- String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.write("ExpectedMatch(kind=");
- buffer.write(kind);
- buffer.write(", element=");
- buffer.write(element != null ? element.displayName : 'null');
- buffer.write(", range=");
- buffer.write(range);
- buffer.write(", isResolved=");
- buffer.write(isResolved);
- buffer.write(", isQualified=");
- buffer.write(isQualified);
- buffer.write(")");
- return buffer.toString();
- }
-}
-
-
-class MockAngularComponentElement extends TypedMock implements
- AngularComponentElement {
- final kind = ElementKind.ANGULAR_COMPONENT;
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-
-class MockAngularControllerElement extends TypedMock implements
- AngularControllerElement {
- final kind = ElementKind.ANGULAR_CONTROLLER;
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-
-class MockAngularFormatterElement extends TypedMock implements
- AngularFormatterElement {
- final kind = ElementKind.ANGULAR_FORMATTER;
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-
-class MockIndex extends TypedMock implements Index {
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-
-@ReflectiveTestCase()
-class SearchEngineImplTest extends AbstractSingleUnitTest {
- Index index;
- SearchEngineImpl searchEngine;
-
- void setUp() {
- super.setUp();
- index = createLocalMemoryIndex();
- searchEngine = new SearchEngineImpl(index);
- }
-
- Future test_searchElementDeclarations() {
- _indexTestUnit('''
-class A {
- test() {}
-}
-class B {
- int test = 1;
- main() {
- int test = 2;
- }
-}
-''');
- ClassElement elementA = findElement('A');
- ClassElement elementB = findElement('B');
- Element element_test = findElement('test', ElementKind.LOCAL_VARIABLE);
- var expected = [
- _expectId(elementA.methods[0], MatchKind.DECLARATION, 'test() {}'),
- _expectId(elementB.fields[0], MatchKind.DECLARATION, 'test = 1;'),
- _expectId(element_test, MatchKind.DECLARATION, 'test = 2;'),];
- return searchEngine.searchElementDeclarations('test').then((matches) {
- _assertMatches(matches, expected);
- });
- }
-
- Future test_searchMemberDeclarations() {
- _indexTestUnit('''
-class A {
- test() {}
-}
-class B {
- int test = 1;
- main() {
- int test = 2;
- }
-}
-''');
- ClassElement elementA = findElement('A');
- ClassElement elementB = findElement('B');
- var expected = [
- _expectId(elementA.methods[0], MatchKind.DECLARATION, 'test() {}'),
- _expectId(elementB.fields[0], MatchKind.DECLARATION, 'test = 1;')];
- return searchEngine.searchMemberDeclarations('test').then((matches) {
- _assertMatches(matches, expected);
- });
- }
-
- Future test_searchMemberReferences() {
- _indexTestUnit('''
-class A {
- var test; // A
- mainA() {
- test(); // a-inv-r-nq
- test = 1; // a-write-r-nq
- test += 2; // a-read-write-r-nq
- print(test); // a-read-r-nq
- }
-}
-main(A a, p) {
- a.test(); // a-inv-r-q
- a.test = 1; // a-write-r-q
- a.test += 2; // a-read-write-r-q
- print(a.test); // a-read-r-q
- p.test(); // p-inv-ur-q
- p.test = 1; // p-write-ur-q
- p.test += 2; // p-read-write-ur-q
- print(p.test); // p-read-ur-q
-}
-''');
- ClassElement elementA = findElement('A');
- ClassElement elementB = findElement('B');
- Element mainA = findElement('mainA');
- Element main = findElement('main');
- var expected = [
- _expectId(mainA, MatchKind.INVOCATION, 'test(); // a-inv-r-nq'),
- _expectId(mainA, MatchKind.WRITE, 'test = 1; // a-write-r-nq'),
- _expectId(mainA, MatchKind.READ_WRITE, 'test += 2; // a-read-write-r-nq'),
- _expectId(mainA, MatchKind.READ, 'test); // a-read-r-nq'),
- _expectIdQ(main, MatchKind.INVOCATION, 'test(); // a-inv-r-q'),
- _expectIdQ(main, MatchKind.WRITE, 'test = 1; // a-write-r-q'),
- _expectIdQ(main, MatchKind.READ_WRITE, 'test += 2; // a-read-write-r-q'),
- _expectIdQ(main, MatchKind.READ, 'test); // a-read-r-q'),
- _expectIdU(main, MatchKind.INVOCATION, 'test(); // p-inv-ur-q'),
- _expectIdU(main, MatchKind.WRITE, 'test = 1; // p-write-ur-q'),
- _expectIdU(main, MatchKind.READ_WRITE, 'test += 2; // p-read-write-ur-q'),
- _expectIdU(main, MatchKind.READ, 'test); // p-read-ur-q'),];
- return searchEngine.searchMemberReferences('test').then((matches) {
- _assertMatches(matches, expected);
- });
- }
-
- Future test_searchReferences_AngularComponentElement() {
- // use mocks
- index = new MockIndex();
- searchEngine = new SearchEngineImpl(index);
- Element elementA = new MockElement('A');
- Element elementB = new MockElement('B');
- // fill mocks
- AngularComponentElement element = new MockAngularComponentElement();
- void mockLocation(Element element, Relationship relationship,
- Location location) {
- index.getRelationships(element, relationship);
- when(null).thenReturn(new Future.value([location]));
- }
- mockLocation(
- element,
- IndexConstants.ANGULAR_REFERENCE,
- new Location(elementA, 1, 10));
- mockLocation(
- element,
- IndexConstants.ANGULAR_CLOSING_TAG_REFERENCE,
- new Location(elementB, 2, 20));
- var expected = [
- new ExpectedMatch(elementA, MatchKind.ANGULAR_REFERENCE, 1, 10),
- new ExpectedMatch(elementB, MatchKind.ANGULAR_CLOSING_TAG_REFERENCE, 2, 20)];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_ClassElement() {
- _indexTestUnit('''
-class A {}
-main(A p) {
- A v;
-}
-''');
- ClassElement element = findElement('A');
- Element pElement = findElement('p');
- Element vElement = findElement('v');
- var expected = [
- _expectId(pElement, MatchKind.REFERENCE, 'A p'),
- _expectId(vElement, MatchKind.REFERENCE, 'A v')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_CompilationUnitElement() {
- addSource('/my_part.dart', '''
-part of lib;
-''');
- _indexTestUnit('''
-library lib;
-part 'my_part.dart';
-''');
- CompilationUnitElement element = testLibraryElement.parts[0];
- var expected = [
- _expectId(
- testUnitElement,
- MatchKind.REFERENCE,
- "'my_part.dart'",
- length: "'my_part.dart'".length)];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_ConstructorElement() {
- _indexTestUnit('''
-class A {
- A.named() {}
-}
-main() {
- new A.named();
-}
-''');
- ConstructorElement element = findElement('named');
- ClassElement elementA = findElement('A');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(elementA, MatchKind.DECLARATION, '.named() {}', length: 6),
- _expectId(mainElement, MatchKind.REFERENCE, '.named();', length: 6)];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_Element_unknown() {
- return _verifyReferences(UniverseElement.INSTANCE, []);
- }
-
- Future test_searchReferences_FieldElement() {
- _indexTestUnit('''
-class A {
- var field;
- A({this.field});
- main() {
- new A(field: 1);
- // getter
- print(field); // ref-nq
- print(this.field); // ref-q
- field(); // inv-nq
- this.field(); // inv-q
- // setter
- field = 2; // ref-nq;
- this.field = 3; // ref-q;
- }
-}
-''');
- FieldElement element = findElement('field');
- Element main = findElement('main');
- Element fieldParameter = findElement('field', ElementKind.PARAMETER);
- var expected = [
- _expectId(fieldParameter, MatchKind.REFERENCE, 'field}'),
- _expectId(main, MatchKind.REFERENCE, 'field: 1'),
- _expectId(main, MatchKind.READ, 'field); // ref-nq'),
- _expectIdQ(main, MatchKind.READ, 'field); // ref-q'),
- _expectId(main, MatchKind.INVOCATION, 'field(); // inv-nq'),
- _expectIdQ(main, MatchKind.INVOCATION, 'field(); // inv-q'),
- _expectId(main, MatchKind.WRITE, 'field = 2; // ref-nq'),
- _expectIdQ(main, MatchKind.WRITE, 'field = 3; // ref-q'),];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_FunctionElement() {
- _indexTestUnit('''
-test() {}
-main() {
- test();
- print(test);
-}
-''');
- FunctionElement element = findElement('test');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(mainElement, MatchKind.INVOCATION, 'test();'),
- _expectId(mainElement, MatchKind.REFERENCE, 'test);')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_FunctionTypeAliasElement() {
- _indexTestUnit('''
-typedef Test();
-main() {
- Test a;
- Test b;
-}
-''');
- FunctionTypeAliasElement element = findElement('Test');
- Element aElement = findElement('a');
- Element bElement = findElement('b');
- var expected = [
- _expectId(aElement, MatchKind.REFERENCE, 'Test a;'),
- _expectId(bElement, MatchKind.REFERENCE, 'Test b;')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_ImportElement_noPrefix() {
- _indexTestUnit('''
-import 'dart:math';
-main() {
- print(E);
-}
-''');
- ImportElement element = testLibraryElement.imports[0];
- Element mainElement = findElement('main');
- var kind = MatchKind.REFERENCE;
- var expected = [_expectId(mainElement, kind, 'E);', length: 0)];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_ImportElement_withPrefix() {
- _indexTestUnit('''
-import 'dart:math' as math;
-main() {
- print(math.PI);
-}
-''');
- ImportElement element = testLibraryElement.imports[0];
- Element mainElement = findElement('main');
- var kind = MatchKind.REFERENCE;
- var expected = [
- _expectId(mainElement, kind, 'math.PI);', length: 'math.'.length)];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_LibraryElement() {
- var codeA = 'part of lib; // A';
- var codeB = 'part of lib; // B';
- var sourceA = addSource('/unitA.dart', codeA);
- var sourceB = addSource('/unitB.dart', codeB);
- _indexTestUnit('''
-library lib;
-part 'unitA.dart';
-part 'unitB.dart';
-''');
- LibraryElement element = testLibraryElement;
- CompilationUnitElement elementA = element.parts[0];
- CompilationUnitElement elementB = element.parts[1];
- index.indexUnit(context, elementA.node);
- index.indexUnit(context, elementB.node);
- Element mainElement = findElement('main');
- var expected = [
- new ExpectedMatch(
- elementA,
- MatchKind.REFERENCE,
- codeA.indexOf('lib; // A'),
- 'lib'.length),
- new ExpectedMatch(
- elementB,
- MatchKind.REFERENCE,
- codeB.indexOf('lib; // B'),
- 'lib'.length),];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_LocalVariableElement() {
- _indexTestUnit('''
-main() {
- var v;
- v = 1;
- v += 2;
- print(v);
- v();
-}
-''');
- LocalVariableElement element = findElement('v');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(mainElement, MatchKind.WRITE, 'v = 1;'),
- _expectId(mainElement, MatchKind.READ_WRITE, 'v += 2;'),
- _expectId(mainElement, MatchKind.READ, 'v);'),
- _expectId(mainElement, MatchKind.INVOCATION, 'v();')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_MethodElement() {
- _indexTestUnit('''
-class A {
- m() {}
- main() {
- m(); // 1
- this.m(); // 2
- print(m); // 3
- print(this.m); // 4
- }
-}
-''');
- MethodElement method = findElement('m');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(mainElement, MatchKind.INVOCATION, 'm(); // 1'),
- _expectIdQ(mainElement, MatchKind.INVOCATION, 'm(); // 2'),
- _expectId(mainElement, MatchKind.REFERENCE, 'm); // 3'),
- _expectIdQ(mainElement, MatchKind.REFERENCE, 'm); // 4')];
- return _verifyReferences(method, expected);
- }
-
- Future test_searchReferences_MethodMember() {
- _indexTestUnit('''
-class A<T> {
- T m() => null;
-}
-main(A<int> a) {
- a.m(); // ref
-}
-''');
- MethodMember method = findNodeElementAtString('m(); // ref');
- Element mainElement = findElement('main');
- var expected = [
- _expectIdQ(mainElement, MatchKind.INVOCATION, 'm(); // ref')];
- return _verifyReferences(method, expected);
- }
-
- Future test_searchReferences_ParameterElement() {
- _indexTestUnit('''
-foo({p}) {
- p = 1;
- p += 2;
- print(p);
- p();
-}
-main() {
- foo(p: 42);
-}
-''');
- ParameterElement element = findElement('p');
- Element fooElement = findElement('foo');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(fooElement, MatchKind.WRITE, 'p = 1;'),
- _expectId(fooElement, MatchKind.READ_WRITE, 'p += 2;'),
- _expectId(fooElement, MatchKind.READ, 'p);'),
- _expectId(fooElement, MatchKind.INVOCATION, 'p();'),
- _expectId(mainElement, MatchKind.REFERENCE, 'p: 42')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_PropertyAccessorElement_getter() {
- _indexTestUnit('''
-class A {
- get g => null;
- main() {
- g; // 1
- this.g; // 2
- }
-}
-''');
- PropertyAccessorElement element = findElement('g', ElementKind.GETTER);
- Element mainElement = findElement('main');
- var expected = [
- _expectId(mainElement, MatchKind.REFERENCE, 'g; // 1'),
- _expectIdQ(mainElement, MatchKind.REFERENCE, 'g; // 2')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_PropertyAccessorElement_setter() {
- _indexTestUnit('''
-class A {
- set s(x) {}
- main() {
- s = 1;
- this.s = 2;
- }
-}
-''');
- PropertyAccessorElement element = findElement('s=');
- Element mainElement = findElement('main');
- var expected = [
- _expectId(mainElement, MatchKind.REFERENCE, 's = 1'),
- _expectIdQ(mainElement, MatchKind.REFERENCE, 's = 2')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchReferences_TopLevelVariableElement() {
- addSource('/lib.dart', '''
-library lib;
-var V;
-''');
- _indexTestUnit('''
-import 'lib.dart' show V; // imp
-import 'lib.dart' as pref;
-main() {
- pref.V = 1; // q
- print(pref.V); // q
- pref.V(); // q
- V = 1; // nq
- print(V); // nq
- V(); // nq
-}
-''');
- ImportElement importElement = testLibraryElement.imports[0];
- CompilationUnitElement impUnit =
- importElement.importedLibrary.definingCompilationUnit;
- TopLevelVariableElement variable = impUnit.topLevelVariables[0];
- Element main = findElement('main');
- var expected = [
- _expectId(testUnitElement, MatchKind.REFERENCE, 'V; // imp'),
- _expectId(main, MatchKind.WRITE, 'V = 1; // q'),
- _expectId(main, MatchKind.READ, 'V); // q'),
- _expectId(main, MatchKind.INVOCATION, 'V(); // q'),
- _expectId(main, MatchKind.WRITE, 'V = 1; // nq'),
- _expectId(main, MatchKind.READ, 'V); // nq'),
- _expectId(main, MatchKind.INVOCATION, 'V(); // nq'),];
- return _verifyReferences(variable, expected);
- }
-
- Future test_searchReferences_TypeParameterElement() {
- _indexTestUnit('''
-class A<T> {
- main(T a, T b) {}
-}
-''');
- TypeParameterElement element = findElement('T');
- Element aElement = findElement('a');
- Element bElement = findElement('b');
- var expected = [
- _expectId(aElement, MatchKind.REFERENCE, 'T a'),
- _expectId(bElement, MatchKind.REFERENCE, 'T b')];
- return _verifyReferences(element, expected);
- }
-
- Future test_searchSubtypes() {
- _indexTestUnit('''
-class T {}
-class A extends T {} // A
-class B = Object with T; // B
-class C implements T {} // C
-''');
- ClassElement element = findElement('T');
- ClassElement elementA = findElement('A');
- ClassElement elementB = findElement('B');
- ClassElement elementC = findElement('C');
- var expected = [
- _expectId(elementA, MatchKind.REFERENCE, 'T {} // A'),
- _expectId(elementB, MatchKind.REFERENCE, 'T; // B'),
- _expectId(elementC, MatchKind.REFERENCE, 'T {} // C')];
- return searchEngine.searchSubtypes(element).then((matches) {
- _assertMatches(matches, expected);
- });
- }
-
- Future test_searchTopLevelDeclarations() {
- _indexTestUnit('''
-class A {} // A
-class B = Object with A;
-typedef C();
-D() {}
-var E = null;
-class NoMatchABCDE {}
-''');
- NameElement element = new NameElement('test');
- Element topA = findElement('A');
- Element topB = findElement('B');
- Element topC = findElement('C');
- Element topD = findElement('D');
- Element topE = findElement('E');
- Element topNoMatch = new MockElement('NoMatchABCDE');
- var expected = [
- _expectId(topA, MatchKind.DECLARATION, 'A {} // A'),
- _expectId(topB, MatchKind.DECLARATION, 'B ='),
- _expectId(topC, MatchKind.DECLARATION, 'C()'),
- _expectId(topD, MatchKind.DECLARATION, 'D() {}'),
- _expectId(topE, MatchKind.DECLARATION, 'E = null')];
- return _verifyTopLevelDeclarations('^[A-E]\$', expected);
- }
-
- ExpectedMatch _expectId(Element element, MatchKind kind, String search,
- {int length, bool isResolved: true, bool isQualified: false}) {
- int offset = findOffset(search);
- if (length == null) {
- length = getLeadingIdentifierLength(search);
- }
- return new ExpectedMatch(
- element,
- kind,
- offset,
- length,
- isResolved: isResolved,
- isQualified: isQualified);
- }
-
- ExpectedMatch _expectIdQ(Element element, MatchKind kind, String search) {
- return _expectId(element, kind, search, isQualified: true);
- }
-
- ExpectedMatch _expectIdU(Element element, MatchKind kind, String search) {
- return _expectId(
- element,
- kind,
- search,
- isQualified: true,
- isResolved: false);
- }
-
- void _indexTestUnit(String code) {
- resolveTestUnit(code);
- index.indexUnit(context, testUnit);
- }
-
- Future _verifyReferences(Element element,
- List<ExpectedMatch> expectedMatches) {
- return searchEngine.searchReferences(
- element).then((List<SearchMatch> matches) {
- _assertMatches(matches, expectedMatches);
- });
- }
-
- Future _verifyTopLevelDeclarations(String pattern,
- List<ExpectedMatch> expectedMatches) {
- return searchEngine.searchTopLevelDeclarations(
- pattern).then((List<SearchMatch> matches) {
- _assertMatches(matches, expectedMatches);
- });
- }
-
- static void _assertMatches(List<SearchMatch> matches,
- List<ExpectedMatch> expectedMatches) {
- expect(matches, unorderedEquals(expectedMatches));
- }
-}
« no previous file with comments | « pkg/analysis_services/test/search/hierarchy_test.dart ('k') | pkg/analysis_services/test/search/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698