OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 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. |
| 4 |
| 5 library analysis_server.test.src.utilities.change_builder_core_test; |
| 6 |
| 7 import 'package:analysis_server/src/utilities/change_builder_core.dart'; |
| 8 import 'package:analysis_server/src/protocol.dart'; |
| 9 import 'package:analysis_server/utilities/change_builder_core.dart'; |
| 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 11 import 'package:unittest/unittest.dart'; |
| 12 import '../../domain_execution_test.dart'; |
| 13 |
| 14 main() { |
| 15 groupSep = ' | '; |
| 16 defineReflectiveTests(ChangeBuilderImplTest); |
| 17 defineReflectiveTests(EditBuilderImplTest); |
| 18 defineReflectiveTests(FileEditBuilderImplTest); |
| 19 defineReflectiveTests(LinkedEditBuilderImplTest); |
| 20 } |
| 21 |
| 22 @reflectiveTest |
| 23 class ChangeBuilderImplTest { |
| 24 void test_createFileEditBuilder() { |
| 25 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 26 TestSource source = new TestSource('/test.dart'); |
| 27 int timeStamp = 54; |
| 28 FileEditBuilderImpl fileEditBuilder = builder.createFileEditBuilder(source,
timeStamp); |
| 29 expect(fileEditBuilder, new isInstanceOf<FileEditBuilder>()); |
| 30 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; |
| 31 expect(fileEdit.file, source.fullName); |
| 32 expect(fileEdit.fileStamp, timeStamp); |
| 33 } |
| 34 |
| 35 void test_getLinkedEditGroup() { |
| 36 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 37 LinkedEditGroup group = builder.getLinkedEditGroup('a'); |
| 38 expect(identical(builder.getLinkedEditGroup('b'), group), isFalse); |
| 39 expect(identical(builder.getLinkedEditGroup('a'), group), isTrue); |
| 40 } |
| 41 |
| 42 void test_sourceChange_noChanges() { |
| 43 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 44 SourceChange sourceChange = builder.sourceChange; |
| 45 expect(sourceChange, isNotNull); |
| 46 expect(sourceChange.edits, isEmpty); |
| 47 expect(sourceChange.linkedEditGroups, isEmpty); |
| 48 expect(sourceChange.message, isEmpty); |
| 49 expect(sourceChange.selection, isNull); |
| 50 } |
| 51 |
| 52 void test_sourceChange_oneChange() { |
| 53 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 54 TestSource source = new TestSource('/test.dart'); |
| 55 builder.addFileEdit(source, 0, (FileEditBuilder builder) {}); |
| 56 builder.getLinkedEditGroup('a'); |
| 57 SourceChange sourceChange = builder.sourceChange; |
| 58 expect(sourceChange, isNotNull); |
| 59 expect(sourceChange.edits, hasLength(1)); |
| 60 expect(sourceChange.linkedEditGroups, hasLength(1)); |
| 61 expect(sourceChange.message, isEmpty); |
| 62 expect(sourceChange.selection, isNull); |
| 63 } |
| 64 } |
| 65 |
| 66 @reflectiveTest |
| 67 class EditBuilderImplTest { |
| 68 TestSource source = new TestSource('/test.dart'); |
| 69 |
| 70 void test_addLinkedEdit() { |
| 71 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 72 int offset = 10; |
| 73 String text = 'content'; |
| 74 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 75 builder.addInsertion(10, (EditBuilderImpl builder) { |
| 76 builder.addLinkedEdit('a', (LinkedEditBuilder builder) { |
| 77 builder.write(text); |
| 78 }); |
| 79 SourceEdit sourceEdit = builder.sourceEdit; |
| 80 expect(sourceEdit.replacement, text); |
| 81 }); |
| 82 }); |
| 83 SourceChange sourceChange = builder.sourceChange; |
| 84 expect(sourceChange, isNotNull); |
| 85 List<LinkedEditGroup> groups = sourceChange.linkedEditGroups; |
| 86 expect(groups, hasLength(1)); |
| 87 LinkedEditGroup group = groups[0]; |
| 88 expect(group, isNotNull); |
| 89 expect(group.length, text.length); |
| 90 List<Position> positions = group.positions; |
| 91 expect(positions, hasLength(1)); |
| 92 expect(positions[0].offset, offset); |
| 93 } |
| 94 |
| 95 void test_createLinkedEditBuilder() { |
| 96 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 97 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 98 builder.addInsertion(10, (EditBuilderImpl builder) { |
| 99 LinkedEditBuilderImpl linkBuilder = builder.createLinkedEditBuilder(); |
| 100 expect(linkBuilder, new isInstanceOf<LinkedEditBuilder>()); |
| 101 }); |
| 102 }); |
| 103 } |
| 104 |
| 105 void test_write() { |
| 106 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 107 int timeStamp = 93; |
| 108 int offset = 10; |
| 109 String text = 'write'; |
| 110 builder.addFileEdit(source, timeStamp, (FileEditBuilderImpl builder) { |
| 111 builder.addInsertion(offset, (EditBuilderImpl builder) { |
| 112 builder.write(text); |
| 113 }); |
| 114 }); |
| 115 |
| 116 SourceChange sourceChange = builder.sourceChange; |
| 117 expect(sourceChange, isNotNull); |
| 118 |
| 119 List<SourceFileEdit> fileEdits = sourceChange.edits; |
| 120 expect(fileEdits, hasLength(1)); |
| 121 SourceFileEdit fileEdit = fileEdits[0]; |
| 122 expect(fileEdit, isNotNull); |
| 123 expect(fileEdit.file, source.fullName); |
| 124 expect(fileEdit.fileStamp, timeStamp); |
| 125 |
| 126 List<SourceEdit> edits = fileEdit.edits; |
| 127 expect(edits, hasLength(1)); |
| 128 SourceEdit edit = edits[0]; |
| 129 expect(edit, isNotNull); |
| 130 expect(edit.offset, offset); |
| 131 expect(edit.length, 0); |
| 132 expect(edit.replacement, text); |
| 133 } |
| 134 |
| 135 void test_writeln() { |
| 136 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 137 int timeStamp = 39; |
| 138 int offset = 52; |
| 139 int length = 12; |
| 140 String text = 'writeln'; |
| 141 builder.addFileEdit(source, timeStamp, (FileEditBuilderImpl builder) { |
| 142 builder.addReplacement(offset, length, (EditBuilderImpl builder) { |
| 143 builder.writeln(text); |
| 144 }); |
| 145 }); |
| 146 |
| 147 SourceChange sourceChange = builder.sourceChange; |
| 148 expect(sourceChange, isNotNull); |
| 149 |
| 150 List<SourceFileEdit> fileEdits = sourceChange.edits; |
| 151 expect(fileEdits, hasLength(1)); |
| 152 SourceFileEdit fileEdit = fileEdits[0]; |
| 153 expect(fileEdit, isNotNull); |
| 154 expect(fileEdit.file, source.fullName); |
| 155 expect(fileEdit.fileStamp, timeStamp); |
| 156 |
| 157 List<SourceEdit> edits = fileEdit.edits; |
| 158 expect(edits, hasLength(1)); |
| 159 SourceEdit edit = edits[0]; |
| 160 expect(edit, isNotNull); |
| 161 expect(edit.offset, offset); |
| 162 expect(edit.length, length); |
| 163 expect(edit.replacement == '$text\n' || edit.replacement == '$text\r\n', isT
rue); |
| 164 } |
| 165 } |
| 166 |
| 167 @reflectiveTest |
| 168 class FileEditBuilderImplTest { |
| 169 TestSource source = new TestSource('/test.dart'); |
| 170 |
| 171 void test_addInsertion() { |
| 172 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 173 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 174 builder.addInsertion(10, (EditBuilderImpl builder) { |
| 175 expect(builder, isNotNull); |
| 176 }); |
| 177 }); |
| 178 } |
| 179 |
| 180 void test_addLinkedPosition() { |
| 181 ChangeBuilderImpl changeBuilder = new ChangeBuilderImpl(); |
| 182 String groupName = 'a'; |
| 183 changeBuilder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 184 builder.addLinkedPosition(3, 6, groupName); |
| 185 }); |
| 186 |
| 187 LinkedEditGroup group = changeBuilder.getLinkedEditGroup(groupName); |
| 188 List<Position> positions = group.positions; |
| 189 expect(positions, hasLength(1)); |
| 190 Position position = positions[0]; |
| 191 expect(position.file, source.fullName); |
| 192 expect(position.offset, 3); |
| 193 expect(group.length, 6); |
| 194 } |
| 195 |
| 196 void test_addReplacement() { |
| 197 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 198 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 199 builder.addReplacement(4, 5, (EditBuilderImpl builder) { |
| 200 expect(builder, isNotNull); |
| 201 }); |
| 202 }); |
| 203 } |
| 204 |
| 205 void test_createEditBuilder() { |
| 206 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 207 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 208 int offset = 4; |
| 209 int length = 5; |
| 210 EditBuilderImpl editBuilder = builder.createEditBuilder(offset, length); |
| 211 expect(editBuilder, new isInstanceOf<EditBuilder>()); |
| 212 SourceEdit sourceEdit = editBuilder.sourceEdit; |
| 213 expect(sourceEdit.length, length); |
| 214 expect(sourceEdit.offset, offset); |
| 215 expect(sourceEdit.replacement, isEmpty); |
| 216 }); |
| 217 } |
| 218 } |
| 219 |
| 220 @reflectiveTest |
| 221 class LinkedEditBuilderImplTest { |
| 222 TestSource source = new TestSource('/test.dart'); |
| 223 |
| 224 void test_addSuggestion() { |
| 225 String groupName = 'a'; |
| 226 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 227 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 228 builder.addInsertion(10, (EditBuilderImpl builder) { |
| 229 builder.addLinkedEdit(groupName, (LinkedEditBuilderImpl builder) { |
| 230 builder.addSuggestion(LinkedEditSuggestionKind.TYPE, 'A'); |
| 231 }); |
| 232 }); |
| 233 }); |
| 234 |
| 235 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); |
| 236 expect(group.suggestions, hasLength(1)); |
| 237 } |
| 238 |
| 239 void test_addSuggestions() { |
| 240 String groupName = 'a'; |
| 241 ChangeBuilderImpl builder = new ChangeBuilderImpl(); |
| 242 builder.addFileEdit(source, 0, (FileEditBuilderImpl builder) { |
| 243 builder.addInsertion(10, (EditBuilderImpl builder) { |
| 244 builder.addLinkedEdit(groupName, (LinkedEditBuilderImpl builder) { |
| 245 builder.addSuggestions(LinkedEditSuggestionKind.TYPE, ['A', 'B']); |
| 246 }); |
| 247 }); |
| 248 }); |
| 249 |
| 250 LinkedEditGroup group = builder.getLinkedEditGroup(groupName); |
| 251 expect(group.suggestions, hasLength(2)); |
| 252 } |
| 253 } |
OLD | NEW |