OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 <script src="../resources/mojo-helpers.js"></script> | 4 <script src="../resources/mojo-helpers.js"></script> |
5 <script> | 5 <script> |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 // Verify that the mojo_test helper functions properly and Mojo bindings | 8 // Verify that the mojo_test helper functions properly and Mojo bindings |
9 // are available. | 9 // are available. |
10 mojo_test(mojo => { | 10 mojo_test(mojo => { |
11 assert_true(mojo instanceof Object); | 11 assert_true(mojo instanceof Object); |
12 assert_true(mojo.core instanceof Object); | 12 assert_true(mojo.core instanceof Object); |
13 assert_true(mojo.router instanceof Object); | 13 assert_true(mojo.router instanceof Object); |
14 assert_true(mojo.serviceRegistry instanceof Object); | 14 assert_true(mojo.serviceRegistry instanceof Object); |
15 }, 'Mojo system APIs should be available to layout tests.'); | 15 }, 'Mojo system APIs should be available to layout tests.'); |
16 | |
17 mojo_test(mojo => { | |
18 return new Promise(resolve => { | |
19 // Complete the test as soon as a request comes in for a Frobinator service. | |
20 mojo.serviceRegistry.addServiceOverrideForTesting('Frobinator', resolve); | |
21 | |
22 // Try to connect to the browser's Frobinator service. This should be | |
23 // intercepted by the above override. | |
24 mojo.serviceRegistry.connectToService('Frobinator'); | |
25 }); | |
26 }, 'Service registry overrides should be properly intercepted.'); | |
27 | |
28 mojo_test(mojo => { | |
29 return new Promise(resolve => { | |
30 let TEST_REQUEST = new Uint8Array([42, 0, 2, 3, 5, 7, 11, 13, 17, 19, 23]); | |
31 | |
32 mojo.serviceRegistry.addServiceOverrideForTesting('Frobinator', pipe => { | |
33 resolve(mojo_wait_for_incoming_message(mojo, pipe) | |
34 .then(message => { | |
35 assert_array_equals(new Uint8Array(message.buffer), TEST_REQUEST); | |
36 assert_array_equals(message.handles, []); | |
37 })); | |
38 }); | |
39 | |
40 let pipe = mojo.serviceRegistry.connectToService('Frobinator'); | |
41 assert_equals(mojo.core.writeMessage(pipe, TEST_REQUEST, [], 0), | |
42 mojo.core.RESULT_OK); | |
43 }); | |
44 }, 'Mock services can receive messages from test code.'); | |
45 | |
46 mojo_test(mojo => { | |
47 let TEST_REQUEST = new Uint8Array([1, 2, 3, 4, 5]); | |
48 let EXPECTED_RESPONSE = new Uint8Array([5, 4, 3, 2, 1]); | |
49 | |
50 // Mock service should respond to any message with its reverse. | |
51 mojo.serviceRegistry.addServiceOverrideForTesting('Reversinator', pipe => { | |
52 mojo_wait_for_incoming_message(mojo, pipe) | |
53 .then(message => { | |
54 let response = new Uint8Array(message.buffer); | |
55 response.reverse(); | |
56 assert_equals(mojo.core.writeMessage(pipe, response, [], 0), | |
57 mojo.core.RESULT_OK); | |
58 }); | |
59 }); | |
60 | |
61 let pipe = mojo.serviceRegistry.connectToService('Reversinator'); | |
62 assert_equals(mojo.core.writeMessage(pipe, TEST_REQUEST, [], 0), | |
63 mojo.core.RESULT_OK); | |
64 | |
65 return mojo_wait_for_incoming_message(mojo, pipe) | |
66 .then(response => { | |
67 assert_array_equals(new Uint8Array(response.buffer), EXPECTED_RESPONSE); | |
68 assert_array_equals(response.handles, []); | |
69 }); | |
70 }, 'Test code can receive response messages from mock services.'); | |
71 </script> | 16 </script> |
OLD | NEW |