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

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

Issue 382993002: SearchEngine service. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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
index db896c97d118161b780859d9791ca5af594f4de7..f6d02de9bed39785102a35c0b386ca5ed72c477c 100644
--- a/pkg/analysis_services/test/search/search_engine_test.dart
+++ b/pkg/analysis_services/test/search/search_engine_test.dart
@@ -5,2144 +5,659 @@
// This code was auto-generated, is not intended to be edited, and is subject to
// significant change. Please see the README file for more information.
-library engine.search_engine_test;
+library services.src.search.search_engine_test;
+
+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/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';
+
+import '../index/abstract_single_unit.dart';
main() {
+ groupSep = ' | ';
+ group('SearchEngineImplTest', () {
+ runReflectiveTests(SearchEngineImplTest);
+ });
}
+class ExpectedMatch {
+ final Element element;
+ final MatchKind kind;
+ SourceRange range;
+ final bool isResolved;
+ final bool isQualified;
-//class AndSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// SearchPattern _patternA = mock(SearchPattern);
-//
-// SearchPattern _patternB = mock(SearchPattern);
-//
-// AndSearchPattern _pattern = new AndSearchPattern([_patternA, _patternB]);
-//
-// void test_allExact() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.EXACT);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.EXACT);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, _pattern.matches(_element));
-// }
-//
-// void test_ExactName() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.EXACT);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.NAME);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, _pattern.matches(_element));
-// }
-//
-// void test_NameExact() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.NAME);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.EXACT);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, _pattern.matches(_element));
-// }
-//
-// void test_oneNull() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.EXACT);
-// when(_patternB.matches(_element)).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, _pattern.matches(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('AndSearchPatternTest', () {
-// _ut.test('test_ExactName', () {
-// final __test = new AndSearchPatternTest();
-// runJUnitTest(__test, __test.test_ExactName);
-// });
-// _ut.test('test_NameExact', () {
-// final __test = new AndSearchPatternTest();
-// runJUnitTest(__test, __test.test_NameExact);
-// });
-// _ut.test('test_allExact', () {
-// final __test = new AndSearchPatternTest();
-// runJUnitTest(__test, __test.test_allExact);
-// });
-// _ut.test('test_oneNull', () {
-// final __test = new AndSearchPatternTest();
-// runJUnitTest(__test, __test.test_oneNull);
-// });
-// });
-// }
-//}
-//
-//class CamelCaseSearchPatternTest extends EngineTestCase {
-// void test_matchExact_samePartCount() {
-// Element element = mock(Element);
-// when(element.displayName).thenReturn("HashMap");
-// //
-// CamelCaseSearchPattern pattern = new CamelCaseSearchPattern("HM", true);
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(element));
-// }
-//
-// void test_matchExact_withLowerCase() {
-// Element element = mock(Element);
-// when(element.displayName).thenReturn("HashMap");
-// //
-// CamelCaseSearchPattern pattern = new CamelCaseSearchPattern("HaMa", true);
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(element));
-// }
-//
-// void test_matchNot_nullName() {
-// Element element = mock(Element);
-// when(element.displayName).thenReturn(null);
-// //
-// CamelCaseSearchPattern pattern = new CamelCaseSearchPattern("HM", true);
-// JUnitTestCase.assertSame(null, pattern.matches(element));
-// }
-//
-// void test_matchNot_samePartCount() {
-// Element element = mock(Element);
-// when(element.displayName).thenReturn("LinkedHashMap");
-// //
-// CamelCaseSearchPattern pattern = new CamelCaseSearchPattern("LH", true);
-// JUnitTestCase.assertSame(null, pattern.matches(element));
-// }
-//
-// void test_matchNot_withLowerCase() {
-// Element element = mock(Element);
-// when(element.displayName).thenReturn("HashMap");
-// //
-// CamelCaseSearchPattern pattern = new CamelCaseSearchPattern("HaMu", true);
-// JUnitTestCase.assertSame(null, pattern.matches(element));
-// }
-//
-// static dartSuite() {
-// _ut.group('CamelCaseSearchPatternTest', () {
-// _ut.test('test_matchExact_samePartCount', () {
-// final __test = new CamelCaseSearchPatternTest();
-// runJUnitTest(__test, __test.test_matchExact_samePartCount);
-// });
-// _ut.test('test_matchExact_withLowerCase', () {
-// final __test = new CamelCaseSearchPatternTest();
-// runJUnitTest(__test, __test.test_matchExact_withLowerCase);
-// });
-// _ut.test('test_matchNot_nullName', () {
-// final __test = new CamelCaseSearchPatternTest();
-// runJUnitTest(__test, __test.test_matchNot_nullName);
-// });
-// _ut.test('test_matchNot_samePartCount', () {
-// final __test = new CamelCaseSearchPatternTest();
-// runJUnitTest(__test, __test.test_matchNot_samePartCount);
-// });
-// _ut.test('test_matchNot_withLowerCase', () {
-// final __test = new CamelCaseSearchPatternTest();
-// runJUnitTest(__test, __test.test_matchNot_withLowerCase);
-// });
-// });
-// }
-//}
-//
-//class CountingSearchListenerTest extends EngineTestCase {
-// void test_matchFound() {
-// SearchListener listener = mock(SearchListener);
-// SearchMatch match = mock(SearchMatch);
-// SearchListener countingListener = new CountingSearchListener(2, listener);
-// // "match" should be passed to "listener"
-// countingListener.matchFound(match);
-// verify(listener).matchFound(match);
-// verifyNoMoreInteractions(listener);
-// }
-//
-// void test_searchComplete() {
-// SearchListener listener = mock(SearchListener);
-// SearchListener countingListener = new CountingSearchListener(2, listener);
-// // complete 2 -> 1
-// countingListener.searchComplete();
-// verifyZeroInteractions(listener);
-// // complete 2 -> 0
-// countingListener.searchComplete();
-// verify(listener).searchComplete();
-// }
-//
-// void test_searchComplete_zero() {
-// SearchListener listener = mock(SearchListener);
-// new CountingSearchListener(0, listener);
-// // complete at 0
-// verify(listener).searchComplete();
-// }
-//
-// static dartSuite() {
-// _ut.group('CountingSearchListenerTest', () {
-// _ut.test('test_matchFound', () {
-// final __test = new CountingSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound);
-// });
-// _ut.test('test_searchComplete', () {
-// final __test = new CountingSearchListenerTest();
-// runJUnitTest(__test, __test.test_searchComplete);
-// });
-// _ut.test('test_searchComplete_zero', () {
-// final __test = new CountingSearchListenerTest();
-// runJUnitTest(__test, __test.test_searchComplete_zero);
-// });
-// });
-// }
-//}
-//
-//class ExactSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// void test_caseInsensitive_false() {
-// SearchPattern pattern = new ExactSearchPattern("HashMa", false);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseInsensitive_true() {
-// SearchPattern pattern = new ExactSearchPattern("HashMap", false);
-// when(_element.displayName).thenReturn("HashMaP");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_false() {
-// SearchPattern pattern = new ExactSearchPattern("HashMa", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_true() {
-// SearchPattern pattern = new ExactSearchPattern("HashMap", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_nullName() {
-// SearchPattern pattern = new ExactSearchPattern("HashMap", true);
-// when(_element.displayName).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('ExactSearchPatternTest', () {
-// _ut.test('test_caseInsensitive_false', () {
-// final __test = new ExactSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_false);
-// });
-// _ut.test('test_caseInsensitive_true', () {
-// final __test = new ExactSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_true);
-// });
-// _ut.test('test_caseSensitive_false', () {
-// final __test = new ExactSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_false);
-// });
-// _ut.test('test_caseSensitive_true', () {
-// final __test = new ExactSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_true);
-// });
-// _ut.test('test_nullName', () {
-// final __test = new ExactSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullName);
-// });
-// });
-// }
-//}
-//
-//class FilterSearchListenerTest extends EngineTestCase {
-// SearchListener _listener = mock(SearchListener);
-//
-// SearchMatch _match = mock(SearchMatch);
-//
-// SearchFilter _filter = mock(SearchFilter);
-//
-// SearchListener _filteredListener = new FilteredSearchListener(_filter, _listener);
-//
-// void test_matchFound_filterFalse() {
-// when(_filter.passes(_match)).thenReturn(false);
-// // "match" should be passed to "listener"
-// _filteredListener.matchFound(_match);
-// verifyNoMoreInteractions(_listener);
-// }
-//
-// void test_matchFound_filterTrue() {
-// when(_filter.passes(_match)).thenReturn(true);
-// // "match" should be passed to "listener"
-// _filteredListener.matchFound(_match);
-// verify(_listener).matchFound(_match);
-// verifyNoMoreInteractions(_listener);
-// }
-//
-// void test_searchComplete() {
-// _filteredListener.searchComplete();
-// verify(_listener).searchComplete();
-// verifyNoMoreInteractions(_listener);
-// }
-//
-// static dartSuite() {
-// _ut.group('FilterSearchListenerTest', () {
-// _ut.test('test_matchFound_filterFalse', () {
-// final __test = new FilterSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound_filterFalse);
-// });
-// _ut.test('test_matchFound_filterTrue', () {
-// final __test = new FilterSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound_filterTrue);
-// });
-// _ut.test('test_searchComplete', () {
-// final __test = new FilterSearchListenerTest();
-// runJUnitTest(__test, __test.test_searchComplete);
-// });
-// });
-// }
-//}
-//
-//class GatheringSearchListenerTest extends EngineTestCase {
-// SearchMatch _matchA = mock(SearchMatch);
-//
-// SearchMatch _matchB = mock(SearchMatch);
-//
-// GatheringSearchListener _gatheringListener = new GatheringSearchListener();
-//
-// void test_matchFound() {
-// Element elementA = mock(Element);
-// Element elementB = mock(Element);
-// when(elementA.displayName).thenReturn("A");
-// when(elementB.displayName).thenReturn("B");
-// when(_matchA.element).thenReturn(elementA);
-// when(_matchB.element).thenReturn(elementB);
-// // matchB
-// _gatheringListener.matchFound(_matchB);
-// JUnitTestCase.assertFalse(_gatheringListener.isComplete);
-// assertThat(_gatheringListener.matches).containsExactly(_matchB);
-// // matchA
-// _gatheringListener.matchFound(_matchA);
-// JUnitTestCase.assertFalse(_gatheringListener.isComplete);
-// assertThat(_gatheringListener.matches).containsExactly(_matchA, _matchB);
-// }
-//
-// void test_searchComplete() {
-// JUnitTestCase.assertFalse(_gatheringListener.isComplete);
-// // complete
-// _gatheringListener.searchComplete();
-// JUnitTestCase.assertTrue(_gatheringListener.isComplete);
-// }
-//
-// static dartSuite() {
-// _ut.group('GatheringSearchListenerTest', () {
-// _ut.test('test_matchFound', () {
-// final __test = new GatheringSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound);
-// });
-// _ut.test('test_searchComplete', () {
-// final __test = new GatheringSearchListenerTest();
-// runJUnitTest(__test, __test.test_searchComplete);
-// });
-// });
-// }
-//}
-//
-//class LibrarySearchScopeTest extends EngineTestCase {
-// LibraryElement _libraryA = mock(LibraryElement);
-//
-// LibraryElement _libraryB = mock(LibraryElement);
-//
-// Element _element = mock(Element);
-//
-// void test_arrayConstructor_inA_false() {
-// when(_element.getAncestor((element) => element is LibraryElement)).thenReturn(_libraryB);
-// LibrarySearchScope scope = new LibrarySearchScope.con2([_libraryA]);
-// assertThat(scope.libraries).containsOnly(_libraryA);
-// JUnitTestCase.assertFalse(scope.encloses(_element));
-// }
-//
-// void test_arrayConstructor_inA_true() {
-// when(_element.getAncestor((element) => element is LibraryElement)).thenReturn(_libraryA);
-// LibrarySearchScope scope = new LibrarySearchScope.con2([_libraryA, _libraryB]);
-// assertThat(scope.libraries).containsOnly(_libraryA, _libraryB);
-// JUnitTestCase.assertTrue(scope.encloses(_element));
-// }
-//
-// void test_collectionConstructor_inB() {
-// when(_element.getAncestor((element) => element is LibraryElement)).thenReturn(_libraryB);
-// LibrarySearchScope scope = new LibrarySearchScope.con1(ImmutableSet.of(_libraryA, _libraryB));
-// assertThat(scope.libraries).containsOnly(_libraryA, _libraryB);
-// JUnitTestCase.assertTrue(scope.encloses(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('LibrarySearchScopeTest', () {
-// _ut.test('test_arrayConstructor_inA_false', () {
-// final __test = new LibrarySearchScopeTest();
-// runJUnitTest(__test, __test.test_arrayConstructor_inA_false);
-// });
-// _ut.test('test_arrayConstructor_inA_true', () {
-// final __test = new LibrarySearchScopeTest();
-// runJUnitTest(__test, __test.test_arrayConstructor_inA_true);
-// });
-// _ut.test('test_collectionConstructor_inB', () {
-// final __test = new LibrarySearchScopeTest();
-// runJUnitTest(__test, __test.test_collectionConstructor_inB);
-// });
-// });
-// }
-//}
-//
-//class NameMatchingSearchListenerTest extends EngineTestCase {
-// SearchListener _listener = mock(SearchListener);
-//
-// Element _element = mock(Element);
-//
-// SearchMatch _match = mock(SearchMatch);
-//
-// SearchPattern _pattern = mock(SearchPattern);
-//
-// SearchListener _nameMatchingListener = new NameMatchingSearchListener(_pattern, _listener);
-//
-// void test_matchFound_patternFalse() {
-// when(_pattern.matches(_element)).thenReturn(null);
-// // verify
-// _nameMatchingListener.matchFound(_match);
-// verifyNoMoreInteractions(_listener);
-// }
-//
-// void test_matchFound_patternTrue() {
-// when(_pattern.matches(_element)).thenReturn(MatchQuality.EXACT);
-// // verify
-// _nameMatchingListener.matchFound(_match);
-// verify(_listener).matchFound(_match);
-// verifyNoMoreInteractions(_listener);
-// }
-//
-// @override
-// void setUp() {
-// super.setUp();
-// when(_match.element).thenReturn(_element);
-// }
-//
-// static dartSuite() {
-// _ut.group('NameMatchingSearchListenerTest', () {
-// _ut.test('test_matchFound_patternFalse', () {
-// final __test = new NameMatchingSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound_patternFalse);
-// });
-// _ut.test('test_matchFound_patternTrue', () {
-// final __test = new NameMatchingSearchListenerTest();
-// runJUnitTest(__test, __test.test_matchFound_patternTrue);
-// });
-// });
-// }
-//}
-//
-//class OrSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// SearchPattern _patternA = mock(SearchPattern);
-//
-// SearchPattern _patternB = mock(SearchPattern);
-//
-// SearchPattern _pattern = new OrSearchPattern([_patternA, _patternB]);
-//
-// void test_allExact() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.EXACT);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.EXACT);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, _pattern.matches(_element));
-// }
-//
-// void test_ExactName() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.EXACT);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.NAME);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, _pattern.matches(_element));
-// }
-//
-// void test_NameExact() {
-// when(_patternA.matches(_element)).thenReturn(MatchQuality.NAME);
-// when(_patternB.matches(_element)).thenReturn(MatchQuality.EXACT);
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.NAME, _pattern.matches(_element));
-// }
-//
-// void test_NullNull() {
-// when(_patternA.matches(_element)).thenReturn(null);
-// when(_patternB.matches(_element)).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, _pattern.matches(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('OrSearchPatternTest', () {
-// _ut.test('test_ExactName', () {
-// final __test = new OrSearchPatternTest();
-// runJUnitTest(__test, __test.test_ExactName);
-// });
-// _ut.test('test_NameExact', () {
-// final __test = new OrSearchPatternTest();
-// runJUnitTest(__test, __test.test_NameExact);
-// });
-// _ut.test('test_NullNull', () {
-// final __test = new OrSearchPatternTest();
-// runJUnitTest(__test, __test.test_NullNull);
-// });
-// _ut.test('test_allExact', () {
-// final __test = new OrSearchPatternTest();
-// runJUnitTest(__test, __test.test_allExact);
-// });
-// });
-// }
-//}
-//
-//class PrefixSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// void test_caseInsensitive_contentMatch_caseMatch() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", false);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseInsensitive_contentMatch_caseMismatch() {
-// SearchPattern pattern = new PrefixSearchPattern("HaSHMa", false);
-// when(_element.displayName).thenReturn("hashMaP");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseInsensitive_contentMismatch() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", false);
-// when(_element.displayName).thenReturn("HashTable");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_contentMatch() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_contentMismatch() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", true);
-// when(_element.displayName).thenReturn("HashTable");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_nullElement() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", false);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(null));
-// }
-//
-// void test_nullName() {
-// SearchPattern pattern = new PrefixSearchPattern("HashMa", false);
-// when(_element.displayName).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('PrefixSearchPatternTest', () {
-// _ut.test('test_caseInsensitive_contentMatch_caseMatch', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_contentMatch_caseMatch);
-// });
-// _ut.test('test_caseInsensitive_contentMatch_caseMismatch', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_contentMatch_caseMismatch);
-// });
-// _ut.test('test_caseInsensitive_contentMismatch', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_contentMismatch);
-// });
-// _ut.test('test_caseSensitive_contentMatch', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_contentMatch);
-// });
-// _ut.test('test_caseSensitive_contentMismatch', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_contentMismatch);
-// });
-// _ut.test('test_nullElement', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullElement);
-// });
-// _ut.test('test_nullName', () {
-// final __test = new PrefixSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullName);
-// });
-// });
-// }
-//}
-//
-//class RegularExpressionSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// void test_caseInsensitive_false_contentMismatch() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H[a-z]*Map", false);
-// when(_element.displayName).thenReturn("Maps");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseInsensitive_true_caseMismatch() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H[a-z]*MaP", false);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_false_caseMismatch() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H[a-z]*MaP", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_false_contentMismatch() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H[a-z]*Map", true);
-// when(_element.displayName).thenReturn("Maps");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_true() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H.*Map", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_nullElement() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H.*Map", true);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(null));
-// }
-//
-// void test_nullName() {
-// SearchPattern pattern = new RegularExpressionSearchPattern("H.*Map", true);
-// when(_element.displayName).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// static dartSuite() {
-// _ut.group('RegularExpressionSearchPatternTest', () {
-// _ut.test('test_caseInsensitive_false_contentMismatch', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_false_contentMismatch);
-// });
-// _ut.test('test_caseInsensitive_true_caseMismatch', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_true_caseMismatch);
-// });
-// _ut.test('test_caseSensitive_false_caseMismatch', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_false_caseMismatch);
-// });
-// _ut.test('test_caseSensitive_false_contentMismatch', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_false_contentMismatch);
-// });
-// _ut.test('test_caseSensitive_true', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_true);
-// });
-// _ut.test('test_nullElement', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullElement);
-// });
-// _ut.test('test_nullName', () {
-// final __test = new RegularExpressionSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullName);
-// });
-// });
-// }
-//}
-//
-//class SearchEngineImplTest extends EngineTestCase {
-// static void _assertMatches(List<SearchMatch> matches, List<SearchEngineImplTest_ExpectedMatch> expectedMatches) {
-// assertThat(matches).hasSize(expectedMatches.length);
-// for (SearchMatch match in matches) {
-// bool found = false;
-// String msg = match.toString();
-// for (SearchEngineImplTest_ExpectedMatch expectedMatch in expectedMatches) {
-// if (match.element == expectedMatch._element && match.kind == expectedMatch._kind && match.quality == expectedMatch._quality && match.sourceRange == expectedMatch._range && match.isQualified == expectedMatch._qualified) {
-// found = true;
-// break;
-// }
-// }
-// if (!found) {
-// JUnitTestCase.fail("Not found: ${msg}");
-// }
-// }
-// }
-//
-// IndexStore _indexStore = IndexFactory.newSplitIndexStore(new MemoryNodeManager());
-//
-// static AnalysisContext _CONTEXT = mock(AnalysisContext);
-//
-// int _nextLocationId = 0;
-//
-// SearchScope _scope;
-//
-// SearchPattern _pattern = null;
-//
-// SearchFilter _filter = null;
-//
-// Source _source = mock(Source);
-//
-// CompilationUnitElement _unitElement = mock(CompilationUnitElement);
-//
-// LibraryElement _libraryElement = mock(LibraryElement);
-//
-// Element _elementA = _mockElement(Element, ElementKind.CLASS);
-//
-// Element _elementB = _mockElement(Element, ElementKind.CLASS);
-//
-// Element _elementC = _mockElement(Element, ElementKind.CLASS);
-//
-// Element _elementD = _mockElement(Element, ElementKind.CLASS);
-//
-// Element _elementE = _mockElement(Element, ElementKind.CLASS);
-//
-// void fail_searchAssignedTypes_assignments() {
-// // TODO(scheglov) does not work - new split index store cannot store types (yet?)
-// PropertyAccessorElement setterElement = _mockElement(PropertyAccessorElement, ElementKind.SETTER);
-// FieldElement fieldElement = _mockElement(FieldElement, ElementKind.FIELD);
-// when(fieldElement.setter).thenReturn(setterElement);
-// DartType typeA = mock(DartType);
-// DartType typeB = mock(DartType);
-// DartType typeC = mock(DartType);
-// _indexStore.aboutToIndexDart(_CONTEXT, _unitElement);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// location = new LocationWithData<DartType>.con1(location, typeA);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// location = new LocationWithData<DartType>.con1(location, typeB);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// // will be filtered by scope
-// {
-// Location location = new Location(_elementC, 3, 30);
-// location = new LocationWithData<DartType>.con1(location, typeC);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// // not LocationWithData
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // ask types
-// Set<DartType> types = _runSearch(new SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_assignments(fieldElement));
-// assertThat(types).containsOnly(typeA, typeB);
-// }
-//
-// void fail_searchAssignedTypes_initializers() {
-// // TODO(scheglov) does not work - new split index store cannot store types (yet?)
-// FieldElement fieldElement = _mockElement(FieldElement, ElementKind.FIELD);
-// DartType typeA = mock(DartType);
-// DartType typeB = mock(DartType);
-// {
-// Location location = new Location(_elementA, 10, 1);
-// location = new LocationWithData<DartType>.con1(location, typeA);
-// _indexStore.recordRelationship(fieldElement, IndexConstants.IS_DEFINED_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 20, 1);
-// location = new LocationWithData<DartType>.con1(location, typeB);
-// _indexStore.recordRelationship(fieldElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // ask types
-// Set<DartType> types = _runSearch(new SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_initializers(fieldElement));
-// assertThat(types).containsOnly(typeA, typeB);
-// }
-//
-// void test_searchDeclarations_String() {
-// Element referencedElement = new NameElementImpl("test");
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_DEFINED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_DEFINED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _runSearch(new SearchRunner_SearchEngineImplTest_test_searchDeclarations_String(this));
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.NAME_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.NAME_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchFunctionDeclarations() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineFunctionsAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchFunctionDeclarations_async() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineFunctionsAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchFunctionDeclarationsAsync();
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchFunctionDeclarations_inUniverse() {
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(IndexConstants.UNIVERSE, IndexConstants.DEFINES_FUNCTION, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(IndexConstants.UNIVERSE, IndexConstants.DEFINES_FUNCTION, locationB);
-// }
-// _indexStore.doneIndex();
-// _scope = SearchScopeFactory.createUniverseScope();
-// // search matches
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchFunctionDeclarations_useFilter() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineFunctionsAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search "elementA"
-// {
-// _filter = new SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter_2(this);
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_DECLARATION, 1, 2)]);
-// }
-// // search "elementB"
-// {
-// _filter = new SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter(this);
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_DECLARATION, 10, 20)]);
-// }
-// }
-//
-// void test_searchFunctionDeclarations_usePattern() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineFunctionsAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search "A"
-// {
-// _pattern = SearchPatternFactory.createExactPattern("A", true);
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_DECLARATION, 1, 2)]);
-// }
-// // search "B"
-// {
-// _pattern = SearchPatternFactory.createExactPattern("B", true);
-// List<SearchMatch> matches = _searchFunctionDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_DECLARATION, 10, 20)]);
-// }
-// }
-//
-// void test_searchReferences_AngularComponentElement() {
-// AngularComponentElement referencedElement = _mockElement(AngularComponentElement, ElementKind.ANGULAR_COMPONENT);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_CLOSING_TAG_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_CLOSING_TAG_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_AngularControllerElement() {
-// AngularControllerElement referencedElement = _mockElement(AngularControllerElement, ElementKind.ANGULAR_CONTROLLER);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_AngularFilterElement() {
-// AngularFormatterElement referencedElement = _mockElement(AngularFormatterElement, ElementKind.ANGULAR_FORMATTER);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_AngularPropertyElement() {
-// AngularPropertyElement referencedElement = _mockElement(AngularPropertyElement, ElementKind.ANGULAR_PROPERTY);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_AngularScopePropertyElement() {
-// AngularScopePropertyElement referencedElement = _mockElement(AngularScopePropertyElement, ElementKind.ANGULAR_SCOPE_PROPERTY);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_AngularSelectorElement() {
-// AngularSelectorElement referencedElement = _mockElement(AngularSelectorElement, ElementKind.ANGULAR_SELECTOR);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.ANGULAR_REFERENCE, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.ANGULAR_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.ANGULAR_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_ClassElement() {
-// ClassElement referencedElement = _mockElement(ClassElement, ElementKind.CLASS);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.TYPE_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.TYPE_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_ClassElement_useScope() {
-// LibraryElement libraryA = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// LibraryElement libraryB = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// ClassElement referencedElement = _mockElement(ClassElement, ElementKind.CLASS);
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(libraryA);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationA);
-// }
-// {
-// when(_elementB.getAncestor((element) => element is LibraryElement)).thenReturn(libraryB);
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches, in "libraryA"
-// _scope = SearchScopeFactory.createLibraryScope3(libraryA);
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.TYPE_REFERENCE, 1, 2)]);
-// }
-//
-// void test_searchReferences_CompilationUnitElement() {
-// CompilationUnitElement referencedElement = _mockElement(CompilationUnitElement, ElementKind.COMPILATION_UNIT);
-// {
-// Location location = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.UNIT_REFERENCE, 1, 2)]);
-// }
-//
-// void test_searchReferences_ConstructorElement() {
-// ConstructorElement referencedElement = _mockElement(ConstructorElement, ElementKind.CONSTRUCTOR);
-// {
-// Location location = new Location(_elementA, 10, 1);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_DEFINED_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 20, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// {
-// Location location = new Location(_elementC, 30, 3);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.CONSTRUCTOR_DECLARATION, 10, 1),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.CONSTRUCTOR_REFERENCE, 20, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementC, MatchKind.CONSTRUCTOR_REFERENCE, 30, 3)]);
-// }
-//
-// void test_searchReferences_Element_unknown() {
-// List<SearchMatch> matches = _searchReferencesSync(Element, null);
-// assertThat(matches).isEmpty();
-// }
-//
-// void test_searchReferences_FieldElement() {
-// PropertyAccessorElement getterElement = _mockElement(PropertyAccessorElement, ElementKind.GETTER);
-// PropertyAccessorElement setterElement = _mockElement(PropertyAccessorElement, ElementKind.SETTER);
-// FieldElement fieldElement = _mockElement(FieldElement, ElementKind.FIELD);
-// when(fieldElement.getter).thenReturn(getterElement);
-// when(fieldElement.setter).thenReturn(setterElement);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(getterElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(getterElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementC, 3, 30);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, fieldElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.FIELD_READ, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.FIELD_READ, 2, 20, true),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementC, MatchKind.FIELD_WRITE, 3, 30, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementD, MatchKind.FIELD_WRITE, 4, 40, true)]);
-// }
-//
-// void test_searchReferences_FieldElement_invocation() {
-// PropertyAccessorElement getterElement = _mockElement(PropertyAccessorElement, ElementKind.GETTER);
-// FieldElement fieldElement = _mockElement(FieldElement, ElementKind.FIELD);
-// when(fieldElement.getter).thenReturn(getterElement);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(getterElement, IndexConstants.IS_INVOKED_BY_QUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(getterElement, IndexConstants.IS_INVOKED_BY_UNQUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, fieldElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.FIELD_INVOCATION, 1, 10, true),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.FIELD_INVOCATION, 2, 20, false)]);
-// }
-//
-// void test_searchReferences_FieldElement2() {
-// FieldElement fieldElement = _mockElement(FieldElement, ElementKind.FIELD);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(fieldElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(fieldElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, fieldElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.FIELD_REFERENCE, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.FIELD_REFERENCE, 2, 20, true)]);
-// }
-//
-// void test_searchReferences_FunctionElement() {
-// FunctionElement referencedElement = _mockElement(FunctionElement, ElementKind.FUNCTION);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_EXECUTION, 1, 10),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_REFERENCE, 2, 20)]);
-// }
-//
-// void test_searchReferences_ImportElement() {
-// ImportElement referencedElement = _mockElement(ImportElement, ElementKind.IMPORT);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 0);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.IMPORT_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.IMPORT_REFERENCE, 10, 0)]);
-// }
-//
-// void test_searchReferences_LibraryElement() {
-// LibraryElement referencedElement = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// {
-// Location location = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.LIBRARY_REFERENCE, 1, 2)]);
-// }
-//
-// void test_searchReferences_MethodElement() {
-// MethodElement referencedElement = _mockElement(MethodElement, ElementKind.METHOD);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY_QUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementC, 3, 30);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.METHOD_INVOCATION, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.METHOD_INVOCATION, 2, 20, true),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementC, MatchKind.METHOD_REFERENCE, 3, 30, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementD, MatchKind.METHOD_REFERENCE, 4, 40, true)]);
-// }
-//
-// void test_searchReferences_MethodMember() {
-// MethodElement referencedElement = _mockElement(MethodElement, ElementKind.METHOD);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY_QUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementC, 3, 30);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// MethodMember referencedMember = new MethodMember(referencedElement, null);
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedMember);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.METHOD_INVOCATION, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.METHOD_INVOCATION, 2, 20, true),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementC, MatchKind.METHOD_REFERENCE, 3, 30, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementD, MatchKind.METHOD_REFERENCE, 4, 40, true)]);
-// }
-//
-// void test_searchReferences_notSupported() {
-// Element referencedElement = _mockElement(Element, ElementKind.UNIVERSE);
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// assertThat(matches).isEmpty();
-// }
-//
-// void test_searchReferences_ParameterElement() {
-// ParameterElement referencedElement = _mockElement(ParameterElement, ElementKind.PARAMETER);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_READ_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_WRITTEN_BY, location);
-// }
-// {
-// Location location = new Location(_elementC, 3, 30);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_READ_WRITTEN_BY, location);
-// }
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, location);
-// }
-// {
-// Location location = new Location(_elementD, 5, 50);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// // TODO(scheglov) why no MatchKind.FIELD_READ_WRITE ?
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.VARIABLE_READ, 1, 10),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.VARIABLE_WRITE, 2, 20),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementC, MatchKind.VARIABLE_READ_WRITE, 3, 30),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementD, MatchKind.NAMED_PARAMETER_REFERENCE, 4, 40),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementD, MatchKind.FUNCTION_EXECUTION, 5, 50)]);
-// }
-//
-// void test_searchReferences_PropertyAccessorElement_getter() {
-// PropertyAccessorElement accessor = _mockElement(PropertyAccessorElement, ElementKind.GETTER);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(accessor, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(accessor, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, accessor);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.PROPERTY_ACCESSOR_REFERENCE, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.PROPERTY_ACCESSOR_REFERENCE, 2, 20, true)]);
-// }
-//
-// void test_searchReferences_PropertyAccessorElement_setter() {
-// PropertyAccessorElement accessor = _mockElement(PropertyAccessorElement, ElementKind.SETTER);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(accessor, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(accessor, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, accessor);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.PROPERTY_ACCESSOR_REFERENCE, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementB, MatchKind.PROPERTY_ACCESSOR_REFERENCE, 2, 20, true)]);
-// }
-//
-// void test_searchReferences_TopLevelVariableElement() {
-// PropertyAccessorElement getterElement = _mockElement(PropertyAccessorElement, ElementKind.GETTER);
-// PropertyAccessorElement setterElement = _mockElement(PropertyAccessorElement, ElementKind.SETTER);
-// TopLevelVariableElement topVariableElement = _mockElement(TopLevelVariableElement, ElementKind.TOP_LEVEL_VARIABLE);
-// when(topVariableElement.getter).thenReturn(getterElement);
-// when(topVariableElement.setter).thenReturn(setterElement);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(getterElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// {
-// Location location = new Location(_elementC, 2, 20);
-// _indexStore.recordRelationship(setterElement, IndexConstants.IS_REFERENCED_BY_UNQUALIFIED, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, topVariableElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementA, MatchKind.FIELD_READ, 1, 10, false),
-// new SearchEngineImplTest_ExpectedMatch.con2(_elementC, MatchKind.FIELD_WRITE, 2, 20, false)]);
-// }
-//
-// void test_searchReferences_TypeAliasElement() {
-// FunctionTypeAliasElement referencedElement = _mockElement(FunctionTypeAliasElement, ElementKind.FUNCTION_TYPE_ALIAS);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_TYPE_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.FUNCTION_TYPE_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_TypeParameterElement() {
-// TypeParameterElement referencedElement = _mockElement(TypeParameterElement, ElementKind.TYPE_PARAMETER);
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.TYPE_PARAMETER_REFERENCE, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.TYPE_PARAMETER_REFERENCE, 10, 20)]);
-// }
-//
-// void test_searchReferences_VariableElement() {
-// LocalVariableElement referencedElement = _mockElement(LocalVariableElement, ElementKind.LOCAL_VARIABLE);
-// {
-// Location location = new Location(_elementA, 1, 10);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_READ_BY, location);
-// }
-// {
-// Location location = new Location(_elementB, 2, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_WRITTEN_BY, location);
-// }
-// {
-// Location location = new Location(_elementC, 3, 30);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_READ_WRITTEN_BY, location);
-// }
-// {
-// Location location = new Location(_elementD, 4, 40);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_INVOKED_BY, location);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync(Element, referencedElement);
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.VARIABLE_READ, 1, 10),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.VARIABLE_WRITE, 2, 20),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementC, MatchKind.VARIABLE_READ_WRITE, 3, 30),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementD, MatchKind.FUNCTION_EXECUTION, 4, 40)]);
-// }
-//
-// void test_searchSubtypes() {
-// ClassElement referencedElement = _mockElement(ClassElement, ElementKind.CLASS);
-// {
-// Location locationA = new Location(_elementA, 10, 1);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_EXTENDED_BY, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 20, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_MIXED_IN_BY, locationB);
-// }
-// {
-// Location locationC = new Location(_elementC, 30, 3);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_IMPLEMENTED_BY, locationC);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _runSearch(new SearchRunner_SearchEngineImplTest_test_searchSubtypes(this, referencedElement));
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.EXTENDS_REFERENCE, 10, 1),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.WITH_REFERENCE, 20, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementC, MatchKind.IMPLEMENTS_REFERENCE, 30, 3)]);
-// }
-//
-// void test_searchTypeDeclarations_async() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_CLASS, locationA);
-// }
-// _indexStore.doneIndex();
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchTypeDeclarationsAsync();
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.CLASS_DECLARATION, 1, 2)]);
-// }
-//
-// void test_searchTypeDeclarations_class() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_CLASS, locationA);
-// }
-// _indexStore.doneIndex();
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchTypeDeclarationsSync();
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.CLASS_DECLARATION, 1, 2)]);
-// }
-//
-// void test_searchTypeDeclarations_classAlias() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_CLASS_ALIAS, locationA);
-// }
-// _indexStore.doneIndex();
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchTypeDeclarationsSync();
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.CLASS_ALIAS_DECLARATION, 1, 2)]);
-// }
-//
-// void test_searchTypeDeclarations_functionType() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_FUNCTION_TYPE, locationA);
-// }
-// _indexStore.doneIndex();
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchTypeDeclarationsSync();
-// // verify
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.FUNCTION_TYPE_DECLARATION, 1, 2)]);
-// }
-//
-// void test_searchUnresolvedQualifiedReferences() {
-// Element referencedElement = new NameElementImpl("test");
-// {
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED_RESOLVED, locationA);
-// }
-// {
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(referencedElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED_UNRESOLVED, locationB);
-// }
-// _indexStore.doneIndex();
-// // search matches
-// List<SearchMatch> matches = _searchReferencesSync2("searchQualifiedMemberReferences", String, "test");
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.NAME_REFERENCE_RESOLVED, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.NAME_REFERENCE_UNRESOLVED, 10, 20)]);
-// }
-//
-// void test_searchVariableDeclarations() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineVariablesAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchVariableDeclarationsSync();
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.VARIABLE_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.VARIABLE_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchVariableDeclarations_async() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineVariablesAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search matches
-// List<SearchMatch> matches = _searchVariableDeclarationsAsync();
-// // verify
-// _assertMatches(matches, [
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.VARIABLE_DECLARATION, 1, 2),
-// new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.VARIABLE_DECLARATION, 10, 20)]);
-// }
-//
-// void test_searchVariableDeclarations_usePattern() {
-// LibraryElement library = _mockElement(LibraryElement, ElementKind.LIBRARY);
-// _defineVariablesAB(library);
-// _scope = new LibrarySearchScope.con2([library]);
-// // search "A"
-// {
-// _pattern = SearchPatternFactory.createExactPattern("A", true);
-// List<SearchMatch> matches = _searchVariableDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementA, MatchKind.VARIABLE_DECLARATION, 1, 2)]);
-// }
-// // search "B"
-// {
-// _pattern = SearchPatternFactory.createExactPattern("B", true);
-// List<SearchMatch> matches = _searchVariableDeclarationsSync();
-// _assertMatches(matches, [new SearchEngineImplTest_ExpectedMatch.con1(_elementB, MatchKind.VARIABLE_DECLARATION, 10, 20)]);
-// }
-// }
-//
-// @override
-// void setUp() {
-// super.setUp();
-// // library
-// when(_unitElement.library).thenReturn(_libraryElement);
-// when(_libraryElement.definingCompilationUnit).thenReturn(_unitElement);
-// when(_unitElement.source).thenReturn(_source);
-// when(_libraryElement.source).thenReturn(_source);
-// when(_libraryElement.parts).thenReturn(new List<CompilationUnitElement>(0));
-// // elements
-// when(_elementA.toString()).thenReturn("A");
-// when(_elementB.toString()).thenReturn("B");
-// when(_elementC.toString()).thenReturn("C");
-// when(_elementD.toString()).thenReturn("D");
-// when(_elementE.toString()).thenReturn("E");
-// when(_elementA.displayName).thenReturn("A");
-// when(_elementB.displayName).thenReturn("B");
-// when(_elementC.displayName).thenReturn("C");
-// when(_elementD.displayName).thenReturn("D");
-// when(_elementE.displayName).thenReturn("E");
-// when(_elementA.source).thenReturn(_source);
-// when(_elementB.source).thenReturn(_source);
-// when(_elementC.source).thenReturn(_source);
-// when(_elementD.source).thenReturn(_source);
-// when(_elementE.source).thenReturn(_source);
-// when(_elementA.context).thenReturn(_CONTEXT);
-// when(_elementB.context).thenReturn(_CONTEXT);
-// when(_elementC.context).thenReturn(_CONTEXT);
-// when(_elementD.context).thenReturn(_CONTEXT);
-// when(_elementE.context).thenReturn(_CONTEXT);
-// when(_CONTEXT.getElement(_elementA.location)).thenReturn(_elementA);
-// when(_CONTEXT.getElement(_elementB.location)).thenReturn(_elementB);
-// when(_CONTEXT.getElement(_elementC.location)).thenReturn(_elementC);
-// when(_CONTEXT.getElement(_elementD.location)).thenReturn(_elementD);
-// when(_CONTEXT.getElement(_elementE.location)).thenReturn(_elementE);
-// // start indexing
-// JUnitTestCase.assertTrue(_indexStore.aboutToIndexDart(_CONTEXT, _unitElement));
-// }
-//
-// void _defineFunctionsAB(LibraryElement library) {
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_FUNCTION, locationA);
-// }
-// {
-// when(_elementB.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_FUNCTION, locationB);
-// }
-// _indexStore.doneIndex();
-// }
-//
-// void _defineVariablesAB(LibraryElement library) {
-// {
-// when(_elementA.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationA = new Location(_elementA, 1, 2);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_VARIABLE, locationA);
-// }
-// {
-// when(_elementB.getAncestor((element) => element is LibraryElement)).thenReturn(library);
-// Location locationB = new Location(_elementB, 10, 20);
-// _indexStore.recordRelationship(library, IndexConstants.DEFINES_VARIABLE, locationB);
-// }
-// _indexStore.doneIndex();
-// }
-//
-// Element _mockElement(Type clazz, ElementKind kind) {
-// Element element = mock(clazz);
-// when(element.context).thenReturn(_CONTEXT);
-// when(element.source).thenReturn(_source);
-// when(element.kind).thenReturn(kind);
-// ElementLocation elementLocation = new ElementLocationImpl.con2("mockLocation${_nextLocationId++}");
-// when(element.location).thenReturn(elementLocation);
-// when(_CONTEXT.getElement(element.location)).thenReturn(element);
-// return element;
-// }
-//
-// Object _runSearch(SearchEngineImplTest_SearchRunner runner) {
-// OperationQueue queue = new OperationQueue();
-// OperationProcessor processor = new OperationProcessor(queue);
-// Index index = new IndexImpl(_indexStore, queue, processor);
-// SearchEngine engine = SearchEngineFactory.createSearchEngine(index);
-// try {
-// new Thread_SearchEngineImplTest_runSearch(processor).start();
-// processor.waitForRunning();
-// return runner.run(queue, processor, index, engine);
-// } finally {
-// processor.stop(false);
-// }
-// }
-//
-// List<SearchMatch> _searchDeclarationsAsync(String methodName) => _runSearch(new SearchRunner_SearchEngineImplTest_searchDeclarationsAsync(this, methodName, this, matches, latch));
-//
-// List<SearchMatch> _searchDeclarationsSync(String methodName) => _runSearch(new SearchRunner_SearchEngineImplTest_searchDeclarationsSync(this, methodName));
-//
-// List<SearchMatch> _searchFunctionDeclarationsAsync() => _searchDeclarationsAsync("searchFunctionDeclarations");
-//
-// List<SearchMatch> _searchFunctionDeclarationsSync() => _searchDeclarationsSync("searchFunctionDeclarations");
-//
-// List<SearchMatch> _searchReferencesSync(Type clazz, Object element) => _searchReferencesSync2("searchReferences", clazz, element);
-//
-// List<SearchMatch> _searchReferencesSync2(String methodName, Type clazz, Object element) => _runSearch(new SearchRunner_SearchEngineImplTest_searchReferencesSync(this, methodName, clazz, element));
-//
-// List<SearchMatch> _searchTypeDeclarationsAsync() => _searchDeclarationsAsync("searchTypeDeclarations");
-//
-// List<SearchMatch> _searchTypeDeclarationsSync() => _searchDeclarationsSync("searchTypeDeclarations");
-//
-// List<SearchMatch> _searchVariableDeclarationsAsync() => _searchDeclarationsAsync("searchVariableDeclarations");
-//
-// List<SearchMatch> _searchVariableDeclarationsSync() => _searchDeclarationsSync("searchVariableDeclarations");
-//
-// static dartSuite() {
-// _ut.group('SearchEngineImplTest', () {
-// _ut.test('test_searchDeclarations_String', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchDeclarations_String);
-// });
-// _ut.test('test_searchFunctionDeclarations', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchFunctionDeclarations);
-// });
-// _ut.test('test_searchFunctionDeclarations_async', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchFunctionDeclarations_async);
-// });
-// _ut.test('test_searchFunctionDeclarations_inUniverse', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchFunctionDeclarations_inUniverse);
-// });
-// _ut.test('test_searchFunctionDeclarations_useFilter', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchFunctionDeclarations_useFilter);
-// });
-// _ut.test('test_searchFunctionDeclarations_usePattern', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchFunctionDeclarations_usePattern);
-// });
-// _ut.test('test_searchReferences_AngularComponentElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularComponentElement);
-// });
-// _ut.test('test_searchReferences_AngularControllerElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularControllerElement);
-// });
-// _ut.test('test_searchReferences_AngularFilterElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularFilterElement);
-// });
-// _ut.test('test_searchReferences_AngularPropertyElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularPropertyElement);
-// });
-// _ut.test('test_searchReferences_AngularScopePropertyElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularScopePropertyElement);
-// });
-// _ut.test('test_searchReferences_AngularSelectorElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_AngularSelectorElement);
-// });
-// _ut.test('test_searchReferences_ClassElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_ClassElement);
-// });
-// _ut.test('test_searchReferences_ClassElement_useScope', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_ClassElement_useScope);
-// });
-// _ut.test('test_searchReferences_CompilationUnitElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_CompilationUnitElement);
-// });
-// _ut.test('test_searchReferences_ConstructorElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_ConstructorElement);
-// });
-// _ut.test('test_searchReferences_Element_unknown', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_Element_unknown);
-// });
-// _ut.test('test_searchReferences_FieldElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_FieldElement);
-// });
-// _ut.test('test_searchReferences_FieldElement2', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_FieldElement2);
-// });
-// _ut.test('test_searchReferences_FieldElement_invocation', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_FieldElement_invocation);
-// });
-// _ut.test('test_searchReferences_FunctionElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_FunctionElement);
-// });
-// _ut.test('test_searchReferences_ImportElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_ImportElement);
-// });
-// _ut.test('test_searchReferences_LibraryElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_LibraryElement);
-// });
-// _ut.test('test_searchReferences_MethodElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_MethodElement);
-// });
-// _ut.test('test_searchReferences_MethodMember', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_MethodMember);
-// });
-// _ut.test('test_searchReferences_ParameterElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_ParameterElement);
-// });
-// _ut.test('test_searchReferences_PropertyAccessorElement_getter', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_PropertyAccessorElement_getter);
-// });
-// _ut.test('test_searchReferences_PropertyAccessorElement_setter', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_PropertyAccessorElement_setter);
-// });
-// _ut.test('test_searchReferences_TopLevelVariableElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_TopLevelVariableElement);
-// });
-// _ut.test('test_searchReferences_TypeAliasElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_TypeAliasElement);
-// });
-// _ut.test('test_searchReferences_TypeParameterElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_TypeParameterElement);
-// });
-// _ut.test('test_searchReferences_VariableElement', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_VariableElement);
-// });
-// _ut.test('test_searchReferences_notSupported', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchReferences_notSupported);
-// });
-// _ut.test('test_searchSubtypes', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchSubtypes);
-// });
-// _ut.test('test_searchTypeDeclarations_async', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchTypeDeclarations_async);
-// });
-// _ut.test('test_searchTypeDeclarations_class', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchTypeDeclarations_class);
-// });
-// _ut.test('test_searchTypeDeclarations_classAlias', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchTypeDeclarations_classAlias);
-// });
-// _ut.test('test_searchTypeDeclarations_functionType', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchTypeDeclarations_functionType);
-// });
-// _ut.test('test_searchUnresolvedQualifiedReferences', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchUnresolvedQualifiedReferences);
-// });
-// _ut.test('test_searchVariableDeclarations', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchVariableDeclarations);
-// });
-// _ut.test('test_searchVariableDeclarations_async', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchVariableDeclarations_async);
-// });
-// _ut.test('test_searchVariableDeclarations_usePattern', () {
-// final __test = new SearchEngineImplTest();
-// runJUnitTest(__test, __test.test_searchVariableDeclarations_usePattern);
-// });
-// });
-// }
-//}
-//
-//class SearchEngineImplTest_ExpectedMatch {
-// final Element _element;
-//
-// final MatchKind _kind;
-//
-// final MatchQuality _quality;
-//
-// SourceRange _range;
-//
-// final bool _qualified;
-//
-// SearchEngineImplTest_ExpectedMatch.con1(Element element, MatchKind kind, int offset, int length) : this.con3(element, kind, MatchQuality.EXACT, offset, length);
-//
-// SearchEngineImplTest_ExpectedMatch.con2(Element element, MatchKind kind, int offset, int length, bool qualified) : this.con4(element, kind, MatchQuality.EXACT, offset, length, qualified);
-//
-// SearchEngineImplTest_ExpectedMatch.con3(Element element, MatchKind kind, MatchQuality quality, int offset, int length) : this.con4(element, kind, quality, offset, length, false);
-//
-// SearchEngineImplTest_ExpectedMatch.con4(this._element, this._kind, this._quality, int offset, int length, this._qualified) {
-// this._range = new SourceRange(offset, length);
-// }
-//}
-//
-//abstract class SearchEngineImplTest_SearchRunner<T> {
-// T run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine);
-//}
-//
-//class SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter implements SearchFilter {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter(this.SearchEngineImplTest_this);
-//
-// @override
-// bool passes(SearchMatch match) => identical(match.element, SearchEngineImplTest_this._elementB);
-//}
-//
-//class SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter_2 implements SearchFilter {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// SearchFilter_SearchEngineImplTest_test_searchFunctionDeclarations_useFilter_2(this.SearchEngineImplTest_this);
-//
-// @override
-// bool passes(SearchMatch match) => identical(match.element, SearchEngineImplTest_this._elementA);
-//}
-//
-//class SearchListener_SearchRunner_117_run implements SearchListener {
-// List<SearchMatch> matches;
-//
-// CountDownLatch latch;
-//
-// SearchListener_SearchRunner_117_run(this.matches, this.latch);
-//
-// @override
-// void matchFound(SearchMatch match) {
-// matches.add(match);
-// }
-//
-// @override
-// void searchComplete() {
-// latch.countDown();
-// }
-//}
-//
-//class SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_assignments implements SearchEngineImplTest_SearchRunner {
-// FieldElement fieldElement;
-//
-// SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_assignments(this.fieldElement, this.fieldElement);
-//
-// @override
-// Set<DartType> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) => engine.searchAssignedTypes(fieldElement, new SearchScope_SearchRunner_109_run());
-//}
-//
-//class SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_initializers implements SearchEngineImplTest_SearchRunner {
-// FieldElement fieldElement;
-//
-// SearchRunner_SearchEngineImplTest_fail_searchAssignedTypes_initializers(this.fieldElement);
-//
-// @override
-// Set<DartType> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) => engine.searchAssignedTypes(fieldElement, null);
-//}
-//
-//class SearchRunner_SearchEngineImplTest_searchDeclarationsAsync implements SearchEngineImplTest_SearchRunner {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// String methodName;
-//
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// List<SearchMatch> matches;
-//
-// CountDownLatch latch;
-//
-// SearchRunner_SearchEngineImplTest_searchDeclarationsAsync(this.SearchEngineImplTest_this, this.methodName, this.SearchEngineImplTest_this, this.matches, this.latch, this.SearchEngineImplTest_this, this.methodName, this.SearchEngineImplTest_this, this.matches, this.latch);
-//
-// @override
-// List<SearchMatch> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) {
-// CountDownLatch latch = new CountDownLatch(1);
-// List<SearchMatch> matches = [];
-// engine.runtimeType.getMethod(methodName, [SearchScope, SearchPattern, SearchFilter, SearchListener]).invoke(engine, [
-// SearchEngineImplTest_this._scope,
-// SearchEngineImplTest_this._pattern,
-// SearchEngineImplTest_this._filter,
-// new SearchListener_SearchRunner_117_run(matches, latch)]);
-// latch.await(30, TimeUnit.SECONDS);
-// return matches;
-// }
-//}
-//
-//class SearchRunner_SearchEngineImplTest_searchDeclarationsSync implements SearchEngineImplTest_SearchRunner {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// String methodName;
-//
-// SearchRunner_SearchEngineImplTest_searchDeclarationsSync(this.SearchEngineImplTest_this, this.methodName);
-//
-// @override
-// List<SearchMatch> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) => engine.runtimeType.getMethod(methodName, [SearchScope, SearchPattern, SearchFilter]).invoke(engine, [
-// SearchEngineImplTest_this._scope,
-// SearchEngineImplTest_this._pattern,
-// SearchEngineImplTest_this._filter]) as List<SearchMatch>;
-//}
-//
-//class SearchRunner_SearchEngineImplTest_searchReferencesSync implements SearchEngineImplTest_SearchRunner {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// String methodName;
-//
-// Type clazz;
-//
-// Object element;
-//
-// SearchRunner_SearchEngineImplTest_searchReferencesSync(this.SearchEngineImplTest_this, this.methodName, this.clazz, this.element);
-//
-// @override
-// List<SearchMatch> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) {
-// // pass some operation to wait if search will not call processor
-// queue.enqueue(mock(IndexOperation));
-// // run actual search
-// return engine.runtimeType.getMethod(methodName, [clazz, SearchScope, SearchFilter]).invoke(engine, [
-// element,
-// SearchEngineImplTest_this._scope,
-// SearchEngineImplTest_this._filter]) as List<SearchMatch>;
-// }
-//}
-//
-//class SearchRunner_SearchEngineImplTest_test_searchDeclarations_String implements SearchEngineImplTest_SearchRunner {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// SearchRunner_SearchEngineImplTest_test_searchDeclarations_String(this.SearchEngineImplTest_this);
-//
-// @override
-// List<SearchMatch> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) => engine.searchDeclarations("test", SearchEngineImplTest_this._scope, SearchEngineImplTest_this._filter);
-//}
-//
-//class SearchRunner_SearchEngineImplTest_test_searchSubtypes implements SearchEngineImplTest_SearchRunner {
-// final SearchEngineImplTest SearchEngineImplTest_this;
-//
-// ClassElement referencedElement;
-//
-// SearchRunner_SearchEngineImplTest_test_searchSubtypes(this.SearchEngineImplTest_this, this.referencedElement);
-//
-// @override
-// List<SearchMatch> run(OperationQueue queue, OperationProcessor processor, Index index, SearchEngine engine) => engine.searchSubtypes(referencedElement, SearchEngineImplTest_this._scope, SearchEngineImplTest_this._filter);
-//}
-//
-//class SearchScope_SearchRunner_109_run implements SearchScope {
-// @override
-// bool encloses(Element element) => !identical(element, _elementC);
-//}
-//
-//class Thread_SearchEngineImplTest_runSearch extends Thread {
-// OperationProcessor processor;
-//
-// Thread_SearchEngineImplTest_runSearch(this.processor) : super();
-//
-// @override
-// void run() {
-// processor.run();
-// }
-//}
-//
-//class UniverseSearchScopeTest extends EngineTestCase {
-// SearchScope _scope = new UniverseSearchScope();
-//
-// Element _element = mock(Element);
-//
-// void test_anyElement() {
-// JUnitTestCase.assertTrue(_scope.encloses(_element));
-// }
-//
-// void test_nullElement() {
-// JUnitTestCase.assertTrue(_scope.encloses(null));
-// }
-//
-// static dartSuite() {
-// _ut.group('UniverseSearchScopeTest', () {
-// _ut.test('test_anyElement', () {
-// final __test = new UniverseSearchScopeTest();
-// runJUnitTest(__test, __test.test_anyElement);
-// });
-// _ut.test('test_nullElement', () {
-// final __test = new UniverseSearchScopeTest();
-// runJUnitTest(__test, __test.test_nullElement);
-// });
-// });
-// }
-//}
-//
-//class WildcardSearchPatternTest extends EngineTestCase {
-// Element _element = mock(Element);
-//
-// void test_caseInsensitive_false_contentMismatch() {
-// SearchPattern pattern = new WildcardSearchPattern("H*Map", false);
-// when(_element.displayName).thenReturn("Maps");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseInsensitive_true_caseMismatch() {
-// SearchPattern pattern = new WildcardSearchPattern("H*MaP", false);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_false_caseMismatch() {
-// SearchPattern pattern = new WildcardSearchPattern("H*MaP", true);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_false_contentMismatch() {
-// SearchPattern pattern = new WildcardSearchPattern("H*Map", false);
-// when(_element.displayName).thenReturn("Maps");
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
-// }
-//
-// void test_caseSensitive_true() {
-// SearchPattern pattern = new WildcardSearchPattern("H*Ma?", false);
-// when(_element.displayName).thenReturn("HashMap");
-// // validate
-// JUnitTestCase.assertSame(MatchQuality.EXACT, pattern.matches(_element));
-// }
-//
-// void test_nullElement() {
-// SearchPattern pattern = new WildcardSearchPattern("H*Map", false);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(null));
-// }
-//
-// void test_nullName() {
-// SearchPattern pattern = new WildcardSearchPattern("H*Map", false);
-// when(_element.displayName).thenReturn(null);
-// // validate
-// JUnitTestCase.assertSame(null, pattern.matches(_element));
+ 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 mockLocation(Element element, Relationship relationship,
+// Location location) {
+// mockLocations(element, relationship, [location]);
// }
//
-// static dartSuite() {
-// _ut.group('WildcardSearchPatternTest', () {
-// _ut.test('test_caseInsensitive_false_contentMismatch', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_false_contentMismatch);
-// });
-// _ut.test('test_caseInsensitive_true_caseMismatch', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseInsensitive_true_caseMismatch);
-// });
-// _ut.test('test_caseSensitive_false_caseMismatch', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_false_caseMismatch);
-// });
-// _ut.test('test_caseSensitive_false_contentMismatch', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_false_contentMismatch);
-// });
-// _ut.test('test_caseSensitive_true', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_caseSensitive_true);
-// });
-// _ut.test('test_nullElement', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullElement);
-// });
-// _ut.test('test_nullName', () {
-// final __test = new WildcardSearchPatternTest();
-// runJUnitTest(__test, __test.test_nullName);
-// });
-// });
+// void mockLocations(Element element, Relationship relationship,
+// List<Location> locations) {
+// index.getRelationships(element, relationship);
+// when(null).thenReturn(new Future.value(locations));
// }
-//}
-//
-//main() {
-// CountingSearchListenerTest.dartSuite();
-// FilterSearchListenerTest.dartSuite();
-// GatheringSearchListenerTest.dartSuite();
-// NameMatchingSearchListenerTest.dartSuite();
-// LibrarySearchScopeTest.dartSuite();
-// UniverseSearchScopeTest.dartSuite();
-// SearchEngineImplTest.dartSuite();
-// AndSearchPatternTest.dartSuite();
-// CamelCaseSearchPatternTest.dartSuite();
-// ExactSearchPatternTest.dartSuite();
-// OrSearchPatternTest.dartSuite();
-// PrefixSearchPatternTest.dartSuite();
-// RegularExpressionSearchPatternTest.dartSuite();
-// WildcardSearchPatternTest.dartSuite();
-//}
+
+ void setUp() {
+ super.setUp();
+ index = createLocalMemoryIndex();
+ searchEngine = new SearchEngineImpl(index);
+ }
+
+ Future test_searchMemberDeclarations() {
+ _indexTestUnit('''
+class A {
+ test() {}
+}
+class B {
+ int test = 42;
+}
+''');
+ NameElement element = new NameElement('test');
+ ClassElement elementA = findElement('A');
+ ClassElement elementB = findElement('B');
+ var expected = [
+ _expectId(elementA.methods[0], MatchKind.NAME_DECLARATION, 'test() {}'),
+ _expectId(elementB.fields[0], MatchKind.NAME_DECLARATION, 'test = 42;')];
+ return searchEngine.searchMemberDeclarations('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.TYPE_REFERENCE, 'A p'),
+ _expectId(vElement, MatchKind.TYPE_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.UNIT_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.CONSTRUCTOR_DECLARATION,
+ '.named() {}',
+ length: 6),
+ _expectId(
+ mainElement,
+ MatchKind.CONSTRUCTOR_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 = [
+ _expectIdQ(fieldParameter, MatchKind.FIELD_REFERENCE, 'field}'),
+ _expectIdQ(main, MatchKind.FIELD_REFERENCE, 'field: 1'),
+ _expectId(main, MatchKind.FIELD_READ, 'field); // ref-nq'),
+ _expectIdQ(main, MatchKind.FIELD_READ, 'field); // ref-q'),
+ _expectId(main, MatchKind.FIELD_INVOCATION, 'field(); // inv-nq'),
+ _expectIdQ(main, MatchKind.FIELD_INVOCATION, 'field(); // inv-q'),
+ _expectId(main, MatchKind.FIELD_WRITE, 'field = 2; // ref-nq'),
+ _expectIdQ(main, MatchKind.FIELD_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.FUNCTION_EXECUTION, 'test();'),
+ _expectId(mainElement, MatchKind.FUNCTION_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.FUNCTION_TYPE_REFERENCE, 'Test a;'),
+ _expectId(bElement, MatchKind.FUNCTION_TYPE_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.IMPORT_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.IMPORT_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.LIBRARY_REFERENCE,
+ codeA.indexOf('lib; // A'),
+ 'lib'.length),
+ new ExpectedMatch(
+ elementB,
+ MatchKind.LIBRARY_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.VARIABLE_WRITE, 'v = 1;'),
+ _expectId(mainElement, MatchKind.VARIABLE_READ_WRITE, 'v += 2;'),
+ _expectId(mainElement, MatchKind.VARIABLE_READ, 'v);'),
+ _expectId(mainElement, MatchKind.FUNCTION_EXECUTION, '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.METHOD_INVOCATION, 'm(); // 1'),
+ _expectIdQ(mainElement, MatchKind.METHOD_INVOCATION, 'm(); // 2'),
+ _expectId(mainElement, MatchKind.METHOD_REFERENCE, 'm); // 3'),
+ _expectIdQ(mainElement, MatchKind.METHOD_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.METHOD_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.VARIABLE_WRITE, 'p = 1;'),
+ _expectId(fooElement, MatchKind.VARIABLE_READ_WRITE, 'p += 2;'),
+ _expectId(fooElement, MatchKind.VARIABLE_READ, 'p);'),
+ _expectId(fooElement, MatchKind.FUNCTION_EXECUTION, 'p();'),
+ _expectId(mainElement, MatchKind.NAMED_PARAMETER_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.PROPERTY_ACCESSOR_REFERENCE, 'g; // 1'),
+ _expectIdQ(mainElement, MatchKind.PROPERTY_ACCESSOR_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.PROPERTY_ACCESSOR_REFERENCE, 's = 1'),
+ _expectIdQ(mainElement, MatchKind.PROPERTY_ACCESSOR_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() {
+ V = 1;
+ print(V);
+ V();
+}
+mainQ() {
+ pref.V = 1; // Q
+ print(pref.V); // Q
+ pref.V(); // Q
+}
+''');
+ ImportElement importElement = testLibraryElement.imports[0];
+ CompilationUnitElement impUnit =
+ importElement.importedLibrary.definingCompilationUnit;
+ TopLevelVariableElement variable = impUnit.topLevelVariables[0];
+ Element main = findElement('main');
+ Element mainQ = findElement('mainQ');
+ var expected = [
+ _expectIdQ(testUnitElement, MatchKind.FIELD_REFERENCE, 'V; // imp'),
+ _expectId(main, MatchKind.FIELD_WRITE, 'V = 1;'),
+ _expectId(main, MatchKind.FIELD_READ, 'V);'),
+ _expectId(main, MatchKind.FIELD_INVOCATION, 'V();'),
+ _expectIdQ(mainQ, MatchKind.FIELD_WRITE, 'V = 1; // Q'),
+ _expectIdQ(mainQ, MatchKind.FIELD_READ, 'V); // Q'),
+ _expectIdQ(mainQ, MatchKind.FIELD_INVOCATION, 'V(); // Q')];
+ 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.TYPE_PARAMETER_REFERENCE, 'T a'),
+ _expectId(bElement, MatchKind.TYPE_PARAMETER_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.EXTENDS_REFERENCE, 'T {} // A'),
+ _expectId(elementB, MatchKind.WITH_REFERENCE, 'T; // B'),
+ _expectId(elementC, MatchKind.IMPLEMENTS_REFERENCE, 'T {} // C')];
+ return searchEngine.searchSubtypes(element).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.NAME_INVOCATION_RESOLVED, 'test(); // a-inv-r-nq'),
+ _expectId(mainA, MatchKind.NAME_WRITE_RESOLVED, 'test = 1; // a-write-r-nq'),
+ _expectId(mainA, MatchKind.NAME_READ_WRITE_RESOLVED, 'test += 2; // a-read-write-r-nq'),
+ _expectId(mainA, MatchKind.NAME_READ_RESOLVED, 'test); // a-read-r-nq'),
+ _expectId(main, MatchKind.NAME_INVOCATION_RESOLVED, 'test(); // a-inv-r-q'),
+ _expectId(main, MatchKind.NAME_WRITE_RESOLVED, 'test = 1; // a-write-r-q'),
+ _expectId(main, MatchKind.NAME_READ_WRITE_RESOLVED, 'test += 2; // a-read-write-r-q'),
+ _expectId(main, MatchKind.NAME_READ_RESOLVED, 'test); // a-read-r-q'),
+ _expectIdU(main, MatchKind.NAME_INVOCATION_UNRESOLVED, 'test(); // p-inv-ur-q'),
+ _expectIdU(main, MatchKind.NAME_WRITE_UNRESOLVED, 'test = 1; // p-write-ur-q'),
+ _expectIdU(main, MatchKind.NAME_READ_WRITE_UNRESOLVED, 'test += 2; // p-read-write-ur-q'),
+ _expectIdU(main, MatchKind.NAME_READ_UNRESOLVED, 'test); // p-read-ur-q'),
+ ];
+ return searchEngine.searchMemberReferences('test').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.CLASS_DECLARATION, 'A {} // A'),
+ _expectId(topB, MatchKind.CLASS_ALIAS_DECLARATION, 'B ='),
+ _expectId(topC, MatchKind.FUNCTION_TYPE_DECLARATION, 'C()'),
+ _expectId(topD, MatchKind.FUNCTION_DECLARATION, 'D() {}'),
+ _expectId(topE, MatchKind.VARIABLE_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, 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/index/store/codec_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