blob: d882319ce051effc331384ff5a9f7f0b7b76222f [file]
// Copyright (c) 2017, 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.
import 'package:analysis_server/plugin/protocol/protocol.dart' as server;
import 'package:analysis_server/src/plugin/result_converter.dart';
import 'package:analysis_server/src/protocol/protocol_internal.dart' as server;
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'protocol_test_utilities.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(ResultConverterTest);
});
}
@reflectiveTest
class ResultConverterTest extends ProtocolTestUtilities {
static const List<String> strings = const <String>[
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n'
];
ResultConverter converter = new ResultConverter();
void test_convertAnalysisError() {
plugin.AnalysisError initial = pluginAnalysisError(0, 0);
server.AnalysisError expected = serverAnalysisError(0, 0);
expect(converter.convertAnalysisError(initial), expected);
}
void test_convertAnalysisErrorFixes() {
plugin.AnalysisErrorFixes initial = new plugin.AnalysisErrorFixes(
pluginAnalysisError(0, 0),
fixes: <plugin.PrioritizedSourceChange>[
new plugin.PrioritizedSourceChange(100, pluginSourceChange(4, 4))
]);
server.AnalysisErrorFixes expected = new server.AnalysisErrorFixes(
serverAnalysisError(0, 0),
fixes: <server.SourceChange>[serverSourceChange(4, 4)]);
expect(converter.convertAnalysisErrorFixes(initial), expected);
}
void test_convertAnalysisNavigationParams() {
plugin.AnalysisNavigationParams initial =
new plugin.AnalysisNavigationParams('a.dart', <plugin.NavigationRegion>[
new plugin.NavigationRegion(1, 2, <int>[3, 4])
], <plugin.NavigationTarget>[
new plugin.NavigationTarget(plugin.ElementKind.FIELD, 5, 6, 7, 8, 9)
], <String>[
'a',
'b'
]);
server.AnalysisNavigationParams expected =
new server.AnalysisNavigationParams('a.dart', <server.NavigationRegion>[
new server.NavigationRegion(1, 2, <int>[3, 4])
], <server.NavigationTarget>[
new server.NavigationTarget(server.ElementKind.FIELD, 5, 6, 7, 8, 9)
], <String>[
'a',
'b'
]);
expect(converter.convertAnalysisNavigationParams(initial), expected);
}
void test_convertCompletionSuggestion() {
plugin.CompletionSuggestion initial = new plugin.CompletionSuggestion(
plugin.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false,
docSummary: 'b',
docComplete: 'c',
declaringType: 'd',
element: pluginElement(4, 4),
returnType: 'i',
parameterNames: <String>['j', 'k'],
parameterTypes: <String>[],
requiredParameterCount: 9,
hasNamedParameters: true,
parameterName: 'l',
parameterType: 'm',
importUri: 'n');
server.CompletionSuggestion expected = new server.CompletionSuggestion(
server.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false,
docSummary: 'b',
docComplete: 'c',
declaringType: 'd',
element: serverElement(4, 4),
returnType: 'i',
parameterNames: <String>['j', 'k'],
parameterTypes: <String>[],
requiredParameterCount: 9,
hasNamedParameters: true,
parameterName: 'l',
parameterType: 'm',
importUri: 'n');
expect(converter.convertCompletionSuggestion(initial), expected);
}
void test_convertEditGetRefactoringResult_inlineMethod() {
plugin.EditGetRefactoringResult initial =
new plugin.EditGetRefactoringResult(
<plugin.RefactoringProblem>[pluginRefactoringProblem(0, 0)],
<plugin.RefactoringProblem>[pluginRefactoringProblem(2, 4)],
<plugin.RefactoringProblem>[pluginRefactoringProblem(4, 8)],
feedback:
new plugin.InlineMethodFeedback('a', true, className: 'b'),
change: pluginSourceChange(6, 12),
potentialEdits: <String>['f']);
server.EditGetRefactoringResult expected =
new server.EditGetRefactoringResult(
<server.RefactoringProblem>[serverRefactoringProblem(0, 0)],
<server.RefactoringProblem>[serverRefactoringProblem(2, 4)],
<server.RefactoringProblem>[serverRefactoringProblem(4, 8)],
feedback:
new server.InlineMethodFeedback('a', true, className: 'b'),
change: serverSourceChange(6, 12),
potentialEdits: <String>['f']);
expect(
converter.convertEditGetRefactoringResult(
plugin.RefactoringKind.INLINE_METHOD, initial),
expected);
}
void test_convertEditGetRefactoringResult_moveFile() {
plugin.EditGetRefactoringResult initial =
new plugin.EditGetRefactoringResult(
<plugin.RefactoringProblem>[pluginRefactoringProblem(0, 0)],
<plugin.RefactoringProblem>[pluginRefactoringProblem(2, 4)],
<plugin.RefactoringProblem>[pluginRefactoringProblem(4, 8)],
feedback: new plugin.MoveFileFeedback(),
change: pluginSourceChange(6, 12),
potentialEdits: <String>['f']);
server.EditGetRefactoringResult expected =
new server.EditGetRefactoringResult(
<server.RefactoringProblem>[serverRefactoringProblem(0, 0)],
<server.RefactoringProblem>[serverRefactoringProblem(2, 4)],
<server.RefactoringProblem>[serverRefactoringProblem(4, 8)],
change: serverSourceChange(6, 12),
potentialEdits: <String>['f']);
expect(
converter.convertEditGetRefactoringResult(
plugin.RefactoringKind.MOVE_FILE, initial),
expected);
}
void test_convertFoldingRegion() {
plugin.FoldingRegion initial = pluginFoldingRegion(1, 2);
server.FoldingRegion expected = serverFoldingRegion(1, 2);
expect(converter.convertFoldingRegion(initial), expected);
}
void test_convertHighlightRegion() {
plugin.HighlightRegion initial = pluginHighlightRegion(1, 2);
server.HighlightRegion expected = serverHighlightRegion(1, 2);
expect(converter.convertHighlightRegion(initial), expected);
}
void test_convertOccurrences() {
plugin.Occurrences initial = pluginOccurrences(1, 1);
server.Occurrences expected = serverOccurrences(1, 1);
expect(converter.convertOccurrences(initial), expected);
}
void test_convertOutline() {
plugin.Outline initial = new plugin.Outline(pluginElement(1, 1), 6, 7,
children: <plugin.Outline>[
new plugin.Outline(pluginElement(6, 8), 14, 15)
]);
server.Outline expected = new server.Outline(serverElement(1, 1), 6, 7,
children: <server.Outline>[
new server.Outline(serverElement(6, 8), 14, 15)
]);
expect(converter.convertOutline(initial), expected);
}
void test_convertPrioritizedSourceChange() {
plugin.PrioritizedSourceChange initial =
new plugin.PrioritizedSourceChange(100, pluginSourceChange(0, 0));
server.SourceChange expected = serverSourceChange(0, 0);
expect(converter.convertPrioritizedSourceChange(initial), expected);
}
void test_convertRefactoringFeedback_convertGetterToMethod() {
plugin.ConvertGetterToMethodFeedback initial =
new plugin.ConvertGetterToMethodFeedback();
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.CONVERT_GETTER_TO_METHOD, initial),
isNull);
}
void test_convertRefactoringFeedback_convertMethodToGetter() {
plugin.ConvertMethodToGetterFeedback initial =
new plugin.ConvertMethodToGetterFeedback();
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.CONVERT_METHOD_TO_GETTER, initial),
isNull);
}
void test_convertRefactoringFeedback_extractLocalVariable() {
plugin.ExtractLocalVariableFeedback initial =
new plugin.ExtractLocalVariableFeedback(
<String>['a', 'b'], <int>[1, 2], <int>[3],
coveringExpressionOffsets: <int>[4, 5],
coveringExpressionLengths: <int>[6]);
server.ExtractLocalVariableFeedback expected =
new server.ExtractLocalVariableFeedback(
<String>['a', 'b'], <int>[1, 2], <int>[3],
coveringExpressionOffsets: <int>[4, 5],
coveringExpressionLengths: <int>[6]);
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.EXTRACT_LOCAL_VARIABLE, initial),
expected);
}
void test_convertRefactoringFeedback_extractMethod() {
plugin.ExtractMethodFeedback initial = new plugin.ExtractMethodFeedback(
1,
2,
'a',
<String>['b', 'c'],
true,
<plugin.RefactoringMethodParameter>[
new plugin.RefactoringMethodParameter(
plugin.RefactoringMethodParameterKind.NAMED, 'd', 'e',
id: 'f', parameters: 'g')
],
<int>[3, 4],
<int>[5, 6]);
server.ExtractMethodFeedback expected = new server.ExtractMethodFeedback(
1,
2,
'a',
<String>['b', 'c'],
true,
<server.RefactoringMethodParameter>[
new server.RefactoringMethodParameter(
server.RefactoringMethodParameterKind.NAMED, 'd', 'e',
id: 'f', parameters: 'g')
],
<int>[3, 4],
<int>[5, 6]);
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.EXTRACT_METHOD, initial),
expected);
}
void test_convertRefactoringFeedback_inlineLocalVariable() {
plugin.InlineLocalVariableFeedback initial =
new plugin.InlineLocalVariableFeedback('a', 1);
server.InlineLocalVariableFeedback expected =
new server.InlineLocalVariableFeedback('a', 1);
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.INLINE_LOCAL_VARIABLE, initial),
expected);
}
void test_convertRefactoringFeedback_inlineMethod() {
plugin.InlineMethodFeedback initial =
new plugin.InlineMethodFeedback('a', true, className: 'b');
server.InlineMethodFeedback expected =
new server.InlineMethodFeedback('a', true, className: 'b');
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.INLINE_METHOD, initial),
expected);
}
void test_convertRefactoringFeedback_moveFile() {
plugin.MoveFileFeedback initial = new plugin.MoveFileFeedback();
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.MOVE_FILE, initial),
isNull);
}
void test_convertRefactoringFeedback_rename() {
plugin.RenameFeedback initial = new plugin.RenameFeedback(1, 2, 'a', 'b');
server.RenameFeedback expected = new server.RenameFeedback(1, 2, 'a', 'b');
expect(
converter.convertRefactoringFeedback(
plugin.RefactoringKind.RENAME, initial),
expected);
}
void test_convertRefactoringKind() {
Map<plugin.RefactoringKind, server.RefactoringKind> kindMap =
<plugin.RefactoringKind, server.RefactoringKind>{
plugin.RefactoringKind.CONVERT_GETTER_TO_METHOD:
server.RefactoringKind.CONVERT_GETTER_TO_METHOD,
plugin.RefactoringKind.CONVERT_METHOD_TO_GETTER:
server.RefactoringKind.CONVERT_METHOD_TO_GETTER,
plugin.RefactoringKind.EXTRACT_LOCAL_VARIABLE:
server.RefactoringKind.EXTRACT_LOCAL_VARIABLE,
plugin.RefactoringKind.EXTRACT_METHOD:
server.RefactoringKind.EXTRACT_METHOD,
plugin.RefactoringKind.INLINE_LOCAL_VARIABLE:
server.RefactoringKind.INLINE_LOCAL_VARIABLE,
plugin.RefactoringKind.INLINE_METHOD:
server.RefactoringKind.INLINE_METHOD,
plugin.RefactoringKind.MOVE_FILE: server.RefactoringKind.MOVE_FILE,
plugin.RefactoringKind.RENAME: server.RefactoringKind.RENAME,
plugin.RefactoringKind.SORT_MEMBERS: server.RefactoringKind.SORT_MEMBERS,
};
kindMap.forEach(
(plugin.RefactoringKind pluginKind, server.RefactoringKind serverKind) {
expect(converter.convertRefactoringKind(pluginKind), serverKind);
});
}
void test_convertSourceChange() {
plugin.SourceChange initial = pluginSourceChange(0, 0);
server.SourceChange expected = serverSourceChange(0, 0);
expect(converter.convertSourceChange(initial), expected);
}
}