Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: mojo/edk/js/tests/connection_tests.js

Issue 2645873003: Cleanup mojo-js tests. (Closed)
Patch Set: more deps fixes Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/edk/js/tests/binding_tests.js ('k') | mojo/edk/js/tests/interface_ptr_tests.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 define([
6 "gin/test/expect",
7 "mojo/public/js/bindings",
8 "mojo/public/js/core",
9 "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom",
10 "mojo/public/interfaces/bindings/tests/sample_service.mojom",
11 "mojo/public/js/threading",
12 "gc",
13 ], function(expect,
14 bindings,
15 core,
16 sample_interfaces,
17 sample_service,
18 threading,
19 gc) {
20 testClientServer()
21 .then(testWriteToClosedPipe)
22 .then(testRequestResponse)
23 .then(function() {
24 this.result = "PASS";
25 gc.collectGarbage(); // should not crash
26 threading.quit();
27 }.bind(this)).catch(function(e) {
28 this.result = "FAIL: " + (e.stack || e);
29 threading.quit();
30 }.bind(this));
31
32 function testClientServer() {
33 // ServiceImpl ------------------------------------------------------------
34
35 function ServiceImpl() {
36 }
37
38 ServiceImpl.prototype.frobinate = function(foo, baz, port) {
39 expect(foo.name).toBe("Example name");
40 expect(baz).toBe(sample_service.Service.BazOptions.REGULAR);
41 expect(port.ptr.isBound()).toBeTruthy();
42 port.ptr.reset();
43
44 return Promise.resolve({result: 42});
45 };
46
47 var service = new sample_service.ServicePtr();
48 var serviceBinding = new bindings.Binding(sample_service.Service,
49 new ServiceImpl(),
50 bindings.makeRequest(service));
51 var sourcePipe = core.createMessagePipe();
52 var port = new sample_service.PortPtr();
53 var portRequest = bindings.makeRequest(port);
54
55 var foo = new sample_service.Foo();
56 foo.bar = new sample_service.Bar();
57 foo.name = "Example name";
58 foo.source = sourcePipe.handle0;
59 var promise = service.frobinate(
60 foo, sample_service.Service.BazOptions.REGULAR, port)
61 .then(function(response) {
62 expect(response.result).toBe(42);
63
64 service.ptr.reset();
65 serviceBinding.close();
66
67 return Promise.resolve();
68 });
69
70 // sourcePipe.handle1 hasn't been closed yet.
71 expect(core.close(sourcePipe.handle1)).toBe(core.RESULT_OK);
72
73 // portRequest.handle hasn't been closed yet.
74 expect(core.close(portRequest.handle)).toBe(core.RESULT_OK);
75
76 return promise;
77 }
78
79 function testWriteToClosedPipe() {
80 var service = new sample_service.ServicePtr();
81 // Discard the interface request.
82 bindings.makeRequest(service);
83
84 var promise = service.frobinate(
85 null, sample_service.Service.BazOptions.REGULAR, null)
86 .then(function(response) {
87 return Promise.reject("Unexpected response");
88 }).catch(function(e) {
89 // We should observe the closed pipe.
90 return Promise.resolve();
91 });
92
93 return promise;
94 }
95
96 function testRequestResponse() {
97 // ProviderImpl ------------------------------------------------------------
98
99 function ProviderImpl() {
100 }
101
102 ProviderImpl.prototype.echoString = function(a) {
103 return Promise.resolve({a: a});
104 };
105
106 ProviderImpl.prototype.echoStrings = function(a, b) {
107 return Promise.resolve({a: a, b: b});
108 };
109
110 var provider = new sample_interfaces.ProviderPtr();
111 var providerBinding = new bindings.Binding(sample_interfaces.Provider,
112 new ProviderImpl(),
113 bindings.makeRequest(provider));
114 var promise = provider.echoString("hello").then(function(response) {
115 expect(response.a).toBe("hello");
116 return provider.echoStrings("hello", "world");
117 }).then(function(response) {
118 expect(response.a).toBe("hello");
119 expect(response.b).toBe("world");
120 // Mock a read failure, expect it to fail.
121 core.readMessage = function() {
122 return { result: core.RESULT_UNKNOWN };
123 };
124 return provider.echoString("goodbye");
125 }).then(function() {
126 throw Error("Expected echoString to fail.");
127 }, function(error) {
128 expect(error.message).toBe("Connection error: " + core.RESULT_UNKNOWN);
129
130 return Promise.resolve();
131 });
132
133 return promise;
134 }
135 });
OLDNEW
« no previous file with comments | « mojo/edk/js/tests/binding_tests.js ('k') | mojo/edk/js/tests/interface_ptr_tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698