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

Side by Side Diff: packages/initialize/test/transformer_test.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « packages/initialize/test/parts/foo.dart ('k') | packages/initialize/test_package/README.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 library initialize.transformer_test;
5
6 import 'common.dart';
7 import 'package:analyzer/src/generated/element.dart';
8 import 'package:dart_style/dart_style.dart';
9 import 'package:initialize/transformer.dart';
10 import 'package:unittest/compact_vm_config.dart';
11 import 'package:unittest/unittest.dart';
12
13 var formatter = new DartFormatter();
14
15 main() {
16 useCompactVMConfiguration();
17
18 group('Html entry points', htmlEntryPointTests);
19 group('Dart entry points', dartEntryPointTests);
20 group('InitializerPlugins', pluginTests);
21 }
22
23 void htmlEntryPointTests() {
24 var phases = [[new InitializeTransformer(['web/*.html'])]];
25
26 testPhases('basic', phases, {
27 'a|web/index.html': '''
28 <html><head></head><body>
29 <script type="application/dart" src="index.dart"></script>
30 </body></html>
31 '''.replaceAll(' ', ''),
32 'a|web/index.dart': '''
33 library web_foo;
34
35 import 'foo.dart';
36 ''',
37 'a|web/foo.dart': '''
38 @constInit
39 library foo;
40
41 import 'package:initialize/initialize.dart';
42 import 'package:test_initializers/common.dart';
43 import 'package:bar/bar.dart';
44
45 @constInit
46 class Foo extends Bar {}
47
48 @initMethod
49 foo() {}
50 ''',
51 'bar|lib/bar.dart': '''
52 @DynamicInit('bar')
53 @DynamicInit('bar2')
54 library bar;
55
56 import 'package:initialize/initialize.dart';
57 import 'package:test_initializers/common.dart';
58 import 'baz.dart';
59
60 @DynamicInit('Bar')
61 @DynamicInit('Bar2')
62 class Bar {}
63
64 @DynamicInit('bar()')
65 @initMethod
66 bar() {}
67 ''',
68 'bar|lib/baz.dart': '''
69 @constInit
70 library baz;
71
72 import 'package:test_initializers/common.dart';
73 ''',
74 // Mock out the Initialize package plus some initializers.
75 'initialize|lib/initialize.dart': mockInitialize,
76 'test_initializers|lib/common.dart': commonInitializers,
77 }, {
78 'a|web/index.html': '''
79 <html><head></head><body>
80 <script type="application/dart" src="index.initialize.dart"></script>
81
82 </body></html>'''.replaceAll(' ', ''),
83 'a|web/index.initialize.dart': formatter.format('''
84 import 'package:initialize/src/static_loader.dart';
85 import 'package:initialize/initialize.dart';
86 import 'index.dart' as i0;
87 import 'package:bar/baz.dart' as i1;
88 import 'package:test_initializers/common.dart' as i2;
89 import 'package:bar/bar.dart' as i3;
90 import 'package:initialize/initialize.dart' as i4;
91 import 'foo.dart' as i5;
92
93 main() {
94 initializers.addAll([
95 new InitEntry(i2.constInit, const LibraryIdentifier(#baz, 'bar', 'ba z.dart')),
96 new InitEntry(const i2.DynamicInit('bar'), const LibraryIdentifier(# bar, 'bar', 'bar.dart')),
97 new InitEntry(const i2.DynamicInit('bar2'), const LibraryIdentifier( #bar, 'bar', 'bar.dart')),
98 new InitEntry(const i2.DynamicInit('bar()'), i3.bar),
99 new InitEntry(i4.initMethod, i3.bar),
100 new InitEntry(const i2.DynamicInit('Bar'), i3.Bar),
101 new InitEntry(const i2.DynamicInit('Bar2'), i3.Bar),
102 new InitEntry(i2.constInit, const LibraryIdentifier(#foo, null, 'foo .dart')),
103 new InitEntry(i4.initMethod, i5.foo),
104 new InitEntry(i2.constInit, i5.Foo),
105 ]);
106
107 return i0.main();
108 }
109 ''')
110 }, []);
111 }
112
113 void dartEntryPointTests() {
114 var phases = [[new InitializeTransformer(['web/index.dart'])]];
115
116 testPhases('constructor arguments', phases, {
117 'a|web/index.dart': '''
118 @DynamicInit(foo)
119 @DynamicInit(_foo)
120 @DynamicInit(Foo.foo)
121 @DynamicInit(bar.Foo.bar)
122 @DynamicInit(bar.Foo.foo)
123 @DynamicInit(const [foo, Foo.foo, 'foo'])
124 @DynamicInit(const {'foo': foo, 'Foo.foo': Foo.foo, 'bar': 'bar'})
125 @DynamicInit('foo')
126 @DynamicInit(true)
127 @DynamicInit(null)
128 @DynamicInit(1)
129 @DynamicInit(1.1)
130 @DynamicInit('foo-\$x\${y}')
131 @DynamicInit(1 + 2)
132 @DynamicInit(1.0 + 0.2)
133 @DynamicInit(1 == 1)
134 @NamedArgInit(1, name: 'Bill')
135 library web_foo;
136
137 import 'package:test_initializers/common.dart';
138 import 'foo.dart';
139 import 'foo.dart' as bar;
140
141 const x = 'x';
142 const y = 'y';
143 const _foo = '_foo';
144
145 class MyConst {
146 const MyConst;
147 }
148 ''',
149 'a|web/foo.dart': '''
150 library foo;
151
152 const String foo = 'foo';
153
154 class Bar {
155 const Bar();
156 }
157
158 class Foo {
159 static foo = 'Foo.foo';
160 static bar = const Bar();
161 }
162 ''',
163 // Mock out the Initialize package plus some initializers.
164 'initialize|lib/initialize.dart': mockInitialize,
165 'test_initializers|lib/common.dart': commonInitializers,
166 }, {
167 'a|web/index.initialize.dart': formatter.format('''
168 import 'package:initialize/src/static_loader.dart';
169 import 'package:initialize/initialize.dart';
170 import 'index.dart' as i0;
171 import 'package:test_initializers/common.dart' as i1;
172 import 'foo.dart' as i2;
173
174 main() {
175 initializers.addAll([
176 new InitEntry(const i1.DynamicInit(i2.foo), const LibraryIdentifier( #web_foo, null, 'index.dart')),
177 new InitEntry(const i1.DynamicInit('_foo'), const LibraryIdentifier( #web_foo, null, 'index.dart')),
178 new InitEntry(const i1.DynamicInit(i2.Foo.foo), const LibraryIdentif ier(#web_foo, null, 'index.dart')),
179 new InitEntry(const i1.DynamicInit(i2.Foo.bar), const LibraryIdentif ier(#web_foo, null, 'index.dart')),
180 new InitEntry(const i1.DynamicInit(i2.Foo.foo), const LibraryIdentif ier(#web_foo, null, 'index.dart')),
181 new InitEntry(const i1.DynamicInit(const [i2.foo, i2.Foo.foo, 'foo'] ), const LibraryIdentifier(#web_foo, null, 'index.dart')),
182 new InitEntry(const i1.DynamicInit(const {'foo': i2.foo, 'Foo.foo': i2.Foo.foo, 'bar': 'bar'}), const LibraryIdentifier(#web_foo, null, 'index.dart' )),
183 new InitEntry(const i1.DynamicInit('foo'), const LibraryIdentifier(# web_foo, null, 'index.dart')),
184 new InitEntry(const i1.DynamicInit(true), const LibraryIdentifier(#w eb_foo, null, 'index.dart')),
185 new InitEntry(const i1.DynamicInit(null), const LibraryIdentifier(#w eb_foo, null, 'index.dart')),
186 new InitEntry(const i1.DynamicInit(1), const LibraryIdentifier(#web_ foo, null, 'index.dart')),
187 new InitEntry(const i1.DynamicInit(1.1), const LibraryIdentifier(#we b_foo, null, 'index.dart')),
188 new InitEntry(const i1.DynamicInit('foo-xy'), const LibraryIdentifie r(#web_foo, null, 'index.dart')),
189 new InitEntry(const i1.DynamicInit(3), const LibraryIdentifier(#web_ foo, null, 'index.dart')),
190 new InitEntry(const i1.DynamicInit(1.2), const LibraryIdentifier(#we b_foo, null, 'index.dart')),
191 new InitEntry(const i1.DynamicInit(true), const LibraryIdentifier(#w eb_foo, null, 'index.dart')),
192 new InitEntry(const i1.NamedArgInit(1, name: 'Bill'), const LibraryI dentifier(#web_foo, null, 'index.dart')),
193 ]);
194
195 return i0.main();
196 }
197 ''')
198 }, []);
199
200 testPhases('exported library annotations', phases, {
201 'a|web/index.dart': '''
202 library web_foo;
203
204 export 'foo.dart';
205 ''',
206 'a|web/foo.dart': '''
207 @constInit
208 library foo;
209
210 import 'package:test_initializers/common.dart';
211
212 @constInit
213 foo() {};
214
215 @constInit
216 class Foo {}
217 ''',
218 // Mock out the Initialize package plus some initializers.
219 'initialize|lib/initialize.dart': mockInitialize,
220 'test_initializers|lib/common.dart': commonInitializers,
221 }, {
222 'a|web/index.initialize.dart': formatter.format('''
223 import 'package:initialize/src/static_loader.dart';
224 import 'package:initialize/initialize.dart';
225 import 'index.dart' as i0;
226 import 'foo.dart' as i1;
227 import 'package:test_initializers/common.dart' as i2;
228
229 main() {
230 initializers.addAll([
231 new InitEntry(i2.constInit, const LibraryIdentifier(#foo, null, 'foo .dart')),
232 new InitEntry(i2.constInit, i1.foo),
233 new InitEntry(i2.constInit, i1.Foo),
234 ]);
235
236 return i0.main();
237 }
238 ''')
239 }, []);
240
241 testPhases('imports from exported libraries', phases, {
242 'a|web/index.dart': '''
243 library web_foo;
244
245 export 'foo.dart';
246 ''',
247 'a|web/foo.dart': '''
248 library foo;
249
250 import 'foo/bar.dart';
251 ''',
252 'a|web/foo/bar.dart': '''
253 @constInit
254 library bar;
255
256 import 'package:test_initializers/common.dart';
257
258 @constInit
259 bar() {};
260
261 @constInit
262 class Bar {}
263 ''',
264 // Mock out the Initialize package plus some initializers.
265 'initialize|lib/initialize.dart': mockInitialize,
266 'test_initializers|lib/common.dart': commonInitializers,
267 }, {
268 'a|web/index.initialize.dart': formatter.format('''
269 import 'package:initialize/src/static_loader.dart';
270 import 'package:initialize/initialize.dart';
271 import 'index.dart' as i0;
272 import 'foo/bar.dart' as i1;
273 import 'package:test_initializers/common.dart' as i2;
274
275 main() {
276 initializers.addAll([
277 new InitEntry(i2.constInit, const LibraryIdentifier(#bar, null, 'foo /bar.dart')),
278 new InitEntry(i2.constInit, i1.bar),
279 new InitEntry(i2.constInit, i1.Bar),
280 ]);
281
282 return i0.main();
283 }
284 ''')
285 }, []);
286
287 testPhases('library parts and exports', phases, {
288 'a|web/index.dart': '''
289 @constInit
290 library index;
291
292 import 'package:test_initializers/common.dart';
293 export 'export.dart';
294
295 part 'foo.dart';
296 part 'bar.dart';
297
298 @constInit
299 index() {};
300
301 @constInit
302 class Index {};
303 ''',
304 'a|web/foo.dart': '''
305 part of index;
306
307 @constInit
308 foo() {};
309
310 @constInit
311 class Foo {};
312 ''',
313 'a|web/bar.dart': '''
314 part of index;
315
316 @constInit
317 bar() {};
318
319 @constInit
320 class Bar {};
321 ''',
322 'a|web/export.dart': '''
323 @constInit
324 library export;
325
326 import 'package:test_initializers/common.dart';
327
328 @constInit
329 class Export {};
330 ''',
331 // Mock out the Initialize package plus some initializers.
332 'initialize|lib/initialize.dart': mockInitialize,
333 'test_initializers|lib/common.dart': commonInitializers,
334 }, {
335 'a|web/index.initialize.dart': formatter.format('''
336 import 'package:initialize/src/static_loader.dart';
337 import 'package:initialize/initialize.dart';
338 import 'index.dart' as i0;
339 import 'export.dart' as i1;
340 import 'package:test_initializers/common.dart' as i2;
341
342 main() {
343 initializers.addAll([
344 new InitEntry(i2.constInit, const LibraryIdentifier(#export, null, ' export.dart')),
345 new InitEntry(i2.constInit, i1.Export),
346 new InitEntry(i2.constInit, const LibraryIdentifier(#index, null, 'i ndex.dart')),
347 new InitEntry(i2.constInit, i0.bar),
348 new InitEntry(i2.constInit, i0.foo),
349 new InitEntry(i2.constInit, i0.index),
350 new InitEntry(i2.constInit, i0.Bar),
351 new InitEntry(i2.constInit, i0.Foo),
352 new InitEntry(i2.constInit, i0.Index),
353 ]);
354
355 return i0.main();
356 }
357 ''')
358 }, []);
359 }
360
361 class SkipConstructorsPlugin extends InitializerPlugin {
362 bool shouldApply(InitializerPluginData data) {
363 return data.initializer.annotationElement.element is ConstructorElement;
364 }
365
366 String apply(_) => null;
367 }
368
369 void pluginTests() {
370 var phases = [
371 [
372 new InitializeTransformer(['web/index.dart'],
373 plugins: [new SkipConstructorsPlugin()])
374 ]
375 ];
376
377 testPhases('can omit statements', phases, {
378 'a|web/index.dart': '''
379 library index;
380
381 import 'package:initialize/initialize.dart';
382 import 'package:test_initializers/common.dart';
383 import 'foo.dart';
384
385 @initMethod
386 @DynamicInit('index')
387 index() {}
388 ''',
389 'a|web/foo.dart': '''
390 library foo;
391
392 import 'package:initialize/initialize.dart';
393 import 'package:test_initializers/common.dart';
394
395 @initMethod
396 @DynamicInit('Foo')
397 foo() {}
398 ''',
399 // Mock out the Initialize package plus some initializers.
400 'initialize|lib/initialize.dart': mockInitialize,
401 'test_initializers|lib/common.dart': commonInitializers,
402 }, {
403 'a|web/index.initialize.dart': formatter.format('''
404 import 'package:initialize/src/static_loader.dart';
405 import 'package:initialize/initialize.dart';
406 import 'index.dart' as i0;
407 import 'foo.dart' as i1;
408 import 'package:initialize/initialize.dart' as i2;
409 import 'package:test_initializers/common.dart' as i3;
410
411 main() {
412 initializers.addAll([
413 new InitEntry(i2.initMethod, i1.foo),
414 new InitEntry(i2.initMethod, i0.index),
415 ]);
416
417 return i0.main();
418 }
419 ''')
420 }, []);
421 }
OLDNEW
« no previous file with comments | « packages/initialize/test/parts/foo.dart ('k') | packages/initialize/test_package/README.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698