| Index: packages/web_components/test/build/import_inliner_test.dart
|
| diff --git a/packages/web_components/test/build/import_inliner_test.dart b/packages/web_components/test/build/import_inliner_test.dart
|
| index f0dbef62fecf9f1c1d2d0ef5b72be50a50bf1860..94eb40fd5444f361fbf8b556486a192269c641d6 100644
|
| --- a/packages/web_components/test/build/import_inliner_test.dart
|
| +++ b/packages/web_components/test/build/import_inliner_test.dart
|
| @@ -1,47 +1,58 @@
|
| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
| +@TestOn('vm')
|
| library web_components.test.build.import_inliner_test;
|
|
|
| -import 'package:code_transformers/tests.dart';
|
| +import 'package:transformer_test/utils.dart';
|
| import 'package:web_components/build/import_inliner.dart';
|
| import 'package:web_components/build/messages.dart';
|
| -import 'package:unittest/compact_vm_config.dart';
|
| -import 'package:unittest/unittest.dart';
|
| +import 'package:test/test.dart';
|
|
|
| var transformer = new ImportInlinerTransformer(null, ['{{', '[[']);
|
| -var phases = [[transformer]];
|
| +var phases = [
|
| + [transformer]
|
| +];
|
|
|
| main() {
|
| - useCompactVMConfiguration();
|
| -
|
| group('rel=import', importTests);
|
| group('url attributes', urlAttributeTests);
|
| group('deep entrypoints', entryPointTests);
|
| + // group('templates', templateTests);
|
| }
|
|
|
| void importTests() {
|
| - testPhases('no imports', phases, {
|
| - 'a|web/index.html': '''
|
| + testPhases(
|
| + 'no imports',
|
| + phases,
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html><html><head></head><body></body></html>''',
|
| - }, {
|
| - 'a|web/index.html': '''
|
| + },
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html><html><head></head><body></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('one import, removes dart script', phases, {
|
| - 'a|web/index.html': '''
|
| + testPhases(
|
| + 'one import, removes dart script',
|
| + phases,
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head><link rel="import" href="packages/a/foo.html"></head>
|
| <body></body>
|
| </html>''',
|
| - 'a|lib/foo.html': '''
|
| + 'a|lib/foo.html': '''
|
| <div>hello from foo!</div>
|
| <script type="application/dart" src="foo.dart"></script>
|
| ''',
|
| - }, {
|
| - 'a|web/index.html': '''
|
| + },
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head></head>
|
| @@ -51,22 +62,28 @@ void importTests() {
|
| </div>
|
| </body>
|
| </html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('preserves order of scripts', phases, {
|
| - 'a|web/index.html': '''
|
| + testPhases(
|
| + 'preserves order of scripts',
|
| + phases,
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html><html><head>
|
| <script type="text/javascript">/*first*/</script>
|
| <script src="second.js"></script>
|
| <link rel="import" href="packages/a/foo.html">
|
| <script>/*forth*/</script>
|
| </head></html>''',
|
| - 'a|lib/foo.html': '''
|
| + 'a|lib/foo.html': '''
|
| <!DOCTYPE html><html><head><script>/*third*/</script>
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - 'a|web/second.js': '/*second*/'
|
| - }, {
|
| - 'a|web/index.html': '''
|
| + 'a|web/second.js': '/*second*/'
|
| + },
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html><html><head>
|
| <script type="text/javascript">/*first*/</script>
|
| <script src="second.js"></script>
|
| @@ -77,10 +94,15 @@ void importTests() {
|
| <script>/*forth*/</script>
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('preserves order of scripts, extract Dart scripts', phases, {
|
| - 'a|web/index.html': '''
|
| + testPhases(
|
| + 'preserves order of scripts, extract Dart scripts',
|
| + phases,
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head>
|
| @@ -90,7 +112,7 @@ void importTests() {
|
| <script type="application/dart">/*fifth*/</script>
|
| </head>
|
| </html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head>
|
| @@ -101,9 +123,10 @@ void importTests() {
|
| <polymer-element>2</polymer-element>
|
| </body>
|
| </html>''',
|
| - 'a|web/second.js': '/*second*/'
|
| - }, {
|
| - 'a|web/index.html': '''
|
| + 'a|web/second.js': '/*second*/'
|
| + },
|
| + {
|
| + 'a|web/index.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head>
|
| @@ -118,7 +141,7 @@ void importTests() {
|
| </div>
|
| </body>
|
| </html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html>
|
| <html>
|
| <head>
|
| @@ -129,40 +152,52 @@ void importTests() {
|
| <polymer-element>2</polymer-element>
|
| </body>
|
| </html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('no transformation outside web/', phases, {
|
| - 'a|lib/test.html': '''
|
| + testPhases(
|
| + 'no transformation outside web/',
|
| + phases,
|
| + {
|
| + 'a|lib/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test2.html">
|
| </head></html>''',
|
| - 'a|lib/test2.html': '''
|
| + 'a|lib/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - }, {
|
| - 'a|lib/test.html': '''
|
| + },
|
| + {
|
| + 'a|lib/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test2.html">
|
| </head></html>''',
|
| - 'a|lib/test2.html': '''
|
| + 'a|lib/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('shallow, elements, many', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'shallow, elements, many',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test2.html">
|
| <link rel="import" href="test3.html">
|
| </head></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - 'a|web/test3.html': '''
|
| + 'a|web/test3.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>3</polymer-element></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -170,32 +205,38 @@ void importTests() {
|
| <polymer-element>3</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - 'a|web/test3.html': '''
|
| + 'a|web/test3.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>3</polymer-element></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('deep, elements, one per file', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'deep, elements, one per file',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test2.html">
|
| </head></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="assets/b/test3.html">
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - 'b|asset/test3.html': '''
|
| + 'b|asset/test3.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="../../packages/c/test4.html">
|
| </head><body><polymer-element>3</polymer-element></html>''',
|
| - 'c|lib/test4.html': '''
|
| + 'c|lib/test4.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>4</polymer-element></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -204,7 +245,7 @@ void importTests() {
|
| <polymer-element>2</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -213,45 +254,51 @@ void importTests() {
|
| </div>
|
| <polymer-element>2</polymer-element>
|
| </body></html>''',
|
| - 'b|asset/test3.html': '''
|
| + 'b|asset/test3.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="../../packages/c/test4.html">
|
| </head><body><polymer-element>3</polymer-element></html>''',
|
| - 'c|lib/test4.html': '''
|
| + 'c|lib/test4.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>4</polymer-element></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('deep, elements, many imports', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'deep, elements, many imports',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test2a.html">
|
| <link rel="import" href="test2b.html">
|
| </head></html>''',
|
| - 'a|web/test2a.html': '''
|
| + 'a|web/test2a.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test3a.html">
|
| <link rel="import" href="test3b.html">
|
| </head><body><polymer-element>2a</polymer-element></body></html>''',
|
| - 'a|web/test2b.html': '''
|
| + 'a|web/test2b.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test4a.html">
|
| <link rel="import" href="test4b.html">
|
| </head><body><polymer-element>2b</polymer-element></body></html>''',
|
| - 'a|web/test3a.html': '''
|
| + 'a|web/test3a.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>3a</polymer-element></body></html>''',
|
| - 'a|web/test3b.html': '''
|
| + 'a|web/test3b.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>3b</polymer-element></body></html>''',
|
| - 'a|web/test4a.html': '''
|
| + 'a|web/test4a.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>4a</polymer-element></body></html>''',
|
| - 'a|web/test4b.html': '''
|
| + 'a|web/test4b.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>4b</polymer-element></body></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -263,7 +310,7 @@ void importTests() {
|
| <polymer-element>2b</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test2a.html': '''
|
| + 'a|web/test2a.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -272,7 +319,7 @@ void importTests() {
|
| </div>
|
| <polymer-element>2a</polymer-element>
|
| </body></html>''',
|
| - 'a|web/test2b.html': '''
|
| + 'a|web/test2b.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -281,43 +328,49 @@ void importTests() {
|
| </div>
|
| <polymer-element>2b</polymer-element>
|
| </body></html>''',
|
| - 'a|web/test3a.html': '''
|
| + 'a|web/test3a.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>3a</polymer-element>
|
| </body></html>''',
|
| - 'a|web/test3b.html': '''
|
| + 'a|web/test3b.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>3b</polymer-element>
|
| </body></html>''',
|
| - 'a|web/test4a.html': '''
|
| + 'a|web/test4a.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>4a</polymer-element>
|
| </body></html>''',
|
| - 'a|web/test4b.html': '''
|
| + 'a|web/test4b.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>4b</polymer-element>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports cycle, 1-step lasso', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports cycle, 1-step lasso',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_2.html">
|
| </head><body><polymer-element>1</polymer-element></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -325,39 +378,45 @@ void importTests() {
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| <polymer-element>2</polymer-element>
|
| </div>
|
| <polymer-element>1</polymer-element></body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| <polymer-element>2</polymer-element></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports cycle, 1-step lasso, scripts too', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports cycle, 1-step lasso, scripts too',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_2.html">
|
| </head><body><polymer-element>1</polymer-element>
|
| <script src="s1"></script></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body><polymer-element>2</polymer-element>
|
| <script src="s2"></script></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -367,7 +426,7 @@ void importTests() {
|
| <script src="s1"></script>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -376,7 +435,7 @@ void importTests() {
|
| </div>
|
| <polymer-element>1</polymer-element>
|
| <script src="s1"></script></body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -385,30 +444,36 @@ void importTests() {
|
| </div>
|
| <polymer-element>2</polymer-element>
|
| <script src="s2"></script></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports cycle, 1-step lasso, Dart scripts too', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports cycle, 1-step lasso, Dart scripts too',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_2.html">
|
| </head><body><polymer-element>1</polymer-element>
|
| <script type="application/dart" src="s1.dart"></script>
|
| </html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body><polymer-element>2
|
| <script type="application/dart" src="s2.dart"></script>
|
| </polymer-element>
|
| </html>''',
|
| - 'a|web/s1.dart': '',
|
| - 'a|web/s2.dart': '',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + 'a|web/s1.dart': '',
|
| + 'a|web/s2.dart': '',
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -416,7 +481,7 @@ void importTests() {
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -425,7 +490,7 @@ void importTests() {
|
| <polymer-element>1</polymer-element>
|
| <script type="application/dart" src="s1.dart"></script>
|
| </body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -435,14 +500,19 @@ void importTests() {
|
| <script type="application/dart" src="s2.dart"></script>
|
| </polymer-element>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports with Dart script after JS script', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports with Dart script after JS script',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body>
|
| @@ -452,9 +522,10 @@ void importTests() {
|
| <script type="application/dart" src="s1.dart"></script>
|
| </polymer-element>
|
| 'FOO'</body></html>''',
|
| - 'a|web/s1.dart': '',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + 'a|web/s1.dart': '',
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -465,7 +536,7 @@ void importTests() {
|
| 'FOO'
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <foo>42</foo><bar-baz></bar-baz>
|
| @@ -474,27 +545,33 @@ void importTests() {
|
| <script type="application/dart" src="s1.dart"></script>
|
| </polymer-element>
|
| 'FOO'</body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports cycle, 2-step lasso', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports cycle, 2-step lasso',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_2.html">
|
| </head><body><polymer-element>1</polymer-element></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_3.html">
|
| </head><body><polymer-element>2</polymer-element></html>''',
|
| - 'a|web/test_3.html': '''
|
| + 'a|web/test_3.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body><polymer-element>3</polymer-element></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -503,7 +580,7 @@ void importTests() {
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -511,7 +588,7 @@ void importTests() {
|
| <polymer-element>2</polymer-element>
|
| </div>
|
| <polymer-element>1</polymer-element></body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -519,7 +596,7 @@ void importTests() {
|
| <polymer-element>3</polymer-element>
|
| </div>
|
| <polymer-element>2</polymer-element></body></html>''',
|
| - 'a|web/test_3.html': '''
|
| + 'a|web/test_3.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -527,50 +604,62 @@ void importTests() {
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| <polymer-element>3</polymer-element></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports cycle, self cycle', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports cycle, self cycle',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| </head><body><polymer-element>1</polymer-element></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| <polymer-element>1</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>1</polymer-element></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('imports DAG', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'imports DAG',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_1.html">
|
| <link rel="import" href="test_2.html">
|
| </head></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_3.html">
|
| </head><body><polymer-element>1</polymer-element></body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="test_3.html">
|
| </head><body><polymer-element>2</polymer-element></body></html>''',
|
| - 'a|web/test_3.html': '''
|
| + 'a|web/test_3.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body><polymer-element>3</polymer-element></body></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| @@ -579,254 +668,390 @@ void importTests() {
|
| <polymer-element>2</polymer-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/test_1.html': '''
|
| + 'a|web/test_1.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| <polymer-element>3</polymer-element>
|
| </div>
|
| <polymer-element>1</polymer-element></body></html>''',
|
| - 'a|web/test_2.html': '''
|
| + 'a|web/test_2.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <div hidden="">
|
| <polymer-element>3</polymer-element>
|
| </div>
|
| <polymer-element>2</polymer-element></body></html>''',
|
| - 'a|web/test_3.html': '''
|
| + 'a|web/test_3.html': '''
|
| <!DOCTYPE html><html><head>
|
| </head><body>
|
| <polymer-element>3</polymer-element></body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('missing html imports throw errors', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'missing html imports throw errors',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="foo.html">
|
| </head></html>''',
|
| - }, {}, [
|
| - 'warning: ${inlineImportFail.create({
|
| + },
|
| + {},
|
| + messages: [
|
| + 'warning: ${inlineImportFail.create({
|
| 'error': 'Could not find asset a|web/foo.html.'
|
| }).snippet} '
|
| - '(web/test.html 1 8)',
|
| - ], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + '(web/test.html 1 8)',
|
| + ],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('absolute uri', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'absolute uri',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="stylesheet" href="/foo.css">
|
| </head></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| - <link rel="stylesheet" href="http://example.com/bar.css">
|
| + <link rel="stylesheet" href="http:example.com/bar.css">
|
| </head></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="stylesheet" href="/foo.css">
|
| </head></html>''',
|
| - 'a|web/test2.html': '''
|
| + 'a|web/test2.html': '''
|
| <!DOCTYPE html><html><head>
|
| - <link rel="stylesheet" href="http://example.com/bar.css">
|
| + <link rel="stylesheet" href="http:example.com/bar.css">
|
| </head></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| }
|
|
|
| void urlAttributeTests() {
|
| - testPhases('url attributes are normalized', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'url attributes are normalized',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="foo/test_1.html">
|
| <link rel="import" href="foo/test_2.html">
|
| </head></html>''',
|
| - 'a|web/foo/test_1.html': '''
|
| + 'a|web/foo/test_1.html': '''
|
| <script src="baz.jpg"></script>''',
|
| - 'a|web/foo/test_2.html': '''
|
| + 'a|web/foo/test_2.html': '''
|
| <foo-element src="baz.jpg"></foo-element>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <script src="foo/baz.jpg"></script>
|
| <foo-element src="baz.jpg"></foo-element>
|
| </div>
|
| </body></html>''',
|
| - 'a|web/foo/test_1.html': '''
|
| + 'a|web/foo/test_1.html': '''
|
| <script src="baz.jpg"></script>''',
|
| - 'a|web/foo/test_2.html': '''
|
| + 'a|web/foo/test_2.html': '''
|
| <foo-element src="baz.jpg"></foo-element>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('paths with an invalid prefix are not normalized', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'paths with an invalid prefix are not normalized',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="packages/a/test.html">
|
| </head></html>''',
|
| - 'a|lib/test.html': '''
|
| + 'a|lib/test.html': '''
|
| <img src="[[bar]]">''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <img src="[[bar]]">
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('relative paths followed by invalid characters are normalized',
|
| - phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'relative paths followed by invalid characters are normalized',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="foo/test.html">
|
| </head></html>''',
|
| - 'a|web/foo/test.html': '''
|
| + 'a|web/foo/test.html': '''
|
| <img src="baz/{{bar}}">
|
| <img src="./{{bar}}">''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <img src="foo/baz/{{bar}}">
|
| <img src="foo/{{bar}}">
|
| </div>
|
| </body></html>''',
|
| - }, null, StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('relative paths in _* attributes are normalized', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'relative paths in _* attributes are normalized',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="foo/test.html">
|
| </head></html>''',
|
| - 'a|web/foo/test.html': '''
|
| + 'a|web/foo/test.html': '''
|
| <img _src="./{{bar}}">
|
| <a _href="./{{bar}}">test</a>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <img _src="foo/{{bar}}">
|
| <a _href="foo/{{bar}}">test</a>
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('paths starting with a binding are treated as absolute', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'paths starting with a binding are treated as absolute',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="packages/a/foo.html">
|
| </head></html>''',
|
| - 'a|lib/foo.html': '''
|
| + 'a|lib/foo.html': '''
|
| <img _src="{{bar}}">
|
| <img _src="[[bar]]">''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <img _src="{{bar}}">
|
| <img _src="[[bar]]">
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('arbitrary bindings can exist in paths', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'arbitrary bindings can exist in paths',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <img src="./{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg">
|
| <img src="./[[bar[2]]].jpg">
|
| </body></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <img src="{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg">
|
| <img src="[[bar[2]]].jpg">
|
| </body></html>''',
|
| - }, null, StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('multiple bindings can exist in paths', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'multiple bindings can exist in paths',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <img src="./{{bar[0]}}/{{baz[1]}}.{{extension}}">
|
| </body></html>''',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <img src="{{bar[0]}}/{{baz[1]}}.{{extension}}">
|
| </body></html>''',
|
| - }, null, StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('relative paths in deep imports', phases, {
|
| - 'a|web/test.html': '''
|
| + testPhases(
|
| + 'relative paths in deep imports',
|
| + phases,
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="foo/foo.html">
|
| </head></html>''',
|
| - 'a|web/foo/foo.html': '''
|
| + 'a|web/foo/foo.html': '''
|
| <link rel="import" href="bar.html">''',
|
| - 'a|web/foo/bar.html': '''
|
| + 'a|web/foo/bar.html': '''
|
| <style rel="stylesheet" href="baz.css"></style>
|
| <style rel="stylesheet" href="../css/zap.css"></style>''',
|
| - 'a|web/foo/baz.css': '',
|
| - 'a|web/css/zap.css': '',
|
| - }, {
|
| - 'a|web/test.html': '''
|
| + 'a|web/foo/baz.css': '',
|
| + 'a|web/css/zap.css': '',
|
| + },
|
| + {
|
| + 'a|web/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <style rel="stylesheet" href="foo/baz.css"></style>
|
| <style rel="stylesheet" href="css/zap.css"></style>
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| }
|
|
|
| void entryPointTests() {
|
| - testPhases('one level deep entry points normalize correctly', phases, {
|
| - 'a|web/test/test.html': '''
|
| + testPhases(
|
| + 'one level deep entry points normalize correctly',
|
| + phases,
|
| + {
|
| + 'a|web/test/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="../../packages/a/foo/foo.html">
|
| </head></html>''',
|
| - 'a|lib/foo/foo.html': '''
|
| + 'a|lib/foo/foo.html': '''
|
| <script rel="import" href="../../../packages/b/bar/bar.js">
|
| </script>''',
|
| - 'b|lib/bar/bar.js': '''
|
| + 'b|lib/bar/bar.js': '''
|
| console.log("here");''',
|
| - }, {
|
| - 'a|web/test/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <script rel="import" href="../packages/b/bar/bar.js"></script>
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('includes in entry points normalize correctly', phases, {
|
| - 'a|web/test/test.html': '''
|
| + testPhases(
|
| + 'includes in entry points normalize correctly',
|
| + phases,
|
| + {
|
| + 'a|web/test/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <script src="packages/a/foo/bar.js"></script>
|
| </head></html>''',
|
| - 'a|lib/foo/bar.js': '''
|
| + 'a|lib/foo/bar.js': '''
|
| console.log("here");''',
|
| - }, {
|
| - 'a|web/test/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <script src="../packages/a/foo/bar.js"></script>
|
| </head><body>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
|
|
| - testPhases('two level deep entry points normalize correctly', phases, {
|
| - 'a|web/test/well/test.html': '''
|
| + testPhases(
|
| + 'two level deep entry points normalize correctly',
|
| + phases,
|
| + {
|
| + 'a|web/test/well/test.html': '''
|
| <!DOCTYPE html><html><head>
|
| <link rel="import" href="../../../packages/a/foo/foo.html">
|
| </head></html>''',
|
| - 'a|lib/foo/foo.html': '''
|
| + 'a|lib/foo/foo.html': '''
|
| <script rel="import" href="../../../packages/b/bar/bar.js"></script>''',
|
| - 'b|lib/bar/bar.js': '''
|
| + 'b|lib/bar/bar.js': '''
|
| console.log("here");''',
|
| - }, {
|
| - 'a|web/test/well/test.html': '''
|
| + },
|
| + {
|
| + 'a|web/test/well/test.html': '''
|
| <!DOCTYPE html><html><head></head><body>
|
| <div hidden="">
|
| <script rel="import" href="../../packages/b/bar/bar.js"></script>
|
| </div>
|
| </body></html>''',
|
| - }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| + },
|
| + messages: [],
|
| + formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| }
|
| +
|
| +// void templateTests() {
|
| +// testPhases('allows template inside table', phases, {
|
| +// 'a|web/index.html': '''
|
| +// <!DOCTYPE html>
|
| +// <html>
|
| +// <head><link rel="import" href="packages/a/foo.html"></head>
|
| +// <body>
|
| +// <dom-module id="hello-element">
|
| +// <template>
|
| +// <table>
|
| +// <thead>
|
| +// <tr><th>first</th><th>last</th></tr>
|
| +// </thead>
|
| +// <tbody>
|
| +// <template is="dom-repeat" items="{{data}}">
|
| +// <tr>
|
| +// <td>{{item.first}}</td>
|
| +// <td>{{item.last}}</td>
|
| +// </tr>
|
| +// </template>
|
| +// </tbody>
|
| +// </table>
|
| +// </template>
|
| +// </dom-module>
|
| +// </body>
|
| +// </html>''',
|
| +// 'a|lib/foo.html': '''
|
| +// <div>hello!</div>
|
| +// ''',
|
| +// }, {
|
| +// 'a|web/index.html': '''
|
| +// <!DOCTYPE html>
|
| +// <html>
|
| +// <head></head>
|
| +// <body>
|
| +// <div hidden="">
|
| +// <div>hello!</div>
|
| +// </div>
|
| +// <dom-module id="hello-element">
|
| +// <template>
|
| +// <table>
|
| +// <thead>
|
| +// <tr><th>first</th><th>last</th></tr>
|
| +// </thead>
|
| +// <tbody>
|
| +// <template is="dom-repeat" items="{{data}}">
|
| +// <tr>
|
| +// <td>{{item.first}}</td>
|
| +// <td>{{item.last}}</td>
|
| +// </tr>
|
| +// </template>
|
| +// </tbody>
|
| +// </table>
|
| +// </template>
|
| +// </dom-module>
|
| +// </body>
|
| +// </html>''',
|
| +// }, messages: [], formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
|
| +// }
|
|
|