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

Side by Side Diff: pkg/analysis_server/test/services/correction/assist_test.dart

Issue 969113002: Reformat (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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.correction.assist; 5 library test.services.correction.assist;
6 6
7 import 'package:analysis_server/src/protocol.dart'; 7 import 'package:analysis_server/src/protocol.dart';
8 import 'package:analysis_server/src/services/correction/assist.dart'; 8 import 'package:analysis_server/src/services/correction/assist.dart';
9 import 'package:analyzer/src/generated/source.dart'; 9 import 'package:analyzer/src/generated/source.dart';
10 import 'package:unittest/unittest.dart'; 10 import 'package:unittest/unittest.dart';
11 11
12 import '../../abstract_single_unit.dart'; 12 import '../../abstract_single_unit.dart';
13 import '../../reflective_tests.dart'; 13 import '../../reflective_tests.dart';
14 14
15
16 main() { 15 main() {
17 groupSep = ' | '; 16 groupSep = ' | ';
18 runReflectiveTests(AssistProcessorTest); 17 runReflectiveTests(AssistProcessorTest);
19 } 18 }
20 19
21
22 @reflectiveTest 20 @reflectiveTest
23 class AssistProcessorTest extends AbstractSingleUnitTest { 21 class AssistProcessorTest extends AbstractSingleUnitTest {
24 int offset; 22 int offset;
25 int length; 23 int length;
26 24
27 Assist assist; 25 Assist assist;
28 SourceChange change; 26 SourceChange change;
29 String resultCode; 27 String resultCode;
30 LinkedEditGroup linkedPositionGroup; 28 LinkedEditGroup linkedPositionGroup;
31 29
32 /** 30 /**
33 * Asserts that there is an [Assist] of the given [kind] at [offset] which 31 * Asserts that there is an [Assist] of the given [kind] at [offset] which
34 * produces the [expected] code when applied to [testCode]. 32 * produces the [expected] code when applied to [testCode].
35 */ 33 */
36 void assertHasAssist(AssistKind kind, String expected) { 34 void assertHasAssist(AssistKind kind, String expected) {
37 assist = _assertHasAssist(kind); 35 assist = _assertHasAssist(kind);
38 change = assist.change; 36 change = assist.change;
39 // apply to "file" 37 // apply to "file"
40 List<SourceFileEdit> fileEdits = change.edits; 38 List<SourceFileEdit> fileEdits = change.edits;
41 expect(fileEdits, hasLength(1)); 39 expect(fileEdits, hasLength(1));
42 resultCode = SourceEdit.applySequence(testCode, change.edits[0].edits); 40 resultCode = SourceEdit.applySequence(testCode, change.edits[0].edits);
43 // verify 41 // verify
44 expect(resultCode, expected); 42 expect(resultCode, expected);
45 } 43 }
46 44
47 /** 45 /**
48 * Calls [assertHasAssist] at the offset of [offsetSearch] in [testCode]. 46 * Calls [assertHasAssist] at the offset of [offsetSearch] in [testCode].
49 */ 47 */
50 void assertHasAssistAt(String offsetSearch, AssistKind kind, 48 void assertHasAssistAt(
51 String expected) { 49 String offsetSearch, AssistKind kind, String expected) {
52 offset = findOffset(offsetSearch); 50 offset = findOffset(offsetSearch);
53 assertHasAssist(kind, expected); 51 assertHasAssist(kind, expected);
54 } 52 }
55 53
56 /** 54 /**
57 * Asserts that there is no [Assist] of the given [kind] at [offset]. 55 * Asserts that there is no [Assist] of the given [kind] at [offset].
58 */ 56 */
59 void assertNoAssist(AssistKind kind) { 57 void assertNoAssist(AssistKind kind) {
60 List<Assist> assists = computeAssists(testUnit, offset, length); 58 List<Assist> assists = computeAssists(testUnit, offset, length);
61 for (Assist assist in assists) { 59 for (Assist assist in assists) {
(...skipping 17 matching lines...) Expand all
79 } 77 }
80 78
81 List<Position> expectedPositions(List<String> patterns) { 79 List<Position> expectedPositions(List<String> patterns) {
82 List<Position> positions = <Position>[]; 80 List<Position> positions = <Position>[];
83 patterns.forEach((String search) { 81 patterns.forEach((String search) {
84 positions.add(expectedPosition(search)); 82 positions.add(expectedPosition(search));
85 }); 83 });
86 return positions; 84 return positions;
87 } 85 }
88 86
89 List<LinkedEditSuggestion> expectedSuggestions(LinkedEditSuggestionKind kind, 87 List<LinkedEditSuggestion> expectedSuggestions(
90 List<String> values) { 88 LinkedEditSuggestionKind kind, List<String> values) {
91 return values.map((value) { 89 return values.map((value) {
92 return new LinkedEditSuggestion(value, kind); 90 return new LinkedEditSuggestion(value, kind);
93 }).toList(); 91 }).toList();
94 } 92 }
95 93
96 void setUp() { 94 void setUp() {
97 super.setUp(); 95 super.setUp();
98 offset = 0; 96 offset = 0;
99 length = 0; 97 length = 0;
100 } 98 }
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 } 586 }
589 List<int> readBytes() => <int>[]; 587 List<int> readBytes() => <int>[];
590 '''); 588 ''');
591 assertHasAssistAt('readBytes();', AssistKind.ASSIGN_TO_LOCAL_VARIABLE, ''' 589 assertHasAssistAt('readBytes();', AssistKind.ASSIGN_TO_LOCAL_VARIABLE, '''
592 main() { 590 main() {
593 List<int> bytes; 591 List<int> bytes;
594 var readBytes = readBytes(); 592 var readBytes = readBytes();
595 } 593 }
596 List<int> readBytes() => <int>[]; 594 List<int> readBytes() => <int>[];
597 '''); 595 ''');
598 _assertLinkedGroup( 596 _assertLinkedGroup(change.linkedEditGroups[0], [
599 change.linkedEditGroups[0], 597 'readBytes = '
600 ['readBytes = '], 598 ], expectedSuggestions(
601 expectedSuggestions( 599 LinkedEditSuggestionKind.VARIABLE, ['list', 'bytes2', 'readBytes']));
602 LinkedEditSuggestionKind.VARIABLE,
603 ['list', 'bytes2', 'readBytes']));
604 } 600 }
605 601
606 void test_assignToLocalVariable_alreadyAssignment() { 602 void test_assignToLocalVariable_alreadyAssignment() {
607 resolveTestUnit(''' 603 resolveTestUnit('''
608 main() { 604 main() {
609 var vvv; 605 var vvv;
610 vvv = 42; 606 vvv = 42;
611 } 607 }
612 '''); 608 ''');
613 assertNoAssistAt('vvv =', AssistKind.ASSIGN_TO_LOCAL_VARIABLE); 609 assertNoAssistAt('vvv =', AssistKind.ASSIGN_TO_LOCAL_VARIABLE);
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 } 778 }
783 779
784 void test_convertToExpressionBody_OK_method_onBlock() { 780 void test_convertToExpressionBody_OK_method_onBlock() {
785 resolveTestUnit(''' 781 resolveTestUnit('''
786 class A { 782 class A {
787 m() { // marker 783 m() { // marker
788 return 42; 784 return 42;
789 } 785 }
790 } 786 }
791 '''); 787 ''');
792 assertHasAssistAt( 788 assertHasAssistAt('{ // marker', AssistKind.CONVERT_INTO_EXPRESSION_BODY,
793 '{ // marker',
794 AssistKind.CONVERT_INTO_EXPRESSION_BODY,
795 ''' 789 '''
796 class A { 790 class A {
797 m() => 42; 791 m() => 42;
798 } 792 }
799 '''); 793 ''');
800 } 794 }
801 795
802 void test_convertToExpressionBody_OK_topFunction_onReturnStatement() { 796 void test_convertToExpressionBody_OK_topFunction_onReturnStatement() {
803 resolveTestUnit(''' 797 resolveTestUnit('''
804 fff() { 798 fff() {
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 1 + 2 - 3 + 4; 1129 1 + 2 - 3 + 4;
1136 } 1130 }
1137 '''); 1131 ''');
1138 assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' 1132 assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, '''
1139 main() { 1133 main() {
1140 2 + 1 - 3 + 4; 1134 2 + 1 - 3 + 4;
1141 } 1135 }
1142 '''); 1136 ''');
1143 } 1137 }
1144 1138
1145 void 1139 void test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterFirs t() {
1146 test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterFirst () {
1147 resolveTestUnit(''' 1140 resolveTestUnit('''
1148 main() { 1141 main() {
1149 1 + 2 + 3; 1142 1 + 2 + 3;
1150 } 1143 }
1151 '''); 1144 ''');
1152 assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' 1145 assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, '''
1153 main() { 1146 main() {
1154 2 + 3 + 1; 1147 2 + 3 + 1;
1155 } 1148 }
1156 '''); 1149 ''');
1157 } 1150 }
1158 1151
1159 void 1152 void test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterSeco nd() {
1160 test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterSecon d() {
1161 resolveTestUnit(''' 1153 resolveTestUnit('''
1162 main() { 1154 main() {
1163 1 + 2 + 3; 1155 1 + 2 + 3;
1164 } 1156 }
1165 '''); 1157 ''');
1166 assertHasAssistAt('+ 3', AssistKind.EXCHANGE_OPERANDS, ''' 1158 assertHasAssistAt('+ 3', AssistKind.EXCHANGE_OPERANDS, '''
1167 main() { 1159 main() {
1168 3 + 1 + 2; 1160 3 + 1 + 2;
1169 } 1161 }
1170 '''); 1162 ''');
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 String expected = ''' 1357 String expected = '''
1366 class MyTypeName {} 1358 class MyTypeName {}
1367 main(p) { 1359 main(p) {
1368 if (p is MyTypeName) { 1360 if (p is MyTypeName) {
1369 MyTypeName myTypeName = p; 1361 MyTypeName myTypeName = p;
1370 } 1362 }
1371 p = null; 1363 p = null;
1372 } 1364 }
1373 '''; 1365 ''';
1374 assertHasAssistAt( 1366 assertHasAssistAt(
1375 'is MyType', 1367 'is MyType', AssistKind.INTRODUCE_LOCAL_CAST_TYPE, expected);
1376 AssistKind.INTRODUCE_LOCAL_CAST_TYPE, 1368 _assertLinkedGroup(change.linkedEditGroups[0], [
1377 expected); 1369 'myTypeName = '
1378 _assertLinkedGroup( 1370 ], expectedSuggestions(
1379 change.linkedEditGroups[0], 1371 LinkedEditSuggestionKind.VARIABLE, ['myTypeName', 'typeName', 'name']));
1380 ['myTypeName = '],
1381 expectedSuggestions(
1382 LinkedEditSuggestionKind.VARIABLE,
1383 ['myTypeName', 'typeName', 'name']));
1384 // another good location 1372 // another good location
1385 assertHasAssistAt('if (p', AssistKind.INTRODUCE_LOCAL_CAST_TYPE, expected); 1373 assertHasAssistAt('if (p', AssistKind.INTRODUCE_LOCAL_CAST_TYPE, expected);
1386 } 1374 }
1387 1375
1388 void test_introduceLocalTestedType_OK_while() { 1376 void test_introduceLocalTestedType_OK_while() {
1389 resolveTestUnit(''' 1377 resolveTestUnit('''
1390 main(p) { 1378 main(p) {
1391 while (p is String) { 1379 while (p is String) {
1392 } 1380 }
1393 p = null; 1381 p = null;
1394 } 1382 }
1395 '''); 1383 ''');
1396 String expected = ''' 1384 String expected = '''
1397 main(p) { 1385 main(p) {
1398 while (p is String) { 1386 while (p is String) {
1399 String s = p; 1387 String s = p;
1400 } 1388 }
1401 p = null; 1389 p = null;
1402 } 1390 }
1403 '''; 1391 ''';
1404 assertHasAssistAt( 1392 assertHasAssistAt(
1405 'is String', 1393 'is String', AssistKind.INTRODUCE_LOCAL_CAST_TYPE, expected);
1406 AssistKind.INTRODUCE_LOCAL_CAST_TYPE,
1407 expected);
1408 assertHasAssistAt( 1394 assertHasAssistAt(
1409 'while (p', 1395 'while (p', AssistKind.INTRODUCE_LOCAL_CAST_TYPE, expected);
1410 AssistKind.INTRODUCE_LOCAL_CAST_TYPE,
1411 expected);
1412 } 1396 }
1413 1397
1414 void test_invalidSelection() { 1398 void test_invalidSelection() {
1415 resolveTestUnit(''); 1399 resolveTestUnit('');
1416 List<Assist> assists = computeAssists(testUnit, -1, 0); 1400 List<Assist> assists = computeAssists(testUnit, -1, 0);
1417 expect(assists, isEmpty); 1401 expect(assists, isEmpty);
1418 } 1402 }
1419 1403
1420 void test_invertIfStatement_blocks() { 1404 void test_invertIfStatement_blocks() {
1421 resolveTestUnit(''' 1405 resolveTestUnit('''
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
2021 void test_joinVariableDeclaration_onDeclaration_wrong_lastStatement() { 2005 void test_joinVariableDeclaration_onDeclaration_wrong_lastStatement() {
2022 resolveTestUnit(''' 2006 resolveTestUnit('''
2023 main() { 2007 main() {
2024 if (true) 2008 if (true)
2025 var v; 2009 var v;
2026 } 2010 }
2027 '''); 2011 ''');
2028 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); 2012 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION);
2029 } 2013 }
2030 2014
2031 void 2015 void test_joinVariableDeclaration_onDeclaration_wrong_nextNotAssignmentExpress ion() {
2032 test_joinVariableDeclaration_onDeclaration_wrong_nextNotAssignmentExpressi on() {
2033 resolveTestUnit(''' 2016 resolveTestUnit('''
2034 main() { 2017 main() {
2035 var v; 2018 var v;
2036 42; 2019 42;
2037 } 2020 }
2038 '''); 2021 ''');
2039 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); 2022 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION);
2040 } 2023 }
2041 2024
2042 void 2025 void test_joinVariableDeclaration_onDeclaration_wrong_nextNotExpressionStateme nt() {
2043 test_joinVariableDeclaration_onDeclaration_wrong_nextNotExpressionStatemen t() {
2044 resolveTestUnit(''' 2026 resolveTestUnit('''
2045 main() { 2027 main() {
2046 var v; 2028 var v;
2047 if (true) return; 2029 if (true) return;
2048 } 2030 }
2049 '''); 2031 ''');
2050 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); 2032 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION);
2051 } 2033 }
2052 2034
2053 void 2035 void test_joinVariableDeclaration_onDeclaration_wrong_nextNotPureAssignment() {
2054 test_joinVariableDeclaration_onDeclaration_wrong_nextNotPureAssignment() {
2055 resolveTestUnit(''' 2036 resolveTestUnit('''
2056 main() { 2037 main() {
2057 var v; 2038 var v;
2058 v += 1; 2039 v += 1;
2059 } 2040 }
2060 '''); 2041 ''');
2061 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); 2042 assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION);
2062 } 2043 }
2063 2044
2064 void test_joinVariableDeclaration_onDeclaration_wrong_notOneVariable() { 2045 void test_joinVariableDeclaration_onDeclaration_wrong_notOneVariable() {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2136 } 2117 }
2137 '''); 2118 ''');
2138 } 2119 }
2139 2120
2140 void test_replaceConditionalWithIfElse_OK_return() { 2121 void test_replaceConditionalWithIfElse_OK_return() {
2141 resolveTestUnit(''' 2122 resolveTestUnit('''
2142 main() { 2123 main() {
2143 return true ? 111 : 222; 2124 return true ? 111 : 222;
2144 } 2125 }
2145 '''); 2126 ''');
2146 assertHasAssistAt( 2127 assertHasAssistAt('return ', AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE,
2147 'return ',
2148 AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE,
2149 ''' 2128 '''
2150 main() { 2129 main() {
2151 if (true) { 2130 if (true) {
2152 return 111; 2131 return 111;
2153 } else { 2132 } else {
2154 return 222; 2133 return 222;
2155 } 2134 }
2156 } 2135 }
2157 '''); 2136 ''');
2158 } 2137 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 resolveTestUnit(''' 2174 resolveTestUnit('''
2196 main() { 2175 main() {
2197 int vvv; 2176 int vvv;
2198 if (true) { 2177 if (true) {
2199 vvv = 111; 2178 vvv = 111;
2200 } else { 2179 } else {
2201 vvv = 222; 2180 vvv = 222;
2202 } 2181 }
2203 } 2182 }
2204 '''); 2183 ''');
2205 assertHasAssistAt( 2184 assertHasAssistAt('if (true)', AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL,
2206 'if (true)',
2207 AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL,
2208 ''' 2185 '''
2209 main() { 2186 main() {
2210 int vvv; 2187 int vvv;
2211 vvv = true ? 111 : 222; 2188 vvv = true ? 111 : 222;
2212 } 2189 }
2213 '''); 2190 ''');
2214 } 2191 }
2215 2192
2216 void test_replaceIfElseWithConditional_OK_return() { 2193 void test_replaceIfElseWithConditional_OK_return() {
2217 resolveTestUnit(''' 2194 resolveTestUnit('''
2218 main() { 2195 main() {
2219 if (true) { 2196 if (true) {
2220 return 111; 2197 return 111;
2221 } else { 2198 } else {
2222 return 222; 2199 return 222;
2223 } 2200 }
2224 } 2201 }
2225 '''); 2202 ''');
2226 assertHasAssistAt( 2203 assertHasAssistAt('if (true)', AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL,
2227 'if (true)',
2228 AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL,
2229 ''' 2204 '''
2230 main() { 2205 main() {
2231 return true ? 111 : 222; 2206 return true ? 111 : 222;
2232 } 2207 }
2233 '''); 2208 ''');
2234 } 2209 }
2235 2210
2236 void test_replaceIfElseWithConditional_wrong_expressionVsReturn() { 2211 void test_replaceIfElseWithConditional_wrong_expressionVsReturn() {
2237 resolveTestUnit(''' 2212 resolveTestUnit('''
2238 main() { 2213 main() {
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
2657 positions.add(new Position(testFile, offset)); 2632 positions.add(new Position(testFile, offset));
2658 } 2633 }
2659 return positions; 2634 return positions;
2660 } 2635 }
2661 2636
2662 void _setStartEndSelection() { 2637 void _setStartEndSelection() {
2663 offset = findOffset('// start\n') + '// start\n'.length; 2638 offset = findOffset('// start\n') + '// start\n'.length;
2664 length = findOffset('// end') - offset; 2639 length = findOffset('// end') - offset;
2665 } 2640 }
2666 } 2641 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698