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

Side by Side Diff: pkg/analysis_server/test/src/utilities/change_builder_core_test.dart

Issue 1110583002: Add utilities for creating SourceChanges (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add missed files Created 5 years, 7 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
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698