OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, 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 polymer.test.transform.import_inliner_test; | |
6 | |
7 import 'package:polymer/src/transform/common.dart'; | |
8 import 'package:polymer/src/transform/import_inliner.dart'; | |
9 import 'package:unittest/compact_vm_config.dart'; | |
10 import 'package:unittest/unittest.dart'; | |
11 | |
12 import 'common.dart'; | |
13 | |
14 void main() { | |
15 useCompactVMConfiguration(); | |
16 var phases = [[new ImportedElementInliner(new TransformOptions())]]; | |
17 testPhases('no changes', phases, { | |
18 'a|web/test.html': '<!DOCTYPE html><html></html>', | |
19 }, { | |
20 'a|web/test.html': '<!DOCTYPE html><html></html>', | |
21 }); | |
22 | |
23 testPhases('empty import', phases, { | |
24 'a|web/test.html': | |
25 '<!DOCTYPE html><html><head>' | |
26 '<link rel="import" href="">' // empty href | |
27 '</head></html>', | |
28 'a|web/test2.html': | |
29 '<!DOCTYPE html><html><head>' | |
30 '<link rel="import">' // no href | |
31 '</head></html>', | |
32 }, { | |
33 'a|web/test.html': | |
34 '<!DOCTYPE html><html><head>' | |
35 '</head><body></body></html>', | |
36 'a|web/test2.html': | |
37 '<!DOCTYPE html><html><head>' | |
38 '</head><body></body></html>', | |
39 }); | |
40 | |
41 testPhases('shallow, no elements', phases, { | |
42 'a|web/test.html': | |
43 '<!DOCTYPE html><html><head>' | |
44 '<link rel="import" href="test2.html">' | |
45 '</head></html>', | |
46 'a|web/test2.html': | |
47 '<!DOCTYPE html><html><head>' | |
48 '</head></html>', | |
49 }, { | |
50 'a|web/test.html': | |
51 '<!DOCTYPE html><html><head>' | |
52 '</head><body></body></html>', | |
53 'a|web/test2.html': | |
54 '<!DOCTYPE html><html><head>' | |
55 '</head></html>', | |
56 }); | |
57 | |
58 testPhases('shallow, elements, one import', phases, | |
59 { | |
60 'a|web/test.html': | |
61 '<!DOCTYPE html><html><head>' | |
62 '<link rel="import" href="test2.html">' | |
63 '</head></html>', | |
64 'a|web/test2.html': | |
65 '<!DOCTYPE html><html><head>' | |
66 '</head><body><polymer-element>2</polymer-element></html>', | |
67 }, { | |
68 'a|web/test.html': | |
69 '<!DOCTYPE html><html><head>' | |
70 '</head><body>' | |
71 '<polymer-element>2</polymer-element>' | |
72 '</body></html>', | |
73 'a|web/test2.html': | |
74 '<!DOCTYPE html><html><head>' | |
75 '</head><body><polymer-element>2</polymer-element></html>', | |
76 }); | |
77 | |
78 testPhases('no transformation outside web/', phases, | |
79 { | |
80 'a|lib/test.html': | |
81 '<!DOCTYPE html><html><head>' | |
82 '<link rel="import" href="test2.html">' | |
83 '</head></html>', | |
84 'a|lib/test2.html': | |
85 '<!DOCTYPE html><html><head>' | |
86 '</head><body><polymer-element>2</polymer-element></html>', | |
87 }, { | |
88 'a|lib/test.html': | |
89 '<!DOCTYPE html><html><head>' | |
90 '<link rel="import" href="test2.html">' | |
91 '</head></html>', | |
92 'a|lib/test2.html': | |
93 '<!DOCTYPE html><html><head>' | |
94 '</head><body><polymer-element>2</polymer-element></html>', | |
95 }); | |
96 | |
97 testPhases('shallow, elements, many', phases, | |
98 { | |
99 'a|web/test.html': | |
100 '<!DOCTYPE html><html><head>' | |
101 '<link rel="import" href="test2.html">' | |
102 '<link rel="import" href="test3.html">' | |
103 '</head></html>', | |
104 'a|web/test2.html': | |
105 '<!DOCTYPE html><html><head>' | |
106 '</head><body><polymer-element>2</polymer-element></html>', | |
107 'a|web/test3.html': | |
108 '<!DOCTYPE html><html><head>' | |
109 '</head><body><polymer-element>3</polymer-element></html>', | |
110 }, { | |
111 'a|web/test.html': | |
112 '<!DOCTYPE html><html><head>' | |
113 '</head><body>' | |
114 '<polymer-element>2</polymer-element>' | |
115 '<polymer-element>3</polymer-element>' | |
116 '</body></html>', | |
117 'a|web/test2.html': | |
118 '<!DOCTYPE html><html><head>' | |
119 '</head><body><polymer-element>2</polymer-element></html>', | |
120 'a|web/test3.html': | |
121 '<!DOCTYPE html><html><head>' | |
122 '</head><body><polymer-element>3</polymer-element></html>', | |
123 }); | |
124 | |
125 testPhases('deep, elements, one per file', phases, { | |
126 'a|web/test.html': | |
127 '<!DOCTYPE html><html><head>' | |
128 '<link rel="import" href="test2.html">' | |
129 '</head></html>', | |
130 'a|web/test2.html': | |
131 '<!DOCTYPE html><html><head>' | |
132 '<link rel="import" href="assets/b/test3.html">' | |
133 '</head><body><polymer-element>2</polymer-element></html>', | |
134 'b|asset/test3.html': | |
135 '<!DOCTYPE html><html><head>' | |
136 '<link rel="import" href="packages/c/test4.html">' | |
137 '</head><body><polymer-element>3</polymer-element></html>', | |
138 'c|lib/test4.html': | |
139 '<!DOCTYPE html><html><head>' | |
140 '</head><body><polymer-element>4</polymer-element></html>', | |
141 }, { | |
142 'a|web/test.html': | |
143 '<!DOCTYPE html><html><head>' | |
144 '</head><body>' | |
145 '<polymer-element>4</polymer-element>' | |
146 '<polymer-element>3</polymer-element>' | |
147 '<polymer-element>2</polymer-element></body></html>', | |
148 'a|web/test2.html': | |
149 '<!DOCTYPE html><html><head>' | |
150 '</head><body>' | |
151 '<polymer-element>4</polymer-element>' | |
152 '<polymer-element>3</polymer-element>' | |
153 '<polymer-element>2</polymer-element></body></html>', | |
154 'b|asset/test3.html': | |
155 '<!DOCTYPE html><html><head>' | |
156 '<link rel="import" href="packages/c/test4.html">' | |
157 '</head><body><polymer-element>3</polymer-element></html>', | |
158 'c|lib/test4.html': | |
159 '<!DOCTYPE html><html><head>' | |
160 '</head><body><polymer-element>4</polymer-element></html>', | |
161 }); | |
162 | |
163 testPhases('deep, elements, many imports', phases, { | |
164 'a|web/test.html': | |
165 '<!DOCTYPE html><html><head>' | |
166 '<link rel="import" href="test2a.html">' | |
167 '<link rel="import" href="test2b.html">' | |
168 '</head></html>', | |
169 'a|web/test2a.html': | |
170 '<!DOCTYPE html><html><head>' | |
171 '<link rel="import" href="test3a.html">' | |
172 '<link rel="import" href="test3b.html">' | |
173 '</head><body><polymer-element>2a</polymer-element></body></html>', | |
174 'a|web/test2b.html': | |
175 '<!DOCTYPE html><html><head>' | |
176 '<link rel="import" href="test4a.html">' | |
177 '<link rel="import" href="test4b.html">' | |
178 '</head><body><polymer-element>2b</polymer-element></body></html>', | |
179 'a|web/test3a.html': | |
180 '<!DOCTYPE html><html><head>' | |
181 '</head><body><polymer-element>3a</polymer-element></body></html>', | |
182 'a|web/test3b.html': | |
183 '<!DOCTYPE html><html><head>' | |
184 '</head><body><polymer-element>3b</polymer-element></body></html>', | |
185 'a|web/test4a.html': | |
186 '<!DOCTYPE html><html><head>' | |
187 '</head><body><polymer-element>4a</polymer-element></body></html>', | |
188 'a|web/test4b.html': | |
189 '<!DOCTYPE html><html><head>' | |
190 '</head><body><polymer-element>4b</polymer-element></body></html>', | |
191 }, { | |
192 'a|web/test.html': | |
193 '<!DOCTYPE html><html><head>' | |
194 '</head><body>' | |
195 '<polymer-element>3a</polymer-element>' | |
196 '<polymer-element>3b</polymer-element>' | |
197 '<polymer-element>2a</polymer-element>' | |
198 '<polymer-element>4a</polymer-element>' | |
199 '<polymer-element>4b</polymer-element>' | |
200 '<polymer-element>2b</polymer-element>' | |
201 '</body></html>', | |
202 'a|web/test2a.html': | |
203 '<!DOCTYPE html><html><head>' | |
204 '</head><body>' | |
205 '<polymer-element>3a</polymer-element>' | |
206 '<polymer-element>3b</polymer-element>' | |
207 '<polymer-element>2a</polymer-element>' | |
208 '</body></html>', | |
209 'a|web/test2b.html': | |
210 '<!DOCTYPE html><html><head>' | |
211 '</head><body>' | |
212 '<polymer-element>4a</polymer-element>' | |
213 '<polymer-element>4b</polymer-element>' | |
214 '<polymer-element>2b</polymer-element>' | |
215 '</body></html>', | |
216 'a|web/test3a.html': | |
217 '<!DOCTYPE html><html><head>' | |
218 '</head><body>' | |
219 '<polymer-element>3a</polymer-element>' | |
220 '</body></html>', | |
221 'a|web/test3b.html': | |
222 '<!DOCTYPE html><html><head>' | |
223 '</head><body>' | |
224 '<polymer-element>3b</polymer-element>' | |
225 '</body></html>', | |
226 'a|web/test4a.html': | |
227 '<!DOCTYPE html><html><head>' | |
228 '</head><body>' | |
229 '<polymer-element>4a</polymer-element>' | |
230 '</body></html>', | |
231 'a|web/test4b.html': | |
232 '<!DOCTYPE html><html><head>' | |
233 '</head><body>' | |
234 '<polymer-element>4b</polymer-element>' | |
235 '</body></html>', | |
236 }); | |
237 | |
238 testPhases('imports cycle, 1-step lasso', phases, { | |
239 'a|web/test.html': | |
240 '<!DOCTYPE html><html><head>' | |
241 '<link rel="import" href="test_1.html">' | |
242 '</head></html>', | |
243 'a|web/test_1.html': | |
244 '<!DOCTYPE html><html><head>' | |
245 '<link rel="import" href="test_2.html">' | |
246 '</head><body><polymer-element>1</polymer-element></html>', | |
247 'a|web/test_2.html': | |
248 '<!DOCTYPE html><html><head>' | |
249 '<link rel="import" href="test_1.html">' | |
250 '</head><body><polymer-element>2</polymer-element></html>', | |
251 }, { | |
252 'a|web/test.html': | |
253 '<!DOCTYPE html><html><head>' | |
254 '</head><body>' | |
255 '<polymer-element>2</polymer-element>' | |
256 '<polymer-element>1</polymer-element></body></html>', | |
257 'a|web/test_1.html': | |
258 '<!DOCTYPE html><html><head>' | |
259 '</head><body>' | |
260 '<polymer-element>2</polymer-element>' | |
261 '<polymer-element>1</polymer-element></body></html>', | |
262 'a|web/test_2.html': | |
263 '<!DOCTYPE html><html><head>' | |
264 '</head><body>' | |
265 '<polymer-element>1</polymer-element>' | |
266 '<polymer-element>2</polymer-element></body></html>', | |
267 }); | |
268 | |
269 testPhases('imports cycle, 2-step lasso', phases, { | |
270 'a|web/test.html': | |
271 '<!DOCTYPE html><html><head>' | |
272 '<link rel="import" href="test_1.html">' | |
273 '</head></html>', | |
274 'a|web/test_1.html': | |
275 '<!DOCTYPE html><html><head>' | |
276 '<link rel="import" href="test_2.html">' | |
277 '</head><body><polymer-element>1</polymer-element></html>', | |
278 'a|web/test_2.html': | |
279 '<!DOCTYPE html><html><head>' | |
280 '<link rel="import" href="test_3.html">' | |
281 '</head><body><polymer-element>2</polymer-element></html>', | |
282 'a|web/test_3.html': | |
283 '<!DOCTYPE html><html><head>' | |
284 '<link rel="import" href="test_1.html">' | |
285 '</head><body><polymer-element>3</polymer-element></html>', | |
286 }, { | |
287 'a|web/test.html': | |
288 '<!DOCTYPE html><html><head>' | |
289 '</head><body>' | |
290 '<polymer-element>3</polymer-element>' | |
291 '<polymer-element>2</polymer-element>' | |
292 '<polymer-element>1</polymer-element></body></html>', | |
293 'a|web/test_1.html': | |
294 '<!DOCTYPE html><html><head>' | |
295 '</head><body>' | |
296 '<polymer-element>3</polymer-element>' | |
297 '<polymer-element>2</polymer-element>' | |
298 '<polymer-element>1</polymer-element></body></html>', | |
299 'a|web/test_2.html': | |
300 '<!DOCTYPE html><html><head>' | |
301 '</head><body>' | |
302 '<polymer-element>1</polymer-element>' | |
303 '<polymer-element>3</polymer-element>' | |
304 '<polymer-element>2</polymer-element></body></html>', | |
305 'a|web/test_3.html': | |
306 '<!DOCTYPE html><html><head>' | |
307 '</head><body>' | |
308 '<polymer-element>2</polymer-element>' | |
309 '<polymer-element>1</polymer-element>' | |
310 '<polymer-element>3</polymer-element></body></html>', | |
311 }); | |
312 | |
313 testPhases('imports cycle, self cycle', phases, { | |
314 'a|web/test.html': | |
315 '<!DOCTYPE html><html><head>' | |
316 '<link rel="import" href="test_1.html">' | |
317 '</head></html>', | |
318 'a|web/test_1.html': | |
319 '<!DOCTYPE html><html><head>' | |
320 '<link rel="import" href="test_1.html">' | |
321 '</head><body><polymer-element>1</polymer-element></html>', | |
322 }, { | |
323 'a|web/test.html': | |
324 '<!DOCTYPE html><html><head>' | |
325 '</head><body>' | |
326 '<polymer-element>1</polymer-element></body></html>', | |
327 'a|web/test_1.html': | |
328 '<!DOCTYPE html><html><head>' | |
329 '</head><body>' | |
330 '<polymer-element>1</polymer-element></body></html>', | |
331 }); | |
332 | |
333 testPhases('imports DAG', phases, { | |
334 'a|web/test.html': | |
335 '<!DOCTYPE html><html><head>' | |
336 '<link rel="import" href="test_1.html">' | |
337 '<link rel="import" href="test_2.html">' | |
338 '</head></html>', | |
339 'a|web/test_1.html': | |
340 '<!DOCTYPE html><html><head>' | |
341 '<link rel="import" href="test_3.html">' | |
342 '</head><body><polymer-element>1</polymer-element></body></html>', | |
343 'a|web/test_2.html': | |
344 '<!DOCTYPE html><html><head>' | |
345 '<link rel="import" href="test_3.html">' | |
346 '</head><body><polymer-element>2</polymer-element></body></html>', | |
347 'a|web/test_3.html': | |
348 '<!DOCTYPE html><html><head>' | |
349 '</head><body><polymer-element>3</polymer-element></body></html>', | |
350 }, { | |
351 'a|web/test.html': | |
352 '<!DOCTYPE html><html><head>' | |
353 '</head><body>' | |
354 '<polymer-element>3</polymer-element>' | |
355 '<polymer-element>1</polymer-element>' | |
356 '<polymer-element>2</polymer-element></body></html>', | |
357 'a|web/test_1.html': | |
358 '<!DOCTYPE html><html><head>' | |
359 '</head><body>' | |
360 '<polymer-element>3</polymer-element>' | |
361 '<polymer-element>1</polymer-element></body></html>', | |
362 'a|web/test_2.html': | |
363 '<!DOCTYPE html><html><head>' | |
364 '</head><body>' | |
365 '<polymer-element>3</polymer-element>' | |
366 '<polymer-element>2</polymer-element></body></html>', | |
367 'a|web/test_3.html': | |
368 '<!DOCTYPE html><html><head>' | |
369 '</head><body>' | |
370 '<polymer-element>3</polymer-element></body></html>', | |
371 }); | |
372 } | |
OLD | NEW |