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

Side by Side Diff: mojo/edk/js/tests/binding_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/BUILD.gn ('k') | mojo/edk/js/tests/connection_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 2016 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/interfaces/bindings/tests/math_calculator.mojom",
9 "mojo/public/js/threading",
10 "gc",
11 ], function(expect,
12 bindings,
13 math,
14 threading,
15 gc) {
16 testIsBound()
17 .then(testReusable)
18 .then(testConnectionError)
19 .then(testUnbind)
20 .then(testBindingSet)
21 .then(function() {
22 this.result = "PASS";
23 gc.collectGarbage(); // should not crash
24 threading.quit();
25 }.bind(this)).catch(function(e) {
26 this.result = "FAIL: " + (e.stack || e);
27 threading.quit();
28 }.bind(this));
29
30 function CalculatorImpl() {
31 this.total = 0;
32 }
33
34 CalculatorImpl.prototype.clear = function() {
35 this.total = 0;
36 return Promise.resolve({value: this.total});
37 };
38
39 CalculatorImpl.prototype.add = function(value) {
40 this.total += value;
41 return Promise.resolve({value: this.total});
42 };
43
44 CalculatorImpl.prototype.multiply = function(value) {
45 this.total *= value;
46 return Promise.resolve({value: this.total});
47 };
48
49 function testIsBound() {
50 var binding = new bindings.Binding(math.Calculator, new CalculatorImpl());
51 expect(binding.isBound()).toBeFalsy();
52
53 var calc = new math.CalculatorPtr();
54 var request = bindings.makeRequest(calc);
55 binding.bind(request);
56 expect(binding.isBound()).toBeTruthy();
57
58 binding.close();
59 expect(binding.isBound()).toBeFalsy();
60
61 return Promise.resolve();
62 }
63
64 function testReusable() {
65 var calc1 = new math.CalculatorPtr();
66 var calc2 = new math.CalculatorPtr();
67
68 var calcBinding = new bindings.Binding(math.Calculator,
69 new CalculatorImpl(),
70 bindings.makeRequest(calc1));
71
72 var promise = calc1.add(2).then(function(response) {
73 expect(response.value).toBe(2);
74 calcBinding.bind(bindings.makeRequest(calc2));
75 return calc2.add(2);
76 }).then(function(response) {
77 expect(response.value).toBe(4);
78 return Promise.resolve();
79 });
80
81 return promise;
82 }
83
84 function testConnectionError() {
85 var calc = new math.CalculatorPtr();
86 var calcBinding = new bindings.Binding(math.Calculator,
87 new CalculatorImpl(),
88 bindings.makeRequest(calc));
89
90 var promise = new Promise(function(resolve, reject) {
91 calcBinding.setConnectionErrorHandler(function() {
92 resolve();
93 });
94 calc.ptr.reset();
95 });
96
97 return promise;
98 }
99
100 function testUnbind() {
101 var calc = new math.CalculatorPtr();
102 var calcBinding = new bindings.Binding(math.Calculator,
103 new CalculatorImpl(),
104 bindings.makeRequest(calc));
105 var newCalcBinding = null;
106
107 var promise = calc.add(2).then(function(response) {
108 expect(response.value).toBe(2);
109 var interfaceRequest = calcBinding.unbind();
110 expect(calcBinding.isBound()).toBeFalsy();
111 newCalcBinding = new bindings.Binding(math.Calculator,
112 new CalculatorImpl(),
113 interfaceRequest);
114 return calc.add(2);
115 }).then(function(response) {
116 expect(response.value).toBe(2);
117 return Promise.resolve();
118 });
119
120 return promise;
121 }
122
123 function testBindingSet() {
124 var calc1 = new math.CalculatorPtr();
125 var calc2 = new math.CalculatorPtr();
126 var calcImpl = new CalculatorImpl();
127
128 var bindingSet = new bindings.BindingSet(math.Calculator);
129 expect(bindingSet.isEmpty()).toBeTruthy();
130 bindingSet.addBinding(calcImpl, bindings.makeRequest(calc1));
131 bindingSet.addBinding(calcImpl, bindings.makeRequest(calc2));
132 expect(bindingSet.isEmpty()).toBeFalsy();
133
134 var promise = calc1.add(3).then(function(response) {
135 expect(response.value).toBe(3);
136 return calc2.add(4);
137 }).then(function(response) {
138 expect(response.value).toBe(7);
139
140 var promiseOfConnectionError = new Promise(function(resolve, reject) {
141 bindingSet.setConnectionErrorHandler(function() {
142 resolve();
143 });
144 });
145 calc1.ptr.reset();
146 return promiseOfConnectionError;
147 }).then(function() {
148 return calc2.add(5);
149 }).then(function(response) {
150 expect(response.value).toBe(12);
151
152 bindingSet.closeAllBindings();
153 expect(bindingSet.isEmpty()).toBeTruthy();
154 return Promise.resolve();
155 });
156
157 return promise;
158 }
159 });
OLDNEW
« no previous file with comments | « mojo/edk/js/tests/BUILD.gn ('k') | mojo/edk/js/tests/connection_tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698