c265902bea
Review URL: https://chromiumcodereview.appspot.com//10836241 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10685 260f80e4-7a28-3924-810f-c04153c831b5
56 lines
1.5 KiB
Dart
56 lines
1.5 KiB
Dart
// Copyright (c) 2012, 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('JsInterop3Test');
|
|
#import('../../pkg/unittest/unittest.dart');
|
|
#import('../../pkg/unittest/html_config.dart');
|
|
#import('dart:html');
|
|
#import('dart:isolate');
|
|
|
|
injectSource(code) {
|
|
final script = new ScriptElement();
|
|
script.type = 'text/javascript';
|
|
script.innerHTML = code;
|
|
document.body.nodes.add(script);
|
|
}
|
|
|
|
var jsToDart = """
|
|
var fun1 = window.lookupPort('fun1');
|
|
var result = fun1.callSync({'a': 'Hello', 'b': 'World', c: 42});
|
|
|
|
var fun2 = window.lookupPort('fun2');
|
|
fun2.callSync(result);
|
|
""";
|
|
|
|
main() {
|
|
useHtmlConfiguration();
|
|
|
|
test('js-to-dart', () {
|
|
var fun1 = (message) {
|
|
Expect.equals('Hello', message['a']);
|
|
Expect.equals('World', message['b']);
|
|
Expect.equals(42, message['c']);
|
|
Expect.equals(3, message.getKeys().length);
|
|
return 42;
|
|
};
|
|
|
|
var port1 = new ReceivePortSync();
|
|
port1.receive(fun1);
|
|
window.registerPort('fun1', port1.toSendPort());
|
|
|
|
// TODO(vsm): Investigate why this needs to be called asynchronously.
|
|
var done = expectAsync0(() {});
|
|
var fun2 = (message) {
|
|
Expect.equals(42, message);
|
|
window.setTimeout(done, 0);
|
|
};
|
|
|
|
var port2 = new ReceivePortSync();
|
|
port2.receive(fun2);
|
|
window.registerPort('fun2', port2.toSendPort());
|
|
|
|
injectSource(jsToDart);
|
|
});
|
|
}
|