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

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

Issue 485083004: Make RefactoringStatus a collection of generated RefactoringProblems. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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.status; 5 library test.services.correction.status;
6 6
7 import 'package:analysis_server/src/services/correction/status.dart'; 7 import 'package:analysis_server/src/services/correction/status.dart';
8 import 'package:analysis_server/src/services/search/search_engine.dart'; 8 import 'package:analysis_server/src/services/search/search_engine.dart';
9 import 'package:analysis_server/src/services/correction/source_range.dart'; 9 import 'package:analysis_server/src/services/correction/source_range.dart';
10 import 'package:analysis_testing/abstract_single_unit.dart'; 10 import 'package:analysis_testing/abstract_single_unit.dart';
11 import 'package:analysis_testing/reflective_tests.dart'; 11 import 'package:analysis_testing/reflective_tests.dart';
12 import 'package:analyzer/src/generated/ast.dart'; 12 import 'package:analyzer/src/generated/ast.dart';
13 import 'package:analyzer/src/generated/element.dart'; 13 import 'package:analyzer/src/generated/element.dart';
14 import 'package:analyzer/src/generated/source.dart'; 14 import 'package:analyzer/src/generated/source.dart';
15 import 'package:typed_mock/typed_mock.dart';
16 import 'package:unittest/unittest.dart'; 15 import 'package:unittest/unittest.dart';
16 import 'package:analysis_server/src/protocol2.dart' show Location,
17 RefactoringProblem, RefactoringProblemSeverity;
17 18
18 19
19 main() { 20 main() {
20 groupSep = ' | '; 21 groupSep = ' | ';
21 runReflectiveTests(RefactoringStatusContextTest); 22 runReflectiveTests(RefactoringLocationTest);
22 runReflectiveTests(RefactoringStatusEntryTest);
23 runReflectiveTests(RefactoringStatusTest); 23 runReflectiveTests(RefactoringStatusTest);
24 } 24 }
25 25
26 26
27 @ReflectiveTestCase() 27 @ReflectiveTestCase()
28 class RefactoringStatusContextTest extends AbstractSingleUnitTest { 28 class RefactoringLocationTest extends AbstractSingleUnitTest {
29 void test_new_forElement() { 29 void test_createLocation_forElement() {
30 resolveTestUnit('class MyClass {}'); 30 resolveTestUnit('class MyClass {}');
31 Element element = findElement('MyClass'); 31 Element element = findElement('MyClass');
32 var statusContext = new RefactoringStatusContext.forElement(element); 32 // check
33 // access 33 Location location = createLocation_forElement(element);
34 expect(statusContext.context, context); 34 expect(location.file, '/test.dart');
35 expect(statusContext.source, testSource); 35 expect(location.offset, 6);
36 expect( 36 expect(location.length, 7);
37 statusContext.range, 37 expect(location.startLine, 1);
38 rangeStartLength(element.nameOffset, 'MyClass'.length)); 38 expect(location.startColumn, 7);
39 } 39 }
40 40
41 void test_new_forMatch() { 41 void test_createLocation_forMatch() {
42 resolveTestUnit('class MyClass {}'); 42 resolveTestUnit('class MyClass {}');
43 Element element = findElement('MyClass'); 43 Element element = findElement('MyClass');
44 SourceRange range = rangeElementName(element); 44 SourceRange range = rangeElementName(element);
45 SearchMatch match = new SearchMatch(null, element, range, true, false); 45 SearchMatch match = new SearchMatch(null, element, range, true, false);
46 var statusContext = new RefactoringStatusContext.forMatch(match); 46 // check
47 // access 47 Location location = createLocation_forMatch(match);
48 expect(statusContext.context, context); 48 expect(location.file, '/test.dart');
49 expect(statusContext.source, testSource); 49 expect(location.offset, range.offset);
50 expect(statusContext.range, range); 50 expect(location.length, range.length);
51 } 51 }
52 52
53 void test_new_forNode() { 53 void test_createLocation_forNode() {
54 resolveTestUnit(''' 54 resolveTestUnit('''
55 main() { 55 main() {
56 } 56 }
57 '''); 57 ''');
58 AstNode node = findNodeAtString('main'); 58 AstNode node = findNodeAtString('main');
59 var statusContext = new RefactoringStatusContext.forNode(node); 59 // check
60 // access 60 Location location = createLocation_forNode(node);
61 expect(statusContext.context, context); 61 expect(location.file, '/test.dart');
62 expect(statusContext.source, testSource); 62 expect(location.offset, node.offset);
63 expect(statusContext.range, rangeNode(node)); 63 expect(location.length, node.length);
64 } 64 }
65 65
66 void test_new_forUnit() { 66 void test_createLocation_forUnit() {
67 resolveTestUnit(''); 67 resolveTestUnit('');
68 SourceRange range = rangeStartLength(10, 20); 68 SourceRange range = rangeStartLength(10, 20);
69 var statusContext = new RefactoringStatusContext.forUnit(testUnit, range); 69 // check
70 // access 70 Location location = createLocation_forUnit(testUnit, range);
71 expect(statusContext.context, context); 71 expect(location.file, '/test.dart');
72 expect(statusContext.source, testSource); 72 expect(location.offset, range.offset);
73 expect(statusContext.range, range); 73 expect(location.length, range.length);
74 } 74 }
75 } 75 }
76 76
77
78 @ReflectiveTestCase()
79 class RefactoringStatusEntryTest {
80 void test_new_withContext() {
81 RefactoringStatusContext context = new _MockRefactoringStatusContext();
82 RefactoringStatusEntry entry =
83 new RefactoringStatusEntry(
84 RefactoringStatusSeverity.ERROR,
85 "my message",
86 context);
87 // access
88 expect(entry.severity, RefactoringStatusSeverity.ERROR);
89 expect(entry.message, 'my message');
90 expect(entry.context, context);
91 }
92
93 void test_new_withoutContext() {
94 RefactoringStatusEntry entry =
95 new RefactoringStatusEntry(RefactoringStatusSeverity.ERROR, "my message" );
96 // access
97 expect(entry.severity, RefactoringStatusSeverity.ERROR);
98 expect(entry.message, 'my message');
99 expect(entry.context, isNull);
100 // isX
101 expect(entry.isFatalError, isFalse);
102 expect(entry.isError, isTrue);
103 expect(entry.isWarning, isFalse);
104 }
105 }
106
107 77
108 @ReflectiveTestCase() 78 @ReflectiveTestCase()
109 class RefactoringStatusTest { 79 class RefactoringStatusTest {
110 void test_addError() { 80 void test_addError() {
111 RefactoringStatus refactoringStatus = new RefactoringStatus(); 81 RefactoringStatus refactoringStatus = new RefactoringStatus();
112 // initial state 82 // initial state
113 expect(refactoringStatus.severity, RefactoringStatusSeverity.OK); 83 expect(refactoringStatus.severity, null);
114 // add ERROR 84 // add ERROR
115 refactoringStatus.addError('msg'); 85 refactoringStatus.addError('msg');
116 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR); 86 expect(refactoringStatus.severity, RefactoringProblemSeverity.ERROR);
117 expect(refactoringStatus.isOK, isFalse); 87 expect(refactoringStatus.isOK, isFalse);
118 expect(refactoringStatus.hasFatalError, isFalse); 88 expect(refactoringStatus.hasFatalError, isFalse);
119 expect(refactoringStatus.hasError, isTrue); 89 expect(refactoringStatus.hasError, isTrue);
120 // entries 90 // problems
121 List<RefactoringStatusEntry> entries = refactoringStatus.entries; 91 List<RefactoringProblem> problems = refactoringStatus.problems;
122 expect(entries, hasLength(1)); 92 expect(problems, hasLength(1));
123 expect(entries[0].message, 'msg'); 93 expect(problems[0].message, 'msg');
124 } 94 }
125 95
126 void test_addFatalError_withContext() { 96 void test_addFatalError_withLocation() {
127 RefactoringStatusContext context = new _MockRefactoringStatusContext(); 97 Location location = new Location('/test.dart', 1, 2, 3, 4);
128 RefactoringStatus refactoringStatus = new RefactoringStatus(); 98 RefactoringStatus refactoringStatus = new RefactoringStatus();
129 // initial state 99 // initial state
130 expect(refactoringStatus.severity, RefactoringStatusSeverity.OK); 100 expect(refactoringStatus.severity, null);
131 // add FATAL 101 // add FATAL
132 refactoringStatus.addFatalError('msg', context); 102 refactoringStatus.addFatalError('msg', location);
133 expect(refactoringStatus.severity, RefactoringStatusSeverity.FATAL); 103 expect(refactoringStatus.severity, RefactoringProblemSeverity.FATAL);
134 expect(refactoringStatus.isOK, isFalse); 104 expect(refactoringStatus.isOK, isFalse);
135 expect(refactoringStatus.hasFatalError, isTrue); 105 expect(refactoringStatus.hasFatalError, isTrue);
136 expect(refactoringStatus.hasError, isTrue); 106 expect(refactoringStatus.hasError, isTrue);
137 // entries 107 // problems
138 List<RefactoringStatusEntry> entries = refactoringStatus.entries; 108 List<RefactoringProblem> problems = refactoringStatus.problems;
139 expect(entries, hasLength(1)); 109 expect(problems, hasLength(1));
140 expect(entries[0].message, 'msg'); 110 expect(problems[0].message, 'msg');
141 expect(entries[0].context, context); 111 expect(problems[0].location.file, '/test.dart');
112 expect(problems[0].location.offset, 1);
113 expect(problems[0].location.length, 2);
142 // add WARNING, resulting severity is still FATAL 114 // add WARNING, resulting severity is still FATAL
143 refactoringStatus.addWarning("warning"); 115 refactoringStatus.addWarning("warning");
144 expect(refactoringStatus.severity, RefactoringStatusSeverity.FATAL); 116 expect(refactoringStatus.severity, RefactoringProblemSeverity.FATAL);
145 } 117 }
146 118
147 void test_addFatalError_withoutContext() { 119 void test_addFatalError_withoutContext() {
148 RefactoringStatus refactoringStatus = new RefactoringStatus(); 120 RefactoringStatus refactoringStatus = new RefactoringStatus();
149 // initial state 121 // initial state
150 expect(refactoringStatus.severity, RefactoringStatusSeverity.OK); 122 expect(refactoringStatus.severity, null);
151 // add FATAL 123 // add FATAL
152 refactoringStatus.addFatalError('msg'); 124 refactoringStatus.addFatalError('msg');
153 expect(refactoringStatus.severity, RefactoringStatusSeverity.FATAL); 125 expect(refactoringStatus.severity, RefactoringProblemSeverity.FATAL);
154 expect(refactoringStatus.isOK, isFalse); 126 expect(refactoringStatus.isOK, isFalse);
155 expect(refactoringStatus.hasFatalError, isTrue); 127 expect(refactoringStatus.hasFatalError, isTrue);
156 expect(refactoringStatus.hasError, isTrue); 128 expect(refactoringStatus.hasError, isTrue);
157 // entries 129 // problems
158 List<RefactoringStatusEntry> entries = refactoringStatus.entries; 130 List<RefactoringProblem> problems = refactoringStatus.problems;
159 expect(entries, hasLength(1)); 131 expect(problems, hasLength(1));
160 expect(entries[0].message, 'msg'); 132 expect(problems[0].message, 'msg');
161 expect(entries[0].context, isNull); 133 expect(problems[0].location, isNull);
162 } 134 }
163 135
164 void test_addStatus_Error_withWarning() { 136 void test_addStatus_Error_withWarning() {
165 RefactoringStatus refactoringStatus = new RefactoringStatus(); 137 RefactoringStatus refactoringStatus = new RefactoringStatus();
166 refactoringStatus.addError("err"); 138 refactoringStatus.addError("err");
167 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR); 139 expect(refactoringStatus.severity, RefactoringProblemSeverity.ERROR);
168 // merge with OK 140 // merge with OK
169 { 141 {
170 RefactoringStatus other = new RefactoringStatus(); 142 RefactoringStatus other = new RefactoringStatus();
171 other.addWarning("warn"); 143 other.addWarning("warn");
172 refactoringStatus.addStatus(other); 144 refactoringStatus.addStatus(other);
173 } 145 }
174 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR); 146 expect(refactoringStatus.severity, RefactoringProblemSeverity.ERROR);
175 expect(refactoringStatus.message, 'err'); 147 expect(refactoringStatus.message, 'err');
176 } 148 }
177 149
178 void test_addStatus_Warning_null() { 150 void test_addStatus_Warning_null() {
179 RefactoringStatus refactoringStatus = new RefactoringStatus(); 151 RefactoringStatus refactoringStatus = new RefactoringStatus();
180 refactoringStatus.addWarning("warn"); 152 refactoringStatus.addWarning("warn");
181 expect(refactoringStatus.severity, RefactoringStatusSeverity.WARNING); 153 expect(refactoringStatus.severity, RefactoringProblemSeverity.WARNING);
182 // merge with "null" 154 // merge with "null"
183 refactoringStatus.addStatus(null); 155 refactoringStatus.addStatus(null);
184 expect(refactoringStatus.severity, RefactoringStatusSeverity.WARNING); 156 expect(refactoringStatus.severity, RefactoringProblemSeverity.WARNING);
185 } 157 }
186 158
187 void test_addStatus_Warning_withError() { 159 void test_addStatus_Warning_withError() {
188 RefactoringStatus refactoringStatus = new RefactoringStatus(); 160 RefactoringStatus refactoringStatus = new RefactoringStatus();
189 refactoringStatus.addWarning("warn"); 161 refactoringStatus.addWarning("warn");
190 expect(refactoringStatus.severity, RefactoringStatusSeverity.WARNING); 162 expect(refactoringStatus.severity, RefactoringProblemSeverity.WARNING);
191 // merge with OK 163 // merge with OK
192 { 164 {
193 RefactoringStatus other = new RefactoringStatus(); 165 RefactoringStatus other = new RefactoringStatus();
194 other.addError("err"); 166 other.addError("err");
195 refactoringStatus.addStatus(other); 167 refactoringStatus.addStatus(other);
196 } 168 }
197 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR); 169 expect(refactoringStatus.severity, RefactoringProblemSeverity.ERROR);
198 expect(refactoringStatus.message, 'err'); 170 expect(refactoringStatus.message, 'err');
199 } 171 }
200 172
201 void test_addWarning() { 173 void test_addWarning() {
202 RefactoringStatus refactoringStatus = new RefactoringStatus(); 174 RefactoringStatus refactoringStatus = new RefactoringStatus();
203 // initial state 175 // initial state
204 expect(refactoringStatus.severity, RefactoringStatusSeverity.OK); 176 expect(refactoringStatus.severity, null);
205 // add WARNING 177 // add WARNING
206 refactoringStatus.addWarning('msg'); 178 refactoringStatus.addWarning('msg');
207 expect(refactoringStatus.severity, RefactoringStatusSeverity.WARNING); 179 expect(refactoringStatus.severity, RefactoringProblemSeverity.WARNING);
208 expect(refactoringStatus.isOK, isFalse); 180 expect(refactoringStatus.isOK, isFalse);
209 expect(refactoringStatus.hasFatalError, isFalse); 181 expect(refactoringStatus.hasFatalError, isFalse);
210 expect(refactoringStatus.hasError, isFalse); 182 expect(refactoringStatus.hasError, isFalse);
211 expect(refactoringStatus.hasWarning, isTrue); 183 expect(refactoringStatus.hasWarning, isTrue);
212 // entries 184 // problems
213 List<RefactoringStatusEntry> entries = refactoringStatus.entries; 185 List<RefactoringProblem> problems = refactoringStatus.problems;
214 expect(entries, hasLength(1)); 186 expect(problems, hasLength(1));
215 expect(entries[0].message, 'msg'); 187 expect(problems[0].message, 'msg');
216 } 188 }
217 189
218 void test_escalateErrorToFatal() { 190 void test_get_problem() {
219 RefactoringStatus refactoringStatus = new RefactoringStatus.error('msg');
220 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR);
221 // escalated
222 RefactoringStatus escalated = refactoringStatus.escalateErrorToFatal();
223 expect(escalated.severity, RefactoringStatusSeverity.FATAL);
224 }
225
226 void test_get_entryWithHighestSeverity() {
227 RefactoringStatus refactoringStatus = new RefactoringStatus(); 191 RefactoringStatus refactoringStatus = new RefactoringStatus();
228 // no entries 192 // no entries
229 expect(refactoringStatus.entryWithHighestSeverity, isNull); 193 expect(refactoringStatus.problem, isNull);
230 expect(refactoringStatus.message, isNull); 194 expect(refactoringStatus.message, isNull);
231 // add entries 195 // add entries
232 refactoringStatus.addError('msgError'); 196 refactoringStatus.addError('msgError');
233 refactoringStatus.addWarning('msgWarning'); 197 refactoringStatus.addWarning('msgWarning');
234 refactoringStatus.addFatalError('msgFatalError'); 198 refactoringStatus.addFatalError('msgFatalError');
235 // get entry 199 // get entry
236 { 200 {
237 RefactoringStatusEntry entry = refactoringStatus.entryWithHighestSeverity; 201 RefactoringProblem problem = refactoringStatus.problem;
238 expect(entry.severity, RefactoringStatusSeverity.FATAL); 202 expect(problem.severity, RefactoringProblemSeverity.FATAL);
239 expect(entry.message, 'msgFatalError'); 203 expect(problem.message, 'msgFatalError');
240 } 204 }
241 // get message 205 // get message
242 expect(refactoringStatus.message, 'msgFatalError'); 206 expect(refactoringStatus.problem.message, 'msgFatalError');
243 } 207 }
244 208
245 void test_newError() { 209 void test_newError() {
246 RefactoringStatusContext context = new _MockRefactoringStatusContext(); 210 Location location = new Location('/test.dart', 1, 2, 3, 4);
247 RefactoringStatus refactoringStatus = 211 RefactoringStatus refactoringStatus =
248 new RefactoringStatus.error('msg', context); 212 new RefactoringStatus.error('msg', location);
249 expect(refactoringStatus.severity, RefactoringStatusSeverity.ERROR); 213 expect(refactoringStatus.severity, RefactoringProblemSeverity.ERROR);
250 expect(refactoringStatus.message, 'msg'); 214 expect(refactoringStatus.problem.message, 'msg');
251 expect(refactoringStatus.entryWithHighestSeverity.context, context); 215 expect(refactoringStatus.problem.location.file, '/test.dart');
252 } 216 }
253 217
254 void test_newFatalError() { 218 void test_newFatalError() {
255 RefactoringStatus refactoringStatus = new RefactoringStatus.fatal('msg'); 219 RefactoringStatus refactoringStatus = new RefactoringStatus.fatal('msg');
256 expect(refactoringStatus.severity, RefactoringStatusSeverity.FATAL); 220 expect(refactoringStatus.severity, RefactoringProblemSeverity.FATAL);
257 expect(refactoringStatus.message, 'msg'); 221 expect(refactoringStatus.message, 'msg');
258 } 222 }
259 223
260 void test_newWarning() { 224 void test_newWarning() {
261 RefactoringStatus refactoringStatus = new RefactoringStatus.warning('msg'); 225 RefactoringStatus refactoringStatus = new RefactoringStatus.warning('msg');
262 expect(refactoringStatus.severity, RefactoringStatusSeverity.WARNING); 226 expect(refactoringStatus.severity, RefactoringProblemSeverity.WARNING);
263 expect(refactoringStatus.message, 'msg'); 227 expect(refactoringStatus.message, 'msg');
264 } 228 }
265 } 229 }
266
267
268 class _MockRefactoringStatusContext extends TypedMock implements
269 RefactoringStatusContext {
270 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
271 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698