| 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/protocol.dart' as protocol show Element, | 9 import 'package:analysis_server/src/protocol.dart' as protocol show Element, |
| 10 ElementKind; | 10 ElementKind; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); | 45 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); |
| 46 int nextOffset = content.indexOf('^', completionOffset + 1); | 46 int nextOffset = content.indexOf('^', completionOffset + 1); |
| 47 expect(nextOffset, equals(-1), reason: 'too many ^'); | 47 expect(nextOffset, equals(-1), reason: 'too many ^'); |
| 48 content = content.substring(0, completionOffset) + | 48 content = content.substring(0, completionOffset) + |
| 49 content.substring(completionOffset + 1); | 49 content.substring(completionOffset + 1); |
| 50 testSource = addSource(testFile, content); | 50 testSource = addSource(testFile, content); |
| 51 request = | 51 request = |
| 52 new DartCompletionRequest(context, searchEngine, testSource, completionO
ffset); | 52 new DartCompletionRequest(context, searchEngine, testSource, completionO
ffset); |
| 53 } | 53 } |
| 54 | 54 |
| 55 void assertNoSuggestions() { |
| 56 expect(request.suggestions, equals(0)); |
| 57 } |
| 58 |
| 55 void assertNotSuggested(String completion) { | 59 void assertNotSuggested(String completion) { |
| 56 CompletionSuggestion suggestion = request.suggestions.firstWhere( | 60 CompletionSuggestion suggestion = request.suggestions.firstWhere( |
| 57 (cs) => cs.completion == completion, | 61 (cs) => cs.completion == completion, |
| 58 orElse: () => null); | 62 orElse: () => null); |
| 59 if (suggestion != null) { | 63 if (suggestion != null) { |
| 60 _failedCompletion( | 64 _failedCompletion( |
| 61 'did not expect completion: $completion\n $suggestion'); | 65 'did not expect completion: $completion\n $suggestion'); |
| 62 } | 66 } |
| 63 } | 67 } |
| 64 | 68 |
| 65 CompletionSuggestion assertSuggest(CompletionSuggestionKind kind, | 69 CompletionSuggestion assertSuggest(CompletionSuggestionKind kind, |
| 66 String completion, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, | 70 String completion, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 67 bool isDeprecated = false, bool isPotential = false]) { | 71 bool isDeprecated = false, bool isPotential = false]) { |
| 68 CompletionSuggestion cs; | 72 CompletionSuggestion cs; |
| 69 request.suggestions.forEach((s) { | 73 request.suggestions.forEach((s) { |
| 70 if (s.completion == completion && s.kind == kind) { | 74 if (s.completion == completion && s.kind == kind) { |
| 71 if (cs == null) { | 75 if (cs == null) { |
| 72 cs = s; | 76 cs = s; |
| 73 } else { | 77 } else { |
| 74 _failedCompletion( | 78 _failedCompletion( |
| 75 'expected exactly one $completion', | 79 'expected exactly one $completion', |
| 76 request.suggestions.where((s) => s.completion == completion)); | 80 request.suggestions.where((s) => s.completion == completion)); |
| 77 } | 81 } |
| 78 } | 82 } |
| 79 }); | 83 }); |
| 80 if (cs == null) { | 84 if (cs == null) { |
| 81 _failedCompletion('expected $completion', request.suggestions); | 85 _failedCompletion('expected $completion $kind', request.suggestions); |
| 82 } | 86 } |
| 83 expect(cs.kind, equals(kind)); | 87 expect(cs.kind, equals(kind)); |
| 84 expect(cs.relevance, equals(relevance)); | 88 expect(cs.relevance, equals(relevance)); |
| 85 expect(cs.selectionOffset, equals(completion.length)); | 89 expect(cs.selectionOffset, equals(completion.length)); |
| 86 expect(cs.selectionLength, equals(0)); | 90 expect(cs.selectionLength, equals(0)); |
| 87 expect(cs.isDeprecated, equals(isDeprecated)); | 91 expect(cs.isDeprecated, equals(isDeprecated)); |
| 88 expect(cs.isPotential, equals(isPotential)); | 92 expect(cs.isPotential, equals(isPotential)); |
| 89 return cs; | 93 return cs; |
| 90 } | 94 } |
| 91 | 95 |
| 92 CompletionSuggestion assertSuggestClass(String name, | 96 CompletionSuggestion assertSuggestClass(String name, |
| 93 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 97 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { |
| 94 CompletionSuggestion cs = | 98 CompletionSuggestion cs = |
| 95 assertSuggest(CompletionSuggestionKind.CLASS, name, relevance); | 99 assertSuggest(CompletionSuggestionKind.CLASS, name, relevance); |
| 96 protocol.Element element = cs.element; | 100 protocol.Element element = cs.element; |
| 97 expect(element, isNotNull); | 101 expect(element, isNotNull); |
| 98 expect(element.kind, equals(protocol.ElementKind.CLASS)); | 102 expect(element.kind, equals(protocol.ElementKind.CLASS)); |
| 99 expect(element.name, equals(name)); | 103 expect(element.name, equals(name)); |
| 100 expect(element.returnType, isNull); | 104 expect(element.returnType, isNull); |
| 101 return cs; | 105 return cs; |
| 102 } | 106 } |
| 103 | 107 |
| 108 CompletionSuggestion assertSuggestConstructor(String name, |
| 109 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { |
| 110 CompletionSuggestion cs = |
| 111 assertSuggest(CompletionSuggestionKind.CONSTRUCTOR, name, relevance); |
| 112 protocol.Element element = cs.element; |
| 113 expect(element, isNotNull); |
| 114 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); |
| 115 expect(element.name, equals(name)); |
| 116 expect(element.returnType, isNull); |
| 117 return cs; |
| 118 } |
| 119 |
| 104 CompletionSuggestion assertSuggestFunction(String name, String returnType, | 120 CompletionSuggestion assertSuggestFunction(String name, String returnType, |
| 105 bool isDeprecated, [CompletionRelevance relevance = | 121 bool isDeprecated, [CompletionRelevance relevance = |
| 106 CompletionRelevance.DEFAULT]) { | 122 CompletionRelevance.DEFAULT]) { |
| 107 CompletionSuggestion cs = assertSuggest( | 123 CompletionSuggestion cs = assertSuggest( |
| 108 CompletionSuggestionKind.FUNCTION, | 124 CompletionSuggestionKind.FUNCTION, |
| 109 name, | 125 name, |
| 110 relevance, | 126 relevance, |
| 111 isDeprecated); | 127 isDeprecated); |
| 112 expect(cs.returnType, equals(returnType)); | 128 expect(cs.returnType, equals(returnType)); |
| 113 protocol.Element element = cs.element; | 129 protocol.Element element = cs.element; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 sb.write('\n in'); | 331 sb.write('\n in'); |
| 316 AstNode node = completionNode; | 332 AstNode node = completionNode; |
| 317 while (node != null) { | 333 while (node != null) { |
| 318 sb.write('\n ${node.runtimeType}'); | 334 sb.write('\n ${node.runtimeType}'); |
| 319 node = node.parent; | 335 node = node.parent; |
| 320 } | 336 } |
| 321 } | 337 } |
| 322 fail(sb.toString()); | 338 fail(sb.toString()); |
| 323 } | 339 } |
| 324 } | 340 } |
| OLD | NEW |