| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library test.services.completion.util; | 5 library test.services.completion.util; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/analysis_server.dart'; |
| 9 import 'package:analysis_server/src/protocol.dart' as protocol | 10 import 'package:analysis_server/src/protocol.dart' as protocol |
| 10 show Element, ElementKind; | 11 show Element, ElementKind; |
| 11 import 'package:analysis_server/src/protocol.dart' hide Element, ElementKind; | 12 import 'package:analysis_server/src/protocol.dart' hide Element, ElementKind; |
| 12 import 'package:analysis_server/src/services/completion/common_usage_computer.da
rt'; | 13 import 'package:analysis_server/src/services/completion/common_usage_computer.da
rt'; |
| 13 import 'package:analysis_server/src/services/completion/completion_manager.dart'
; | 14 import 'package:analysis_server/src/services/completion/completion_manager.dart'
; |
| 14 import 'package:analysis_server/src/services/completion/completion_target.dart'; | 15 import 'package:analysis_server/src/services/completion/completion_target.dart'; |
| 15 import 'package:analysis_server/src/services/completion/dart_completion_cache.da
rt'; | 16 import 'package:analysis_server/src/services/completion/dart_completion_cache.da
rt'; |
| 16 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; | 17 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; |
| 17 import 'package:analysis_server/src/services/completion/imported_reference_contr
ibutor.dart'; | 18 import 'package:analysis_server/src/services/completion/imported_reference_contr
ibutor.dart'; |
| 18 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; | 19 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; |
| 19 import 'package:analysis_server/src/services/index/index.dart'; | 20 import 'package:analysis_server/src/services/index/index.dart'; |
| 20 import 'package:analysis_server/src/services/index/local_memory_index.dart'; | 21 import 'package:analysis_server/src/services/index/local_memory_index.dart'; |
| 21 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; | 22 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; |
| 22 import 'package:analyzer/src/generated/ast.dart'; | 23 import 'package:analyzer/src/generated/ast.dart'; |
| 23 import 'package:analyzer/src/generated/element.dart'; | 24 import 'package:analyzer/src/generated/element.dart'; |
| 24 import 'package:analyzer/src/generated/engine.dart'; | 25 import 'package:analyzer/src/generated/engine.dart'; |
| 25 import 'package:analyzer/src/generated/source.dart'; | 26 import 'package:analyzer/src/generated/source.dart'; |
| 26 import 'package:unittest/unittest.dart'; | 27 import 'package:unittest/unittest.dart'; |
| 27 | 28 |
| 28 import '../../abstract_context.dart'; | 29 import '../../abstract_context.dart'; |
| 30 import '../../operation/operation_queue_test.dart'; |
| 29 | 31 |
| 30 int suggestionComparator(CompletionSuggestion s1, CompletionSuggestion s2) { | 32 int suggestionComparator(CompletionSuggestion s1, CompletionSuggestion s2) { |
| 31 String c1 = s1.completion.toLowerCase(); | 33 String c1 = s1.completion.toLowerCase(); |
| 32 String c2 = s2.completion.toLowerCase(); | 34 String c2 = s2.completion.toLowerCase(); |
| 33 return c1.compareTo(c2); | 35 return c1.compareTo(c2); |
| 34 } | 36 } |
| 35 | 37 |
| 36 abstract class AbstractCompletionTest extends AbstractContextTest { | 38 abstract class AbstractCompletionTest extends AbstractContextTest { |
| 37 Index index; | 39 Index index; |
| 38 SearchEngineImpl searchEngine; | 40 SearchEngineImpl searchEngine; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 56 void addTestSource(String content) { | 58 void addTestSource(String content) { |
| 57 expect(completionOffset, isNull, reason: 'Call addTestUnit exactly once'); | 59 expect(completionOffset, isNull, reason: 'Call addTestUnit exactly once'); |
| 58 completionOffset = content.indexOf('^'); | 60 completionOffset = content.indexOf('^'); |
| 59 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); | 61 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); |
| 60 int nextOffset = content.indexOf('^', completionOffset + 1); | 62 int nextOffset = content.indexOf('^', completionOffset + 1); |
| 61 expect(nextOffset, equals(-1), reason: 'too many ^'); | 63 expect(nextOffset, equals(-1), reason: 'too many ^'); |
| 62 content = content.substring(0, completionOffset) + | 64 content = content.substring(0, completionOffset) + |
| 63 content.substring(completionOffset + 1); | 65 content.substring(completionOffset + 1); |
| 64 testSource = addSource(testFile, content); | 66 testSource = addSource(testFile, content); |
| 65 cache = new DartCompletionCache(context, testSource); | 67 cache = new DartCompletionCache(context, testSource); |
| 66 request = new DartCompletionRequest(context, searchEngine, testSource, | 68 AnalysisServer server = new AnalysisServerMock(searchEngine: searchEngine); |
| 67 completionOffset, cache, new CompletionPerformance()); | 69 request = new DartCompletionRequest( |
| 70 server, context, testSource, completionOffset, cache); |
| 68 } | 71 } |
| 69 | 72 |
| 70 void assertHasNoParameterInfo(CompletionSuggestion suggestion) { | 73 void assertHasNoParameterInfo(CompletionSuggestion suggestion) { |
| 71 expect(suggestion.parameterNames, isNull); | 74 expect(suggestion.parameterNames, isNull); |
| 72 expect(suggestion.parameterTypes, isNull); | 75 expect(suggestion.parameterTypes, isNull); |
| 73 expect(suggestion.requiredParameterCount, isNull); | 76 expect(suggestion.requiredParameterCount, isNull); |
| 74 expect(suggestion.hasNamedParameters, isNull); | 77 expect(suggestion.hasNamedParameters, isNull); |
| 75 } | 78 } |
| 76 | 79 |
| 77 void assertHasParameterInfo(CompletionSuggestion suggestion) { | 80 void assertHasParameterInfo(CompletionSuggestion suggestion) { |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 assertSuggestSetter(name); | 401 assertSuggestSetter(name); |
| 399 } else { | 402 } else { |
| 400 assertNotSuggested(name); | 403 assertNotSuggested(name); |
| 401 } | 404 } |
| 402 } | 405 } |
| 403 | 406 |
| 404 bool computeFast() { | 407 bool computeFast() { |
| 405 expect(computeFastResult, isNull); | 408 expect(computeFastResult, isNull); |
| 406 _completionManager = new DartCompletionManager(context, searchEngine, | 409 _completionManager = new DartCompletionManager(context, searchEngine, |
| 407 testSource, cache, [contributor], new CommonUsageComputer({})); | 410 testSource, cache, [contributor], new CommonUsageComputer({})); |
| 408 var result = _completionManager.computeFast(request); | 411 var result = |
| 412 _completionManager.computeFast(request, new CompletionPerformance()); |
| 409 expect(request.replacementOffset, isNotNull); | 413 expect(request.replacementOffset, isNotNull); |
| 410 expect(request.replacementLength, isNotNull); | 414 expect(request.replacementLength, isNotNull); |
| 411 computeFastResult = result.isEmpty; | 415 computeFastResult = result.isEmpty; |
| 412 return computeFastResult; | 416 return computeFastResult; |
| 413 } | 417 } |
| 414 | 418 |
| 415 Future computeFull(assertFunction(bool result), {bool fullAnalysis: true}) { | 419 Future computeFull(assertFunction(bool result), {bool fullAnalysis: true}) { |
| 416 if (computeFastResult == null) { | 420 if (computeFastResult == null) { |
| 417 computeFast(); | 421 computeFast(); |
| 418 } | 422 } |
| (...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1792 '/proj/testAB.dart', 'import "package:myBar/bar.dart"; class Foo { }'); | 1796 '/proj/testAB.dart', 'import "package:myBar/bar.dart"; class Foo { }'); |
| 1793 testFile = '/proj/completionTest.dart'; | 1797 testFile = '/proj/completionTest.dart'; |
| 1794 addTestSource('class C {foo(){F^}}'); | 1798 addTestSource('class C {foo(){F^}}'); |
| 1795 computeFast(); | 1799 computeFast(); |
| 1796 return computeFull((bool result) { | 1800 return computeFull((bool result) { |
| 1797 expect(request.replacementOffset, completionOffset - 1); | 1801 expect(request.replacementOffset, completionOffset - 1); |
| 1798 expect(request.replacementLength, 1); | 1802 expect(request.replacementLength, 1); |
| 1799 assertSuggestImportedClass('Foo', | 1803 assertSuggestImportedClass('Foo', |
| 1800 relevance: DART_RELEVANCE_LOW, importUri: 'testAB.dart'); | 1804 relevance: DART_RELEVANCE_LOW, importUri: 'testAB.dart'); |
| 1801 // TODO(danrubel) implement | 1805 // TODO(danrubel) implement |
| 1802 assertSuggestImportedClass('Foo2', | 1806 assertSuggestImportedClass('Foo2', |
| 1803 relevance: DART_RELEVANCE_LOW, importUri: 'package:myBar/bar.dart'); | 1807 relevance: DART_RELEVANCE_LOW, importUri: 'package:myBar/bar.dart'); |
| 1804 assertSuggestImportedClass('Future', | 1808 assertSuggestImportedClass('Future', |
| 1805 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); | 1809 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); |
| 1806 }); | 1810 }); |
| 1807 } | 1811 } |
| 1808 | 1812 |
| 1809 test_CascadeExpression_selector1() { | 1813 test_CascadeExpression_selector1() { |
| 1810 // PropertyAccess CascadeExpression ExpressionStatement Block | 1814 // PropertyAccess CascadeExpression ExpressionStatement Block |
| 1811 addSource('/testB.dart', ''' | 1815 addSource('/testB.dart', ''' |
| 1812 class B { }'''); | 1816 class B { }'''); |
| (...skipping 2529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4342 assertNotSuggested('bar2'); | 4346 assertNotSuggested('bar2'); |
| 4343 assertNotSuggested('_B'); | 4347 assertNotSuggested('_B'); |
| 4344 assertSuggestLocalClass('Y'); | 4348 assertSuggestLocalClass('Y'); |
| 4345 assertSuggestLocalClass('C'); | 4349 assertSuggestLocalClass('C'); |
| 4346 assertSuggestLocalVariable('f', null); | 4350 assertSuggestLocalVariable('f', null); |
| 4347 assertNotSuggested('x'); | 4351 assertNotSuggested('x'); |
| 4348 assertNotSuggested('e'); | 4352 assertNotSuggested('e'); |
| 4349 }); | 4353 }); |
| 4350 } | 4354 } |
| 4351 } | 4355 } |
| OLD | NEW |