| 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.correction.change; | 5 library test.services.correction.change; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/constants.dart'; | 7 import 'package:analysis_server/src/constants.dart'; |
| 8 import 'package:analysis_server/src/protocol2.dart' show SourceEdit; |
| 8 import 'package:analysis_server/src/services/correction/change.dart'; | 9 import 'package:analysis_server/src/services/correction/change.dart'; |
| 9 import 'package:analysis_testing/reflective_tests.dart'; | 10 import 'package:analysis_testing/reflective_tests.dart'; |
| 10 import 'package:analyzer/src/generated/source.dart'; | 11 import 'package:analyzer/src/generated/source.dart'; |
| 11 import 'package:unittest/unittest.dart'; | 12 import 'package:unittest/unittest.dart'; |
| 12 | 13 |
| 13 | 14 |
| 14 main() { | 15 main() { |
| 15 groupSep = ' | '; | 16 groupSep = ' | '; |
| 16 runReflectiveTests(ChangeTest); | 17 runReflectiveTests(ChangeTest); |
| 17 runReflectiveTests(EditTest); | 18 runReflectiveTests(EditTest); |
| 18 runReflectiveTests(FileEditTest); | 19 runReflectiveTests(FileEditTest); |
| 19 runReflectiveTests(LinkedEditGroupTest); | 20 runReflectiveTests(LinkedEditGroupTest); |
| 20 runReflectiveTests(LinkedEditSuggestionTest); | 21 runReflectiveTests(LinkedEditSuggestionTest); |
| 21 runReflectiveTests(PositionTest); | 22 runReflectiveTests(PositionTest); |
| 22 } | 23 } |
| 23 | 24 |
| 24 | 25 |
| 25 @ReflectiveTestCase() | 26 @ReflectiveTestCase() |
| 26 class ChangeTest { | 27 class ChangeTest { |
| 27 void test_addEdit() { | 28 void test_addEdit() { |
| 28 Change change = new Change('msg'); | 29 Change change = new Change('msg'); |
| 29 Edit edit1 = new Edit(1, 2, 'a'); | 30 SourceEdit edit1 = new SourceEdit(1, 2, 'a'); |
| 30 Edit edit2 = new Edit(1, 2, 'b'); | 31 SourceEdit edit2 = new SourceEdit(1, 2, 'b'); |
| 31 expect(change.fileEdits, hasLength(0)); | 32 expect(change.fileEdits, hasLength(0)); |
| 32 change.addEdit('/a.dart', edit1); | 33 change.addEdit('/a.dart', edit1); |
| 33 expect(change.fileEdits, hasLength(1)); | 34 expect(change.fileEdits, hasLength(1)); |
| 34 change.addEdit('/a.dart', edit2); | 35 change.addEdit('/a.dart', edit2); |
| 35 expect(change.fileEdits, hasLength(1)); | 36 expect(change.fileEdits, hasLength(1)); |
| 36 { | 37 { |
| 37 FileEdit fileEdit = change.getFileEdit('/a.dart'); | 38 FileEdit fileEdit = change.getFileEdit('/a.dart'); |
| 38 expect(fileEdit, isNotNull); | 39 expect(fileEdit, isNotNull); |
| 39 expect(fileEdit.edits, unorderedEquals([edit1, edit2])); | 40 expect(fileEdit.edits, unorderedEquals([edit1, edit2])); |
| 40 } | 41 } |
| 41 } | 42 } |
| 42 | 43 |
| 43 void test_getFileEdit() { | 44 void test_getFileEdit() { |
| 44 Change change = new Change('msg'); | 45 Change change = new Change('msg'); |
| 45 FileEdit fileEdit = new FileEdit('/a.dart'); | 46 FileEdit fileEdit = new FileEdit('/a.dart'); |
| 46 change.addFileEdit(fileEdit); | 47 change.addFileEdit(fileEdit); |
| 47 expect(change.getFileEdit('/a.dart'), fileEdit); | 48 expect(change.getFileEdit('/a.dart'), fileEdit); |
| 48 } | 49 } |
| 49 | 50 |
| 50 void test_getFileEdit_empty() { | 51 void test_getFileEdit_empty() { |
| 51 Change change = new Change('msg'); | 52 Change change = new Change('msg'); |
| 52 expect(change.getFileEdit('/some.dart'), isNull); | 53 expect(change.getFileEdit('/some.dart'), isNull); |
| 53 } | 54 } |
| 54 | 55 |
| 55 void test_toJson() { | 56 void test_toJson() { |
| 56 Change change = new Change('msg'); | 57 Change change = new Change('msg'); |
| 57 change.addFileEdit(new FileEdit('/a.dart') | 58 change.addFileEdit(new FileEdit('/a.dart') |
| 58 ..add(new Edit(1, 2, 'aaa')) | 59 ..add(new SourceEdit(1, 2, 'aaa')) |
| 59 ..add(new Edit(10, 20, 'bbb'))); | 60 ..add(new SourceEdit(10, 20, 'bbb'))); |
| 60 change.addFileEdit(new FileEdit('/b.dart') | 61 change.addFileEdit(new FileEdit('/b.dart') |
| 61 ..add(new Edit(21, 22, 'xxx')) | 62 ..add(new SourceEdit(21, 22, 'xxx')) |
| 62 ..add(new Edit(210, 220, 'yyy'))); | 63 ..add(new SourceEdit(210, 220, 'yyy'))); |
| 63 { | 64 { |
| 64 var group = new LinkedEditGroup('id-a'); | 65 var group = new LinkedEditGroup('id-a'); |
| 65 change.addLinkedEditGroup(group | 66 change.addLinkedEditGroup(group |
| 66 ..addPosition(new Position('/ga.dart', 1), 2) | 67 ..addPosition(new Position('/ga.dart', 1), 2) |
| 67 ..addPosition(new Position('/ga.dart', 10), 2)); | 68 ..addPosition(new Position('/ga.dart', 10), 2)); |
| 68 group.addSuggestion( | 69 group.addSuggestion( |
| 69 new LinkedEditSuggestion(LinkedEditSuggestionKind.TYPE, 'AA')); | 70 new LinkedEditSuggestion(LinkedEditSuggestionKind.TYPE, 'AA')); |
| 70 group.addSuggestion( | 71 group.addSuggestion( |
| 71 new LinkedEditSuggestion(LinkedEditSuggestionKind.TYPE, 'BB')); | 72 new LinkedEditSuggestion(LinkedEditSuggestionKind.TYPE, 'BB')); |
| 72 } | 73 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 expect(change.toJson(), expectedJson); | 137 expect(change.toJson(), expectedJson); |
| 137 // some toString() | 138 // some toString() |
| 138 change.toString(); | 139 change.toString(); |
| 139 } | 140 } |
| 140 } | 141 } |
| 141 | 142 |
| 142 | 143 |
| 143 @ReflectiveTestCase() | 144 @ReflectiveTestCase() |
| 144 class EditTest { | 145 class EditTest { |
| 145 void test_applySequence() { | 146 void test_applySequence() { |
| 146 Edit edit1 = new Edit(5, 2, 'abc'); | 147 SourceEdit edit1 = new SourceEdit(5, 2, 'abc'); |
| 147 Edit edit2 = new Edit(1, 0, '!'); | 148 SourceEdit edit2 = new SourceEdit(1, 0, '!'); |
| 148 expect(Edit.applySequence('0123456789', [edit1, edit2]), '0!1234abc789'); | 149 expect(applySequence('0123456789', [edit1, edit2]), '0!1234abc789'); |
| 149 } | |
| 150 | |
| 151 void test_end() { | |
| 152 Edit edit = new Edit(1, 2, 'foo'); | |
| 153 expect(edit.end, 3); | |
| 154 } | 150 } |
| 155 | 151 |
| 156 void test_eqEq() { | 152 void test_eqEq() { |
| 157 Edit a = new Edit(1, 2, 'aaa'); | 153 SourceEdit a = new SourceEdit(1, 2, 'aaa'); |
| 158 Edit a2 = new Edit(1, 2, 'aaa'); | 154 SourceEdit a2 = new SourceEdit(1, 2, 'aaa'); |
| 159 Edit b = new Edit(1, 2, 'aaa'); | 155 SourceEdit b = new SourceEdit(1, 2, 'aaa'); |
| 160 expect(a == a, isTrue); | 156 expect(a == a, isTrue); |
| 161 expect(a == new Edit(1, 2, 'aaa'), isTrue); | 157 expect(a == new SourceEdit(1, 2, 'aaa'), isTrue); |
| 162 expect(a == this, isFalse); | 158 expect(a == this, isFalse); |
| 163 expect(a == new Edit(1, 2, 'bbb'), isFalse); | 159 expect(a == new SourceEdit(1, 2, 'bbb'), isFalse); |
| 164 expect(a == new Edit(10, 2, 'aaa'), isFalse); | 160 expect(a == new SourceEdit(10, 2, 'aaa'), isFalse); |
| 165 } | 161 } |
| 166 | 162 |
| 167 void test_new() { | 163 void test_new() { |
| 168 Edit edit = new Edit(1, 2, 'foo'); | 164 SourceEdit edit = new SourceEdit(1, 2, 'foo', id: 'my-id'); |
| 169 edit.id = 'my-id'; | |
| 170 expect(edit.offset, 1); | 165 expect(edit.offset, 1); |
| 171 expect(edit.length, 2); | 166 expect(edit.length, 2); |
| 172 expect(edit.replacement, 'foo'); | 167 expect(edit.replacement, 'foo'); |
| 173 expect( | 168 expect( |
| 174 edit.toString(), | 169 edit.toJson(), |
| 175 'Edit(offset=1, length=2, replacement=:>foo<:, id=my-id)'); | 170 {'offset': 1, 'length': 2, 'replacement': 'foo', 'id': 'my-id'}); |
| 176 } | 171 } |
| 177 | 172 |
| 178 void test_new_range() { | 173 void test_editFromRange() { |
| 179 SourceRange range = new SourceRange(1, 2); | 174 SourceRange range = new SourceRange(1, 2); |
| 180 Edit edit = new Edit.range(range, 'foo'); | 175 SourceEdit edit = editFromRange(range, 'foo'); |
| 181 expect(edit.offset, 1); | 176 expect(edit.offset, 1); |
| 182 expect(edit.length, 2); | 177 expect(edit.length, 2); |
| 183 expect(edit.replacement, 'foo'); | 178 expect(edit.replacement, 'foo'); |
| 184 } | 179 } |
| 185 void test_toJson() { | 180 void test_toJson() { |
| 186 Edit edit = new Edit(1, 2, 'foo'); | 181 SourceEdit edit = new SourceEdit(1, 2, 'foo'); |
| 187 var expectedJson = { | 182 var expectedJson = { |
| 188 OFFSET: 1, | 183 OFFSET: 1, |
| 189 LENGTH: 2, | 184 LENGTH: 2, |
| 190 REPLACEMENT: 'foo' | 185 REPLACEMENT: 'foo' |
| 191 }; | 186 }; |
| 192 expect(edit.toJson(), expectedJson); | 187 expect(edit.toJson(), expectedJson); |
| 193 } | 188 } |
| 194 | 189 |
| 195 } | 190 } |
| 196 | 191 |
| 197 | 192 |
| 198 @ReflectiveTestCase() | 193 @ReflectiveTestCase() |
| 199 class FileEditTest { | 194 class FileEditTest { |
| 200 void test_addAll() { | 195 void test_addAll() { |
| 201 Edit edit1a = new Edit(1, 0, 'a1'); | 196 SourceEdit edit1a = new SourceEdit(1, 0, 'a1'); |
| 202 Edit edit1b = new Edit(1, 0, 'a2'); | 197 SourceEdit edit1b = new SourceEdit(1, 0, 'a2'); |
| 203 Edit edit10 = new Edit(10, 1, 'b'); | 198 SourceEdit edit10 = new SourceEdit(10, 1, 'b'); |
| 204 Edit edit100 = new Edit(100, 2, 'c'); | 199 SourceEdit edit100 = new SourceEdit(100, 2, 'c'); |
| 205 FileEdit fileEdit = new FileEdit('/test.dart'); | 200 FileEdit fileEdit = new FileEdit('/test.dart'); |
| 206 fileEdit.addAll([edit100, edit1a, edit10, edit1b]); | 201 fileEdit.addAll([edit100, edit1a, edit10, edit1b]); |
| 207 expect(fileEdit.edits, [edit100, edit10, edit1b, edit1a]); | 202 expect(fileEdit.edits, [edit100, edit10, edit1b, edit1a]); |
| 208 } | 203 } |
| 209 | 204 |
| 210 void test_add_sorts() { | 205 void test_add_sorts() { |
| 211 Edit edit1a = new Edit(1, 0, 'a1'); | 206 SourceEdit edit1a = new SourceEdit(1, 0, 'a1'); |
| 212 Edit edit1b = new Edit(1, 0, 'a2'); | 207 SourceEdit edit1b = new SourceEdit(1, 0, 'a2'); |
| 213 Edit edit10 = new Edit(10, 1, 'b'); | 208 SourceEdit edit10 = new SourceEdit(10, 1, 'b'); |
| 214 Edit edit100 = new Edit(100, 2, 'c'); | 209 SourceEdit edit100 = new SourceEdit(100, 2, 'c'); |
| 215 FileEdit fileEdit = new FileEdit('/test.dart'); | 210 FileEdit fileEdit = new FileEdit('/test.dart'); |
| 216 fileEdit.add(edit100); | 211 fileEdit.add(edit100); |
| 217 fileEdit.add(edit1a); | 212 fileEdit.add(edit1a); |
| 218 fileEdit.add(edit1b); | 213 fileEdit.add(edit1b); |
| 219 fileEdit.add(edit10); | 214 fileEdit.add(edit10); |
| 220 expect(fileEdit.edits, [edit100, edit10, edit1b, edit1a]); | 215 expect(fileEdit.edits, [edit100, edit10, edit1b, edit1a]); |
| 221 } | 216 } |
| 222 | 217 |
| 223 void test_new() { | 218 void test_new() { |
| 224 FileEdit fileEdit = new FileEdit('/test.dart'); | 219 FileEdit fileEdit = new FileEdit('/test.dart'); |
| 225 fileEdit.add(new Edit(1, 2, 'aaa')); | 220 fileEdit.add(new SourceEdit(1, 2, 'aaa')); |
| 226 fileEdit.add(new Edit(10, 20, 'bbb')); | 221 fileEdit.add(new SourceEdit(10, 20, 'bbb')); |
| 227 expect( | 222 expect( |
| 228 fileEdit.toString(), | 223 fileEdit.toString(), |
| 229 'FileEdit(file=/test.dart, edits=[' | 224 'FileEdit(file=/test.dart, edits=[' |
| 230 'Edit(offset=10, length=20, replacement=:>bbb<:), ' | 225 '{"offset":10,"length":20,"replacement":"bbb"}, ' |
| 231 'Edit(offset=1, length=2, replacement=:>aaa<:)])'); | 226 '{"offset":1,"length":2,"replacement":"aaa"}])'); |
| 232 } | 227 } |
| 233 | 228 |
| 234 void test_toJson() { | 229 void test_toJson() { |
| 235 FileEdit fileEdit = new FileEdit('/test.dart'); | 230 FileEdit fileEdit = new FileEdit('/test.dart'); |
| 236 fileEdit.add(new Edit(1, 2, 'aaa')); | 231 fileEdit.add(new SourceEdit(1, 2, 'aaa')); |
| 237 fileEdit.add(new Edit(10, 20, 'bbb')); | 232 fileEdit.add(new SourceEdit(10, 20, 'bbb')); |
| 238 var expectedJson = { | 233 var expectedJson = { |
| 239 FILE: '/test.dart', | 234 FILE: '/test.dart', |
| 240 EDITS: [{ | 235 EDITS: [{ |
| 241 OFFSET: 10, | 236 OFFSET: 10, |
| 242 LENGTH: 20, | 237 LENGTH: 20, |
| 243 REPLACEMENT: 'bbb' | 238 REPLACEMENT: 'bbb' |
| 244 }, { | 239 }, { |
| 245 OFFSET: 1, | 240 OFFSET: 1, |
| 246 LENGTH: 2, | 241 LENGTH: 2, |
| 247 REPLACEMENT: 'aaa' | 242 REPLACEMENT: 'aaa' |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 | 332 |
| 338 void test_toJson() { | 333 void test_toJson() { |
| 339 Position position = new Position('/test.dart', 1); | 334 Position position = new Position('/test.dart', 1); |
| 340 var expectedJson = { | 335 var expectedJson = { |
| 341 FILE: '/test.dart', | 336 FILE: '/test.dart', |
| 342 OFFSET: 1 | 337 OFFSET: 1 |
| 343 }; | 338 }; |
| 344 expect(position.toJson(), expectedJson); | 339 expect(position.toJson(), expectedJson); |
| 345 } | 340 } |
| 346 } | 341 } |
| OLD | NEW |