| Index: tests/html/js_typed_interop_test.dart
|
| diff --git a/tests/html/js_typed_interop_test.dart b/tests/html/js_typed_interop_test.dart
|
| deleted file mode 100644
|
| index c8c02600743cdb4c345d992d4f709891ccfc16f7..0000000000000000000000000000000000000000
|
| --- a/tests/html/js_typed_interop_test.dart
|
| +++ /dev/null
|
| @@ -1,139 +0,0 @@
|
| -// 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.
|
| -
|
| -library jsArrayTest;
|
| -
|
| -import 'dart:html';
|
| -import 'dart:js';
|
| -
|
| -import 'package:unittest/unittest.dart';
|
| -import 'package:unittest/html_config.dart';
|
| -
|
| -_injectJs() {
|
| - document.body.append(new ScriptElement()
|
| - ..type = 'text/javascript'
|
| - ..innerHtml = r"""
|
| - var foo = {
|
| - x: 3,
|
| - z: 40, // Not specified in typed Dart API so should fail in checked mode.
|
| - multiplyByX: function(arg) { return arg * this.x; },
|
| - // This function can be torn off without having to bind this.
|
| - multiplyBy2: function(arg) { return arg * 2; }
|
| - };
|
| -
|
| - var foob = {
|
| - x: 8,
|
| - y: "why",
|
| - multiplyByX: function(arg) { return arg * this.x; }
|
| - };
|
| -
|
| - var bar = {
|
| - x: "foo",
|
| - multiplyByX: true
|
| - };
|
| -
|
| - var selection = ["a", "b", "c", foo, bar];
|
| - selection.doubleLength = function() { return this.length * 2; };
|
| -""");
|
| -}
|
| -
|
| -abstract class Foo {
|
| - int get x;
|
| - set x(int v);
|
| - num multiplyByX(num y);
|
| - num multiplyBy2(num y);
|
| -}
|
| -
|
| -abstract class Foob extends Foo {
|
| - final String y;
|
| -}
|
| -
|
| -abstract class Bar {
|
| - String get x;
|
| - bool get multiplyByX;
|
| -}
|
| -
|
| -class Baz {}
|
| -
|
| -// This class shows the pattern used by APIs such as jQuery that add methods
|
| -// to Arrays.
|
| -abstract class Selection implements List {
|
| - num doubleLength();
|
| -}
|
| -
|
| -Foo get foo => context['foo'];
|
| -Foob get foob => context['foob'];
|
| -Bar get bar => context['bar'];
|
| -Selection get selection => context['selection'];
|
| -
|
| -main() {
|
| - // Call experimental API to register Dart interfaces implemented by
|
| - // JavaScript classes.
|
| - registerJsInterfaces([Foo, Foob, Bar, Selection]);
|
| -
|
| - _injectJs();
|
| -
|
| - useHtmlConfiguration();
|
| -
|
| - group('property', () {
|
| - test('get', () {
|
| - expect(foo.x, equals(3));
|
| - expect(foob.x, equals(8));
|
| - expect(foob.y, equals("why"));
|
| -
|
| - // Exists in JS but not in API.
|
| - expect(() => foo.z, throws);
|
| - expect(bar.multiplyByX, isTrue);
|
| - });
|
| - test('set', () {
|
| - foo.x = 42;
|
| - expect(foo.x, equals(42));
|
| - // Property tagged as read only in typed API.
|
| - expect(() => foob.y = "bla", throws);
|
| - expect(() => foo.unknownName = 42, throws);
|
| - });
|
| - });
|
| -
|
| - group('method', () {
|
| - test('call', () {
|
| - foo.x = 100;
|
| - expect(foo.multiplyByX(4), equals(400));
|
| - foob.x = 10;
|
| - expect(foob.multiplyByX(4), equals(40));
|
| - });
|
| -
|
| - test('tearoff', () {
|
| - foo.x = 10;
|
| - // TODO(jacobr): should we automatically bind "this" for tearoffs of JS
|
| - // objects?
|
| - JsFunction multiplyBy2 = foo.multiplyBy2;
|
| - expect(multiplyBy2(5), equals(10));
|
| - });
|
| - });
|
| -
|
| - group('type check', () {
|
| - test('js interfaces', () {
|
| - expect(foo is JsObject, isTrue);
|
| - // Cross-casts are allowed.
|
| - expect(foo is Bar, isTrue);
|
| - expect(selection is JsArray, isTrue);
|
| -
|
| - // We do know at runtime whether something is a JsArray or not.
|
| - expect(foo is JsArray, isFalse);
|
| - });
|
| -
|
| - test('dart interfaces', () {
|
| - expect(foo is Function, isFalse);
|
| - expect(selection is List, isTrue);
|
| - });
|
| - });
|
| -
|
| - group("registration", () {
|
| - test('repeated fails', () {
|
| - // The experimental registerJsInterfaces API has already been called so
|
| - // it cannot be called a second time.
|
| - expect(() => registerJsInterfaces([Baz]), throws);
|
| - });
|
| - });
|
| -}
|
|
|