| Index: LayoutTests/dart/Multiscript.html
|
| diff --git a/LayoutTests/dart/Multiscript.html b/LayoutTests/dart/Multiscript.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c4df14cbbc6f0b6f9470818b0a58626b23961143
|
| --- /dev/null
|
| +++ b/LayoutTests/dart/Multiscript.html
|
| @@ -0,0 +1,113 @@
|
| +<html>
|
| +<head>
|
| +<script type="application/javascript" src="../../../../dart/pkg/unittest/lib/test_controller.js"></script>
|
| +<script type="application/javascript">
|
| +var sJs = 0;
|
| +var callbacks = [];
|
| +var numCallbacks = 0;
|
| +// Trivial method to run all 4 callbacks in order once they are all
|
| +// registered.
|
| +function registerCallback(index, callback) {
|
| + callbacks[index] = callback;
|
| + numCallbacks++;
|
| + if (numCallbacks == 4) {
|
| + for (var i = 0; i < numCallbacks; i++) {
|
| + callbacks[i]();
|
| + }
|
| + }
|
| +}
|
| +</script>
|
| +</head>
|
| +<body>
|
| +
|
| +<script type="application/dart">
|
| +import 'dart:async';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'Multiscript.dart';
|
| +
|
| +main() {
|
| + State.registerCallback(0, () {
|
| + // FIXME: Rewrite this test to use html-imports.
|
| + print("Running script 0");
|
| + State.update();
|
| + expect(State.sJs, equals(1));
|
| + expect(State.sDart, equals(1));
|
| + });
|
| +}
|
| +</script>
|
| +
|
| +<script type="application/dart">
|
| +import 'dart:js' as js;
|
| +import 'dart:math';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'Multiscript.dart';
|
| +
|
| +main() {
|
| + State.registerCallback(1, () {
|
| + print("Running script 1");
|
| + State.update();
|
| + expect(State.sJs, equals(2));
|
| + expect(State.sDart, equals(1));
|
| + js.context['doubleValue'] = (x) => x*2;
|
| + expect(js.context.callMethod('doubleValue', [21]), equals(42));
|
| + expect(js.context.callMethod('doubleValue', ["Foo"]), equals("FooFoo"));
|
| + // Point is not a primitive type so passing it to a different isolate is
|
| + // not allowed.
|
| + expect(js.context.callMethod('doubleValue', [new Point(2, 4)]),
|
| + equals(new Point(4, 8)));
|
| + });
|
| +}
|
| +</script>
|
| +
|
| +<script type="application/dart">
|
| +import 'package:unittest/unittest.dart';
|
| +import 'Multiscript.dart';
|
| +
|
| +main() {
|
| + State.registerCallback(2, () {
|
| + print("Running script 2");
|
| + State.update();
|
| + expect(State.sJs, equals(3));
|
| + expect(State.sDart, equals(1));
|
| + });
|
| +}
|
| +</script>
|
| +
|
| +<script type="application/dart">
|
| +import 'dart:js' as js;
|
| +import 'dart:math';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:unittest/html_config.dart';
|
| +import 'Multiscript.dart';
|
| +
|
| +main() {
|
| + State.registerCallback(3, () {
|
| + print("Running script 3");
|
| + useHtmlConfiguration(true);
|
| + test('Multiple script tags', () {
|
| + State.update();
|
| + expect(State.sJs, equals(4));
|
| + expect(State.sDart, equals(1));
|
| +
|
| + // doubleValue is from a different Dart isolate but arguments are primitive
|
| + // types so it is safe to call.
|
| + expect(js.context.callMethod('doubleValue', [21]), equals(42));
|
| + expect(js.context.callMethod('doubleValue', ["Foo"]), equals("FooFoo"));
|
| + // Point is not a primitive type so passing it to a different isolate
|
| + // using js interop results in a JsObject rather than a Point. A
|
| + // NoSuchMethodError is thrown in the other Dart isolate but once the
|
| + // error gets to this isolate it shows up as just an Unhandled Exception.
|
| + expect(() {
|
| + try {
|
| + js.context.callMethod('doubleValue', [new Point(2, 4)]);
|
| + } catch (e) {
|
| + throw new Exception(e.toString());
|
| + }
|
| + },
|
| + throwsException);
|
| + });
|
| + });
|
| +}
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|