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

Side by Side Diff: pkg/analyzer/test/src/task/incremental_element_builder_test.dart

Issue 1124553005: Initial steps for the incremental elements builder. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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 test.src.task.incremental_element_builder_test;
6
7 import 'package:analyzer/src/generated/ast.dart';
8 import 'package:analyzer/src/generated/element.dart';
9 import 'package:analyzer/src/generated/source.dart';
10 import 'package:analyzer/src/task/incremental_element_builder.dart';
11 import 'package:unittest/unittest.dart';
12
13 import '../../reflective_tests.dart';
14 import '../context/abstract_context.dart';
15
16 main() {
17 groupSep = ' | ';
18 runReflectiveTests(IncrementalCompilationUnitElementBuilderTest);
19 }
20
21 @reflectiveTest
22 class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest {
23 Source source;
24 String oldCode;
25 CompilationUnit oldUnit;
26
27 String newCode;
28 CompilationUnit newUnit;
29
30 String getNodeText(AstNode node) {
31 return newCode.substring(node.offset, node.end);
32 }
33
34 test_directives_add() {
35 _buildOldUnit(r'''
36 library test;
37 import 'dart:math';
38 ''');
39 _buildNewUnit(r'''
40 library test;
41 import 'dart:async';
42 import 'dart:math';
43 ''');
44 var oldDirectives = oldUnit.directives;
45 var newDirectives = newUnit.directives;
46 {
47 Directive newNode = newDirectives[0];
48 expect(newNode, same(oldDirectives[0]));
49 expect(getNodeText(newNode), "library test;");
50 LibraryElement element = newNode.element;
51 expect(element, isNotNull);
52 expect(element.nameOffset, newCode.indexOf('test;'));
53 }
54 {
55 Directive newNode = newDirectives[1];
56 expect(getNodeText(newNode), "import 'dart:async';");
57 ImportElement element = newNode.element;
58 expect(element, isNull);
59 }
60 {
61 Directive newNode = newDirectives[2];
62 expect(newNode, same(oldDirectives[1]));
63 expect(getNodeText(newNode), "import 'dart:math';");
64 ImportElement element = newNode.element;
65 expect(element, isNotNull);
66 expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
67 }
68 }
69
70 test_directives_remove() {
71 _buildOldUnit(r'''
72 library test;
73 import 'dart:async';
74 import 'dart:math';
75 ''');
76 _buildNewUnit(r'''
77 library test;
78 import 'dart:math';
79 ''');
80 var oldDirectives = oldUnit.directives;
81 var newDirectives = newUnit.directives;
82 {
83 Directive newNode = newDirectives[0];
84 expect(newNode, same(oldDirectives[0]));
85 expect(getNodeText(newNode), "library test;");
86 LibraryElement element = newNode.element;
87 expect(element, isNotNull);
88 expect(element.nameOffset, newCode.indexOf('test;'));
89 }
90 {
91 Directive newNode = newDirectives[1];
92 expect(newNode, same(oldDirectives[2]));
93 expect(getNodeText(newNode), "import 'dart:math';");
94 ImportElement element = newNode.element;
95 expect(element, isNotNull);
96 expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
97 }
98 }
99
100 test_directives_reorder() {
101 _buildOldUnit(r'''
102 library test;
103 import 'dart:math' as m;
104 import 'dart:async';
105 ''');
106 _buildNewUnit(r'''
107 library test;
108 import 'dart:async';
109 import 'dart:math' as m;
110 ''');
111 var oldDirectives = oldUnit.directives;
112 var newDirectives = newUnit.directives;
113 {
114 Directive newNode = newDirectives[0];
115 expect(newNode, same(oldDirectives[0]));
116 expect(getNodeText(newNode), "library test;");
117 LibraryElement element = newNode.element;
118 expect(element, isNotNull);
119 expect(element.nameOffset, newCode.indexOf('test;'));
120 }
121 {
122 Directive newNode = newDirectives[1];
123 expect(newNode, same(oldDirectives[2]));
124 expect(getNodeText(newNode), "import 'dart:async';");
125 ImportElement element = newNode.element;
126 expect(element, isNotNull);
127 expect(element.nameOffset, newCode.indexOf("import 'dart:async';"));
128 }
129 {
130 Directive newNode = newDirectives[2];
131 expect(newNode, same(oldDirectives[1]));
132 expect(getNodeText(newNode), "import 'dart:math' as m;");
133 ImportElement element = newNode.element;
134 expect(element, isNotNull);
135 expect(element.nameOffset, newCode.indexOf("import 'dart:math' as m;"));
136 expect(element.prefix.nameOffset, newCode.indexOf("m;"));
137 }
138 }
139
140 test_directives_sameOrder_insertSpaces() {
141 _buildOldUnit(r'''
142 library test;
143 import 'dart:async';
144 import 'dart:math';
145 ''');
146 _buildNewUnit(r'''
147 library test;
148
149 import 'dart:async' ;
150 import 'dart:math';
151 ''');
152 var oldDirectives = oldUnit.directives;
153 var newDirectives = newUnit.directives;
154 {
155 Directive newNode = newDirectives[0];
156 expect(newNode, same(oldDirectives[0]));
157 expect(getNodeText(newNode), "library test;");
158 LibraryElement element = newNode.element;
159 expect(element, isNotNull);
160 expect(element.nameOffset, newCode.indexOf('test;'));
161 }
162 {
163 Directive newNode = newDirectives[1];
164 expect(newNode, same(oldDirectives[1]));
165 expect(getNodeText(newNode), "import 'dart:async' ;");
166 ImportElement element = newNode.element;
167 expect(element, isNotNull);
168 expect(element.nameOffset, newCode.indexOf("import 'dart:async' ;"));
169 }
170 {
171 Directive newNode = newDirectives[2];
172 expect(newNode, same(oldDirectives[2]));
173 expect(getNodeText(newNode), "import 'dart:math';");
174 ImportElement element = newNode.element;
175 expect(element, isNotNull);
176 expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
177 }
178 }
179
180 test_directives_sameOrder_removeSpaces() {
181 _buildOldUnit(r'''
182 library test;
183
184 import 'dart:async' ;
185 import 'dart:math';
186 ''');
187 _buildNewUnit(r'''
188 library test;
189 import 'dart:async';
190 import 'dart:math';
191 ''');
192 var oldDirectives = oldUnit.directives;
193 var newDirectives = newUnit.directives;
194 {
195 Directive newNode = newDirectives[0];
196 expect(newNode, same(oldDirectives[0]));
197 expect(getNodeText(newNode), "library test;");
198 LibraryElement element = newNode.element;
199 expect(element, isNotNull);
200 expect(element.nameOffset, newCode.indexOf('test;'));
201 }
202 {
203 Directive newNode = newDirectives[1];
204 expect(newNode, same(oldDirectives[1]));
205 expect(getNodeText(newNode), "import 'dart:async';");
206 ImportElement element = newNode.element;
207 expect(element, isNotNull);
208 expect(element.nameOffset, newCode.indexOf("import 'dart:async';"));
209 }
210 {
211 Directive newNode = newDirectives[2];
212 expect(newNode, same(oldDirectives[2]));
213 expect(getNodeText(newNode), "import 'dart:math';");
214 ImportElement element = newNode.element;
215 expect(element, isNotNull);
216 expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
217 }
218 }
219
220 void _buildNewUnit(String newCode) {
221 this.newCode = newCode;
222 context.setContents(source, newCode);
223 newUnit = context.parseCompilationUnit(source);
224 new IncrementalCompilationUnitElementBuilder(oldUnit, newUnit).build();
225 }
226
227 void _buildOldUnit(String oldCode) {
228 this.oldCode = oldCode;
229 source = newSource('/test.dart', oldCode);
230 oldUnit = context.resolveCompilationUnit2(source, source);
231 }
232 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/task/incremental_element_builder.dart ('k') | pkg/analyzer/test/src/task/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698