Chromium Code Reviews| Index: pkg/analysis_server/test/search/member_references_test.dart |
| diff --git a/pkg/analysis_server/test/search/member_references_test.dart b/pkg/analysis_server/test/search/member_references_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b638c4644f639f3733ba68e4137e739abe835bf5 |
| --- /dev/null |
| +++ b/pkg/analysis_server/test/search/member_references_test.dart |
| @@ -0,0 +1,126 @@ |
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +library test.search.member_references; |
| + |
| +import 'package:analysis_server/src/constants.dart'; |
| +import 'package:analysis_server/src/protocol.dart'; |
| +import 'package:analysis_server/src/search/search_result.dart'; |
| +import 'package:analysis_testing/reflective_tests.dart'; |
| +import 'package:unittest/unittest.dart'; |
| + |
| +import 'abstract_search_domain.dart'; |
| +import 'dart:async'; |
| +import 'package:analysis_server/src/computer/element.dart'; |
| + |
| + |
| +main() { |
| + groupSep = ' | '; |
| + group('MemberReferencesTest', () { |
| + runReflectiveTests(MemberReferencesTest); |
| + }); |
| +} |
| + |
| + |
| +@ReflectiveTestCase() |
| +class MemberReferencesTest extends AbstractSearchDomainTest { |
| + Future findMemberReferences(String name) { |
| + return waitForTasksFinished().then((_) { |
| + Request request = new Request('0', SEARCH_FIND_MEMBER_REFERENCES); |
| + request.setParameter(NAME, name); |
| + Response response = handleSuccessfulRequest(request); |
| + searchId = response.getResult(ID); |
| + results.clear(); |
| + return waitForSearchResults(); |
| + }); |
| + } |
| + |
| + void assertHasRef(SearchResultKind kind, String search, bool isPotential) { |
| + assertHasResult(kind, search); |
| + expect(result.isPotential, isPotential); |
| + } |
| + |
| + test_methods() { |
| + addTestFile(''' |
| +class A { |
| + foo() {} |
| +} |
| +class B { |
| + foo() {} |
| +} |
| +mainResolved(A a, B b) { |
| + a.foo(1); |
| + b.foo(2); |
| +} |
| +mainUnresolved(a, b) { |
| + a.foo(10); |
| + b.foo(20); |
| +} |
| +'''); |
| + return findMemberReferences('foo').then((_) { |
| + assertHasRef(SearchResultKind.INVOCATION, 'foo(1)', false); |
| + assertHasRef(SearchResultKind.INVOCATION, 'foo(2)', false); |
| + assertHasRef(SearchResultKind.INVOCATION, 'foo(10)', true); |
| + assertHasRef(SearchResultKind.INVOCATION, 'foo(20)', true); |
| + }); |
| + } |
| + |
| + test_fields_explicit() { |
| + addTestFile(''' |
| +class A { |
| + var foo; |
| +} |
| +class B { |
| + var foo; |
| +} |
| +mainResolved(A a, B b) { |
| + a.foo = 1; |
| + b.foo = 2; |
| + print(a.foo); // resolved A |
| + print(b.foo); // resolved B |
| +} |
| +mainUnresolved(a, b) { |
| + a.foo = 10; |
| + b.foo = 20; |
| + print(a.foo); // unresolved A |
| + print(b.foo); // unresolved B |
| +} |
| +'''); |
| + return findMemberReferences('foo').then((_) { |
| + assertHasRef(SearchResultKind.WRITE, 'foo = 1;', false); |
|
Brian Wilkerson
2014/07/16 13:52:37
It would be good to add an example of READ_WRITE.
|
| + assertHasRef(SearchResultKind.WRITE, 'foo = 2;', false); |
| + assertHasRef(SearchResultKind.READ, 'foo); // resolved A', false); |
| + assertHasRef(SearchResultKind.READ, 'foo); // resolved B', false); |
| + assertHasRef(SearchResultKind.WRITE, 'foo = 10;', true); |
| + assertHasRef(SearchResultKind.WRITE, 'foo = 20;', true); |
| + assertHasRef(SearchResultKind.READ, 'foo); // unresolved A', true); |
| + assertHasRef(SearchResultKind.READ, 'foo); // unresolved B', true); |
| + }); |
| + } |
| + |
| + test_fields_implicit() { |
| + addTestFile(''' |
| +class A { |
| + get foo => null; |
| +} |
| +class B { |
| + get foo => null; |
| +} |
| +mainResolved(A a, B b) { |
| + print(a.foo); // resolved A |
| + print(b.foo); // resolved B |
| +} |
| +mainUnresolved(a, b) { |
| + print(a.foo); // unresolved A |
| + print(b.foo); // unresolved B |
| +} |
| +'''); |
| + return findMemberReferences('foo').then((_) { |
| + assertHasRef(SearchResultKind.READ, 'foo); // resolved A', false); |
| + assertHasRef(SearchResultKind.READ, 'foo); // resolved B', false); |
| + assertHasRef(SearchResultKind.READ, 'foo); // unresolved A', true); |
| + assertHasRef(SearchResultKind.READ, 'foo); // unresolved B', true); |
| + }); |
| + } |
| +} |