Index: mojo/public/bindings/sample/sample_test.js |
diff --git a/mojo/public/bindings/sample/sample_test.js b/mojo/public/bindings/sample/sample_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..230f4df51a1d3bee2c6a99fe895c90768452c9d7 |
--- /dev/null |
+++ b/mojo/public/bindings/sample/sample_test.js |
@@ -0,0 +1,123 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+define([ |
+ "gtest", |
+ // TODO(abarth): We shouldn't need to depend on codec, but there seems to |
+ // be a bug in the module loading system whereby this test doesn't run if |
+ // we don't import codec here. |
+ "mojo/public/bindings/js/codec", |
+ "mojo/public/bindings/sample/mojom/sample_service" |
+ ], function(gtest, codec, sample) { |
abarth-chromium
2013/11/18 23:30:44
This code is a direct transliteration of sample_te
|
+ |
+ var global = this; |
+ |
+ function makeFoo() { |
+ var bar = new sample.Bar(); |
+ bar.alpha = 20; |
+ bar.beta = 40; |
+ bar.gamma = 60; |
+ |
+ var extra_bars = new Array(3); |
+ for (var i = 0; i < extra_bars.length; ++i) { |
+ var base = i * 100; |
+ extra_bars[i] = new sample.Bar(); |
+ extra_bars[i].alpha = base; |
+ extra_bars[i].beta = base + 20; |
+ extra_bars[i].gamma = base + 40; |
+ } |
+ |
+ var data = new Array(10); |
+ for (var i = 0; i < data.length; ++i) { |
+ data[i] = data.length - i; |
+ } |
+ |
+ var files = new Array(4); |
+ for (var i = 0; i < files.length; ++i) { |
+ files[i] = 0xFFFF - i; |
+ } |
+ |
+ var foo = new sample.Foo(); |
+ foo.name = "foopy"; |
+ foo.x = 1; |
+ foo.y = 2; |
+ foo.a = false; |
+ foo.b = true; |
+ foo.c = false; |
+ foo.bar = bar; |
+ foo.extra_bars = extra_bars; |
+ foo.data = data; |
+ foo.files = files; |
+ return foo; |
+ } |
+ |
+ // Check that the given |Foo| is identical to the one made by |MakeFoo()|. |
+ function checkFoo(foo) { |
+ gtest.expectEqual(foo.name, "foopy", "foo.name is " + foo.name); |
+ gtest.expectEqual(foo.x, 1, "foo.x is " + foo.x); |
+ gtest.expectEqual(foo.y, 2, "foo.y is " + foo.y); |
+ gtest.expectFalse(foo.a, "foo.a is " + foo.a); |
+ gtest.expectTrue(foo.b, "foo.b is " + foo.b); |
+ gtest.expectFalse(foo.c, "foo.c is " + foo.c); |
+ gtest.expectEqual(foo.bar.alpha, 20, "foo.bar.alpha is " + foo.bar.alpha); |
+ gtest.expectEqual(foo.bar.beta, 40, "foo.bar.beta is " + foo.bar.beta); |
+ gtest.expectEqual(foo.bar.gamma, 60, "foo.bar.gamma is " + foo.bar.gamma); |
+ |
+ gtest.expectEqual(foo.extra_bars.length, 3, |
+ "foo.extra_bars.length is " + foo.extra_bars.length); |
+ for (var i = 0; i < foo.extra_bars.length; ++i) { |
+ var base = i * 100; |
+ gtest.expectEqual(foo.extra_bars[i].alpha, base, |
+ "foo.extra_bars[" + i + "].alpha is " + foo.extra_bars[i].alpha); |
+ gtest.expectEqual(foo.extra_bars[i].beta, base + 20, |
+ "foo.extra_bars[" + i + "].beta is " + foo.extra_bars[i].beta); |
+ gtest.expectEqual(foo.extra_bars[i].gamma, base + 40, |
+ "foo.extra_bars[" + i + "].gamma is " + foo.extra_bars[i].gamma); |
+ } |
+ |
+ gtest.expectEqual(foo.data.length, 10, |
+ "foo.data.length is " + foo.data.length); |
+ for (var i = 0; i < foo.data.length; ++i) { |
+ gtest.expectEqual(foo.data[i], foo.data.length - i, |
+ "foo.data[" + i + "] is " + foo.data[i]); |
+ } |
+ |
+ gtest.expectEqual(foo.files.length, 4, |
+ "foo.files.length " + foo.files.length); |
+ for (var i = 0; i < foo.files.length; ++i) { |
+ gtest.expectEqual(foo.files[i], 0xFFFF - i, |
+ "foo.files[" + i + "] is " + foo.files[i]); |
+ } |
+ } |
+ |
+ function ServiceImpl() { |
+ } |
+ |
+ ServiceImpl.prototype = Object.create(sample.ServiceStub.prototype); |
+ |
+ ServiceImpl.prototype.frobinate = function(foo, baz, port) { |
+ checkFoo(foo); |
+ gtest.expectTrue(baz, "baz is " + baz); |
+ gtest.expectEqual(port, 10, "port is " + port); |
+ global.result = "PASS"; |
+ }; |
+ |
+ function SimpleMessageReceiver() { |
+ } |
+ |
+ SimpleMessageReceiver.prototype.accept = function(message) { |
+ // Imagine some IPC happened here. |
+ var serviceImpl = new ServiceImpl(); |
+ serviceImpl.accept(message); |
+ }; |
+ |
+ var receiver = new SimpleMessageReceiver(); |
+ var serviceProxy = new sample.ServiceProxy(receiver); |
+ |
+ var foo = makeFoo(); |
+ checkFoo(foo); |
+ |
+ var port = 10; |
+ serviceProxy.frobinate(foo, true, port); |
+}); |