blob: 1989ba9cdbbf06f2f40858d32dc208e5a60a39b3 [file] [log] [blame]
// 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 tests.html.mirrors_js_typed_interop_test;
import 'dart:mirrors';
import 'dart:html';
import 'package:js/js.dart';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
_injectJs() {
document.body.append(new ScriptElement()
..type = 'text/javascript'
..innerHtml = r"""
window.foo = {
x: 3,
z: 100,
multiplyBy2: function(arg) { return arg * 2; },
};
""");
}
@Js()
external Foo get foo;
@Js()
class Foo {
external int get x;
external set x(v);
external num multiplyBy2(num y);
}
main() {
_injectJs();
useHtmlConfiguration();
test('dynamic dispatch', () {
var f = foo;
expect(f.x, 3);
// JsInterop methods are not accessible using reflection.
expect(() => reflect(f).setField(#x, 123), throws);
expect(f.x, 3);
});
}