OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file | 3 // BSD-style license that can be found in the LICENSE file |
4 | 4 |
5 #library('JsInterop3Test'); | 5 #library('JsInterop3Test'); |
6 #import('../../lib/unittest/unittest.dart'); | 6 #import('../../lib/unittest/unittest.dart'); |
7 #import('../../lib/unittest/html_config.dart'); | 7 #import('../../lib/unittest/html_config.dart'); |
8 #import('dart:html'); | 8 #import('dart:html'); |
9 #import('dart:isolate'); | 9 #import('dart:isolate'); |
10 | 10 |
11 injectSource(code) { | 11 injectSource(code) { |
12 final script = new ScriptElement(); | 12 final script = new ScriptElement(); |
13 script.type = 'text/javascript'; | 13 script.type = 'text/javascript'; |
14 script.innerHTML = code; | 14 script.innerHTML = code; |
15 document.body.nodes.add(script); | 15 document.body.nodes.add(script); |
16 } | 16 } |
17 | 17 |
18 var jsToDart = """ | 18 var jsToDart = """ |
19 var fun1 = window.lookupPort('fun1'); | 19 var fun1 = window.lookupPort('fun1'); |
20 var result = fun1.callSync({'a': 'Hello', 'b': 'World', c: 42}); | 20 var result = fun1.callSync({'a': 'Hello', 'b': 'World', c: 42}); |
21 | 21 |
22 var fun2 = window.lookupPort('fun2'); | 22 var fun2 = window.lookupPort('fun2'); |
23 fun2.callSync(result); | 23 fun2.callSync(result); |
24 """; | 24 """; |
25 | 25 |
26 main() { | 26 main() { |
27 useHtmlConfiguration(); | 27 useHtmlConfiguration(); |
28 | 28 |
29 test('js-to-dart', () { | 29 test('js-to-dart', () { |
30 var done = expectAsync0(() {}); | |
31 | |
32 var fun1 = (message) { | 30 var fun1 = (message) { |
33 Expect.equals('Hello', message['a']); | 31 Expect.equals('Hello', message['a']); |
34 Expect.equals('World', message['b']); | 32 Expect.equals('World', message['b']); |
35 Expect.equals(42, message['c']); | 33 Expect.equals(42, message['c']); |
36 Expect.equals(3, message.getKeys().length); | 34 Expect.equals(3, message.getKeys().length); |
37 return 42; | 35 return 42; |
38 }; | 36 }; |
39 | 37 |
40 var port1 = new ReceivePortSync(); | 38 var port1 = new ReceivePortSync(); |
41 port1.receive(fun1); | 39 port1.receive(fun1); |
42 window.registerPort('fun1', port1.toSendPort()); | 40 window.registerPort('fun1', port1.toSendPort()); |
43 | 41 |
| 42 // TODO(vsm): Investigate why this needs to be called asynchronously. |
| 43 var done = expectAsync0(() {}); |
44 var fun2 = (message) { | 44 var fun2 = (message) { |
45 Expect.equals(42, message); | 45 Expect.equals(42, message); |
46 | |
47 // TODO(vsm): Investigate why this needs to be called asynchronously. | |
48 window.setTimeout(done, 0); | 46 window.setTimeout(done, 0); |
49 }; | 47 }; |
50 | 48 |
51 var port2 = new ReceivePortSync(); | 49 var port2 = new ReceivePortSync(); |
52 port2.receive(fun2); | 50 port2.receive(fun2); |
53 window.registerPort('fun2', port2.toSendPort()); | 51 window.registerPort('fun2', port2.toSendPort()); |
54 | 52 |
55 injectSource(jsToDart); | 53 injectSource(jsToDart); |
56 }); | 54 }); |
57 } | 55 } |
OLD | NEW |