OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analyzer/src/generated/source.dart'; | 5 import 'package:analyzer/src/generated/source.dart'; |
6 import 'package:analyzer_plugin/protocol/protocol_common.dart'; | 6 import 'package:analyzer_plugin/protocol/protocol_common.dart'; |
7 import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core
.dart'; | 7 import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core
.dart'; |
8 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dar
t'; | 8 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dar
t'; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
11 | 11 |
12 main() { | 12 main() { |
13 defineReflectiveSuite(() { | 13 defineReflectiveSuite(() { |
14 defineReflectiveTests(ChangeBuilderImplTest); | 14 defineReflectiveTests(ChangeBuilderImplTest); |
15 defineReflectiveTests(EditBuilderImplTest); | 15 defineReflectiveTests(EditBuilderImplTest); |
16 defineReflectiveTests(FileEditBuilderImplTest); | 16 defineReflectiveTests(FileEditBuilderImplTest); |
17 defineReflectiveTests(LinkedEditBuilderImplTest); | 17 defineReflectiveTests(LinkedEditBuilderImplTest); |
18 }); | 18 }); |
19 } | 19 } |
20 | 20 |
21 @reflectiveTest | 21 @reflectiveTest |
22 class ChangeBuilderImplTest { | 22 class ChangeBuilderImplTest { |
23 test_createFileEditBuilder() async { | 23 test_createFileEditBuilder() async { |
24 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 24 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
25 String path = '/test.dart'; | 25 String path = '/test.dart'; |
26 int timeStamp = 54; | |
27 FileEditBuilderImpl fileEditBuilder = | 26 FileEditBuilderImpl fileEditBuilder = |
28 await builder.createFileEditBuilder(path, timeStamp); | 27 await builder.createFileEditBuilder(path); |
29 expect(fileEditBuilder, new isInstanceOf<FileEditBuilder>()); | 28 expect(fileEditBuilder, new isInstanceOf<FileEditBuilder>()); |
30 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; | 29 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; |
31 expect(fileEdit.file, path); | 30 expect(fileEdit.file, path); |
32 expect(fileEdit.fileStamp, timeStamp); | |
33 } | 31 } |
34 | 32 |
35 void test_getLinkedEditGroup() { | 33 void test_getLinkedEditGroup() { |
36 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 34 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
37 LinkedEditGroup group = builder.getLinkedEditGroup('a'); | 35 LinkedEditGroup group = builder.getLinkedEditGroup('a'); |
38 expect(identical(builder.getLinkedEditGroup('b'), group), isFalse); | 36 expect(identical(builder.getLinkedEditGroup('b'), group), isFalse); |
39 expect(identical(builder.getLinkedEditGroup('a'), group), isTrue); | 37 expect(identical(builder.getLinkedEditGroup('a'), group), isTrue); |
40 } | 38 } |
41 | 39 |
42 void test_setSelection() { | 40 void test_setSelection() { |
43 Position position = new Position('test.dart', 3); | 41 Position position = new Position('test.dart', 3); |
44 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 42 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
45 builder.setSelection(position); | 43 builder.setSelection(position); |
46 expect(builder.sourceChange.selection, position); | 44 expect(builder.sourceChange.selection, position); |
47 } | 45 } |
48 | 46 |
49 void test_sourceChange_noChanges() { | 47 void test_sourceChange_noChanges() { |
50 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 48 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
51 SourceChange sourceChange = builder.sourceChange; | 49 SourceChange sourceChange = builder.sourceChange; |
52 expect(sourceChange, isNotNull); | 50 expect(sourceChange, isNotNull); |
53 expect(sourceChange.edits, isEmpty); | 51 expect(sourceChange.edits, isEmpty); |
54 expect(sourceChange.linkedEditGroups, isEmpty); | 52 expect(sourceChange.linkedEditGroups, isEmpty); |
55 expect(sourceChange.message, isEmpty); | 53 expect(sourceChange.message, isEmpty); |
56 expect(sourceChange.selection, isNull); | 54 expect(sourceChange.selection, isNull); |
57 } | 55 } |
58 | 56 |
59 test_sourceChange_oneChange() async { | 57 test_sourceChange_oneChange() async { |
60 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 58 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
61 String path = '/test.dart'; | 59 String path = '/test.dart'; |
62 await builder.addFileEdit(path, 0, (FileEditBuilder builder) {}); | 60 await builder.addFileEdit(path, (FileEditBuilder builder) {}); |
63 builder.getLinkedEditGroup('a'); | 61 builder.getLinkedEditGroup('a'); |
64 SourceChange sourceChange = builder.sourceChange; | 62 SourceChange sourceChange = builder.sourceChange; |
65 expect(sourceChange, isNotNull); | 63 expect(sourceChange, isNotNull); |
66 expect(sourceChange.edits, hasLength(1)); | 64 expect(sourceChange.edits, hasLength(1)); |
67 expect(sourceChange.linkedEditGroups, hasLength(1)); | 65 expect(sourceChange.linkedEditGroups, hasLength(1)); |
68 expect(sourceChange.message, isEmpty); | 66 expect(sourceChange.message, isEmpty); |
69 expect(sourceChange.selection, isNull); | 67 expect(sourceChange.selection, isNull); |
70 } | 68 } |
71 } | 69 } |
72 | 70 |
73 @reflectiveTest | 71 @reflectiveTest |
74 class EditBuilderImplTest { | 72 class EditBuilderImplTest { |
75 String path = '/test.dart'; | 73 String path = '/test.dart'; |
76 | 74 |
77 test_addLinkedEdit() async { | 75 test_addLinkedEdit() async { |
78 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 76 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
79 int offset = 10; | 77 int offset = 10; |
80 String text = 'content'; | 78 String text = 'content'; |
81 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 79 await builder.addFileEdit(path, (FileEditBuilder builder) { |
82 builder.addInsertion(10, (EditBuilder builder) { | 80 builder.addInsertion(10, (EditBuilder builder) { |
83 builder.addLinkedEdit('a', (LinkedEditBuilder builder) { | 81 builder.addLinkedEdit('a', (LinkedEditBuilder builder) { |
84 builder.write(text); | 82 builder.write(text); |
85 }); | 83 }); |
86 SourceEdit sourceEdit = (builder as EditBuilderImpl).sourceEdit; | 84 SourceEdit sourceEdit = (builder as EditBuilderImpl).sourceEdit; |
87 expect(sourceEdit.replacement, text); | 85 expect(sourceEdit.replacement, text); |
88 }); | 86 }); |
89 }); | 87 }); |
90 SourceChange sourceChange = builder.sourceChange; | 88 SourceChange sourceChange = builder.sourceChange; |
91 expect(sourceChange, isNotNull); | 89 expect(sourceChange, isNotNull); |
92 List<LinkedEditGroup> groups = sourceChange.linkedEditGroups; | 90 List<LinkedEditGroup> groups = sourceChange.linkedEditGroups; |
93 expect(groups, hasLength(1)); | 91 expect(groups, hasLength(1)); |
94 LinkedEditGroup group = groups[0]; | 92 LinkedEditGroup group = groups[0]; |
95 expect(group, isNotNull); | 93 expect(group, isNotNull); |
96 expect(group.length, text.length); | 94 expect(group.length, text.length); |
97 List<Position> positions = group.positions; | 95 List<Position> positions = group.positions; |
98 expect(positions, hasLength(1)); | 96 expect(positions, hasLength(1)); |
99 expect(positions[0].offset, offset); | 97 expect(positions[0].offset, offset); |
100 } | 98 } |
101 | 99 |
102 test_addSimpleLinkedEdit() async { | 100 test_addSimpleLinkedEdit() async { |
103 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 101 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
104 int offset = 10; | 102 int offset = 10; |
105 String text = 'content'; | 103 String text = 'content'; |
106 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 104 await builder.addFileEdit(path, (FileEditBuilder builder) { |
107 builder.addInsertion(10, (EditBuilder builder) { | 105 builder.addInsertion(10, (EditBuilder builder) { |
108 builder.addSimpleLinkedEdit('a', text); | 106 builder.addSimpleLinkedEdit('a', text); |
109 SourceEdit sourceEdit = (builder as EditBuilderImpl).sourceEdit; | 107 SourceEdit sourceEdit = (builder as EditBuilderImpl).sourceEdit; |
110 expect(sourceEdit.replacement, text); | 108 expect(sourceEdit.replacement, text); |
111 }); | 109 }); |
112 }); | 110 }); |
113 SourceChange sourceChange = builder.sourceChange; | 111 SourceChange sourceChange = builder.sourceChange; |
114 expect(sourceChange, isNotNull); | 112 expect(sourceChange, isNotNull); |
115 List<LinkedEditGroup> groups = sourceChange.linkedEditGroups; | 113 List<LinkedEditGroup> groups = sourceChange.linkedEditGroups; |
116 expect(groups, hasLength(1)); | 114 expect(groups, hasLength(1)); |
117 LinkedEditGroup group = groups[0]; | 115 LinkedEditGroup group = groups[0]; |
118 expect(group, isNotNull); | 116 expect(group, isNotNull); |
119 expect(group.length, text.length); | 117 expect(group.length, text.length); |
120 List<Position> positions = group.positions; | 118 List<Position> positions = group.positions; |
121 expect(positions, hasLength(1)); | 119 expect(positions, hasLength(1)); |
122 expect(positions[0].offset, offset); | 120 expect(positions[0].offset, offset); |
123 } | 121 } |
124 | 122 |
125 test_createLinkedEditBuilder() async { | 123 test_createLinkedEditBuilder() async { |
126 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 124 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
127 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 125 await builder.addFileEdit(path, (FileEditBuilder builder) { |
128 builder.addInsertion(10, (EditBuilder builder) { | 126 builder.addInsertion(10, (EditBuilder builder) { |
129 LinkedEditBuilderImpl linkBuilder = | 127 LinkedEditBuilderImpl linkBuilder = |
130 (builder as EditBuilderImpl).createLinkedEditBuilder(); | 128 (builder as EditBuilderImpl).createLinkedEditBuilder(); |
131 expect(linkBuilder, new isInstanceOf<LinkedEditBuilder>()); | 129 expect(linkBuilder, new isInstanceOf<LinkedEditBuilder>()); |
132 }); | 130 }); |
133 }); | 131 }); |
134 } | 132 } |
135 | 133 |
136 test_selectHere() async { | 134 test_selectHere() async { |
137 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 135 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
138 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 136 await builder.addFileEdit(path, (FileEditBuilder builder) { |
139 builder.addInsertion(10, (EditBuilder builder) { | 137 builder.addInsertion(10, (EditBuilder builder) { |
140 builder.selectHere(); | 138 builder.selectHere(); |
141 }); | 139 }); |
142 }); | 140 }); |
143 expect(builder.sourceChange.selection.offset, 10); | 141 expect(builder.sourceChange.selection.offset, 10); |
144 } | 142 } |
145 | 143 |
146 test_write() async { | 144 test_write() async { |
147 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 145 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
148 int timeStamp = 93; | |
149 int offset = 10; | 146 int offset = 10; |
150 String text = 'write'; | 147 String text = 'write'; |
151 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) { | 148 await builder.addFileEdit(path, (FileEditBuilder builder) { |
152 builder.addInsertion(offset, (EditBuilder builder) { | 149 builder.addInsertion(offset, (EditBuilder builder) { |
153 builder.write(text); | 150 builder.write(text); |
154 }); | 151 }); |
155 }); | 152 }); |
156 | 153 |
157 SourceChange sourceChange = builder.sourceChange; | 154 SourceChange sourceChange = builder.sourceChange; |
158 expect(sourceChange, isNotNull); | 155 expect(sourceChange, isNotNull); |
159 | 156 |
160 List<SourceFileEdit> fileEdits = sourceChange.edits; | 157 List<SourceFileEdit> fileEdits = sourceChange.edits; |
161 expect(fileEdits, hasLength(1)); | 158 expect(fileEdits, hasLength(1)); |
162 SourceFileEdit fileEdit = fileEdits[0]; | 159 SourceFileEdit fileEdit = fileEdits[0]; |
163 expect(fileEdit, isNotNull); | 160 expect(fileEdit, isNotNull); |
164 expect(fileEdit.file, path); | 161 expect(fileEdit.file, path); |
165 expect(fileEdit.fileStamp, timeStamp); | |
166 | 162 |
167 List<SourceEdit> edits = fileEdit.edits; | 163 List<SourceEdit> edits = fileEdit.edits; |
168 expect(edits, hasLength(1)); | 164 expect(edits, hasLength(1)); |
169 SourceEdit edit = edits[0]; | 165 SourceEdit edit = edits[0]; |
170 expect(edit, isNotNull); | 166 expect(edit, isNotNull); |
171 expect(edit.offset, offset); | 167 expect(edit.offset, offset); |
172 expect(edit.length, 0); | 168 expect(edit.length, 0); |
173 expect(edit.replacement, text); | 169 expect(edit.replacement, text); |
174 } | 170 } |
175 | 171 |
176 test_writeln_withoutText() async { | 172 test_writeln_withoutText() async { |
177 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 173 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
178 int timeStamp = 39; | |
179 int offset = 52; | 174 int offset = 52; |
180 int length = 12; | 175 int length = 12; |
181 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) { | 176 await builder.addFileEdit(path, (FileEditBuilder builder) { |
182 builder.addReplacement(new SourceRange(offset, length), | 177 builder.addReplacement(new SourceRange(offset, length), |
183 (EditBuilder builder) { | 178 (EditBuilder builder) { |
184 builder.writeln(); | 179 builder.writeln(); |
185 }); | 180 }); |
186 }); | 181 }); |
187 | 182 |
188 SourceChange sourceChange = builder.sourceChange; | 183 SourceChange sourceChange = builder.sourceChange; |
189 expect(sourceChange, isNotNull); | 184 expect(sourceChange, isNotNull); |
190 | 185 |
191 List<SourceFileEdit> fileEdits = sourceChange.edits; | 186 List<SourceFileEdit> fileEdits = sourceChange.edits; |
192 expect(fileEdits, hasLength(1)); | 187 expect(fileEdits, hasLength(1)); |
193 SourceFileEdit fileEdit = fileEdits[0]; | 188 SourceFileEdit fileEdit = fileEdits[0]; |
194 expect(fileEdit, isNotNull); | 189 expect(fileEdit, isNotNull); |
195 expect(fileEdit.file, path); | 190 expect(fileEdit.file, path); |
196 expect(fileEdit.fileStamp, timeStamp); | |
197 | 191 |
198 List<SourceEdit> edits = fileEdit.edits; | 192 List<SourceEdit> edits = fileEdit.edits; |
199 expect(edits, hasLength(1)); | 193 expect(edits, hasLength(1)); |
200 SourceEdit edit = edits[0]; | 194 SourceEdit edit = edits[0]; |
201 expect(edit, isNotNull); | 195 expect(edit, isNotNull); |
202 expect(edit.offset, offset); | 196 expect(edit.offset, offset); |
203 expect(edit.length, length); | 197 expect(edit.length, length); |
204 expect(edit.replacement == '\n' || edit.replacement == '\r\n', isTrue); | 198 expect(edit.replacement == '\n' || edit.replacement == '\r\n', isTrue); |
205 } | 199 } |
206 | 200 |
207 test_writeln_withText() async { | 201 test_writeln_withText() async { |
208 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 202 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
209 int timeStamp = 39; | |
210 int offset = 52; | 203 int offset = 52; |
211 int length = 12; | 204 int length = 12; |
212 String text = 'writeln'; | 205 String text = 'writeln'; |
213 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) { | 206 await builder.addFileEdit(path, (FileEditBuilder builder) { |
214 builder.addReplacement(new SourceRange(offset, length), | 207 builder.addReplacement(new SourceRange(offset, length), |
215 (EditBuilder builder) { | 208 (EditBuilder builder) { |
216 builder.writeln(text); | 209 builder.writeln(text); |
217 }); | 210 }); |
218 }); | 211 }); |
219 | 212 |
220 SourceChange sourceChange = builder.sourceChange; | 213 SourceChange sourceChange = builder.sourceChange; |
221 expect(sourceChange, isNotNull); | 214 expect(sourceChange, isNotNull); |
222 | 215 |
223 List<SourceFileEdit> fileEdits = sourceChange.edits; | 216 List<SourceFileEdit> fileEdits = sourceChange.edits; |
224 expect(fileEdits, hasLength(1)); | 217 expect(fileEdits, hasLength(1)); |
225 SourceFileEdit fileEdit = fileEdits[0]; | 218 SourceFileEdit fileEdit = fileEdits[0]; |
226 expect(fileEdit, isNotNull); | 219 expect(fileEdit, isNotNull); |
227 expect(fileEdit.file, path); | 220 expect(fileEdit.file, path); |
228 expect(fileEdit.fileStamp, timeStamp); | |
229 | 221 |
230 List<SourceEdit> edits = fileEdit.edits; | 222 List<SourceEdit> edits = fileEdit.edits; |
231 expect(edits, hasLength(1)); | 223 expect(edits, hasLength(1)); |
232 SourceEdit edit = edits[0]; | 224 SourceEdit edit = edits[0]; |
233 expect(edit, isNotNull); | 225 expect(edit, isNotNull); |
234 expect(edit.offset, offset); | 226 expect(edit.offset, offset); |
235 expect(edit.length, length); | 227 expect(edit.length, length); |
236 expect(edit.replacement == '$text\n' || edit.replacement == '$text\r\n', | 228 expect(edit.replacement == '$text\n' || edit.replacement == '$text\r\n', |
237 isTrue); | 229 isTrue); |
238 } | 230 } |
239 } | 231 } |
240 | 232 |
241 @reflectiveTest | 233 @reflectiveTest |
242 class FileEditBuilderImplTest { | 234 class FileEditBuilderImplTest { |
243 String path = '/test.dart'; | 235 String path = '/test.dart'; |
244 | 236 |
245 test_addDeletion() async { | 237 test_addDeletion() async { |
246 int offset = 23; | 238 int offset = 23; |
247 int length = 7; | 239 int length = 7; |
248 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 240 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
249 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 241 await builder.addFileEdit(path, (FileEditBuilder builder) { |
250 builder.addDeletion(new SourceRange(offset, length)); | 242 builder.addDeletion(new SourceRange(offset, length)); |
251 }); | 243 }); |
252 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; | 244 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; |
253 expect(edits, hasLength(1)); | 245 expect(edits, hasLength(1)); |
254 expect(edits[0].offset, offset); | 246 expect(edits[0].offset, offset); |
255 expect(edits[0].length, length); | 247 expect(edits[0].length, length); |
256 expect(edits[0].replacement, isEmpty); | 248 expect(edits[0].replacement, isEmpty); |
257 } | 249 } |
258 | 250 |
259 test_addInsertion() async { | 251 test_addInsertion() async { |
260 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 252 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
261 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 253 await builder.addFileEdit(path, (FileEditBuilder builder) { |
262 builder.addInsertion(10, (EditBuilder builder) { | 254 builder.addInsertion(10, (EditBuilder builder) { |
263 expect(builder, isNotNull); | 255 expect(builder, isNotNull); |
264 }); | 256 }); |
265 }); | 257 }); |
266 } | 258 } |
267 | 259 |
268 test_addLinkedPosition() async { | 260 test_addLinkedPosition() async { |
269 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 261 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
270 String groupName = 'a'; | 262 String groupName = 'a'; |
271 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 263 await builder.addFileEdit(path, (FileEditBuilder builder) { |
272 builder.addLinkedPosition(new SourceRange(3, 6), groupName); | 264 builder.addLinkedPosition(new SourceRange(3, 6), groupName); |
273 }); | 265 }); |
274 | 266 |
275 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); | 267 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); |
276 List<Position> positions = group.positions; | 268 List<Position> positions = group.positions; |
277 expect(positions, hasLength(1)); | 269 expect(positions, hasLength(1)); |
278 Position position = positions[0]; | 270 Position position = positions[0]; |
279 expect(position.file, path); | 271 expect(position.file, path); |
280 expect(position.offset, 3); | 272 expect(position.offset, 3); |
281 expect(group.length, 6); | 273 expect(group.length, 6); |
282 } | 274 } |
283 | 275 |
284 test_addReplacement() async { | 276 test_addReplacement() async { |
285 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 277 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
286 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 278 await builder.addFileEdit(path, (FileEditBuilder builder) { |
287 builder.addReplacement(new SourceRange(4, 5), (EditBuilder builder) { | 279 builder.addReplacement(new SourceRange(4, 5), (EditBuilder builder) { |
288 expect(builder, isNotNull); | 280 expect(builder, isNotNull); |
289 }); | 281 }); |
290 }); | 282 }); |
291 } | 283 } |
292 | 284 |
293 test_addSimpleInsertion() async { | 285 test_addSimpleInsertion() async { |
294 int offset = 23; | 286 int offset = 23; |
295 String text = 'xyz'; | 287 String text = 'xyz'; |
296 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 288 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
297 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 289 await builder.addFileEdit(path, (FileEditBuilder builder) { |
298 builder.addSimpleInsertion(offset, text); | 290 builder.addSimpleInsertion(offset, text); |
299 }); | 291 }); |
300 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; | 292 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; |
301 expect(edits, hasLength(1)); | 293 expect(edits, hasLength(1)); |
302 expect(edits[0].offset, offset); | 294 expect(edits[0].offset, offset); |
303 expect(edits[0].length, 0); | 295 expect(edits[0].length, 0); |
304 expect(edits[0].replacement, text); | 296 expect(edits[0].replacement, text); |
305 } | 297 } |
306 | 298 |
307 test_addSimpleReplacement() async { | 299 test_addSimpleReplacement() async { |
308 int offset = 23; | 300 int offset = 23; |
309 int length = 7; | 301 int length = 7; |
310 String text = 'xyz'; | 302 String text = 'xyz'; |
311 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 303 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
312 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 304 await builder.addFileEdit(path, (FileEditBuilder builder) { |
313 builder.addSimpleReplacement(new SourceRange(offset, length), text); | 305 builder.addSimpleReplacement(new SourceRange(offset, length), text); |
314 }); | 306 }); |
315 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; | 307 List<SourceEdit> edits = builder.sourceChange.edits[0].edits; |
316 expect(edits, hasLength(1)); | 308 expect(edits, hasLength(1)); |
317 expect(edits[0].offset, offset); | 309 expect(edits[0].offset, offset); |
318 expect(edits[0].length, length); | 310 expect(edits[0].length, length); |
319 expect(edits[0].replacement, text); | 311 expect(edits[0].replacement, text); |
320 } | 312 } |
321 | 313 |
322 test_createEditBuilder() async { | 314 test_createEditBuilder() async { |
323 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 315 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
324 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 316 await builder.addFileEdit(path, (FileEditBuilder builder) { |
325 int offset = 4; | 317 int offset = 4; |
326 int length = 5; | 318 int length = 5; |
327 EditBuilderImpl editBuilder = | 319 EditBuilderImpl editBuilder = |
328 (builder as FileEditBuilderImpl).createEditBuilder(offset, length); | 320 (builder as FileEditBuilderImpl).createEditBuilder(offset, length); |
329 expect(editBuilder, new isInstanceOf<EditBuilder>()); | 321 expect(editBuilder, new isInstanceOf<EditBuilder>()); |
330 SourceEdit sourceEdit = editBuilder.sourceEdit; | 322 SourceEdit sourceEdit = editBuilder.sourceEdit; |
331 expect(sourceEdit.length, length); | 323 expect(sourceEdit.length, length); |
332 expect(sourceEdit.offset, offset); | 324 expect(sourceEdit.offset, offset); |
333 expect(sourceEdit.replacement, isEmpty); | 325 expect(sourceEdit.replacement, isEmpty); |
334 }); | 326 }); |
335 } | 327 } |
336 } | 328 } |
337 | 329 |
338 @reflectiveTest | 330 @reflectiveTest |
339 class LinkedEditBuilderImplTest { | 331 class LinkedEditBuilderImplTest { |
340 String path = '/test.dart'; | 332 String path = '/test.dart'; |
341 | 333 |
342 test_addSuggestion() async { | 334 test_addSuggestion() async { |
343 String groupName = 'a'; | 335 String groupName = 'a'; |
344 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 336 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
345 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 337 await builder.addFileEdit(path, (FileEditBuilder builder) { |
346 builder.addInsertion(10, (EditBuilder builder) { | 338 builder.addInsertion(10, (EditBuilder builder) { |
347 builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) { | 339 builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) { |
348 builder.addSuggestion(LinkedEditSuggestionKind.TYPE, 'A'); | 340 builder.addSuggestion(LinkedEditSuggestionKind.TYPE, 'A'); |
349 }); | 341 }); |
350 }); | 342 }); |
351 }); | 343 }); |
352 | 344 |
353 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); | 345 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); |
354 expect(group.suggestions, hasLength(1)); | 346 expect(group.suggestions, hasLength(1)); |
355 } | 347 } |
356 | 348 |
357 test_addSuggestions() async { | 349 test_addSuggestions() async { |
358 String groupName = 'a'; | 350 String groupName = 'a'; |
359 ChangeBuilderImpl builder = new ChangeBuilderImpl(); | 351 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
360 await builder.addFileEdit(path, 0, (FileEditBuilder builder) { | 352 await builder.addFileEdit(path, (FileEditBuilder builder) { |
361 builder.addInsertion(10, (EditBuilder builder) { | 353 builder.addInsertion(10, (EditBuilder builder) { |
362 builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) { | 354 builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) { |
363 builder.addSuggestions(LinkedEditSuggestionKind.TYPE, ['A', 'B']); | 355 builder.addSuggestions(LinkedEditSuggestionKind.TYPE, ['A', 'B']); |
364 }); | 356 }); |
365 }); | 357 }); |
366 }); | 358 }); |
367 | 359 |
368 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); | 360 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); |
369 expect(group.suggestions, hasLength(2)); | 361 expect(group.suggestions, hasLength(2)); |
370 } | 362 } |
371 } | 363 } |
OLD | NEW |