| OLD | NEW |
| (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/interfaces/bindings/tests/sample_service.mojom", | |
| 8 "mojo/public/interfaces/bindings/tests/sample_import.mojom", | |
| 9 "mojo/public/interfaces/bindings/tests/sample_import2.mojom", | |
| 10 "mojo/public/js/bindings", | |
| 11 "mojo/public/js/core", | |
| 12 "mojo/public/js/threading", | |
| 13 ], function(expect, sample, imported, imported2, bindings, core, threading) { | |
| 14 testDefaultValues() | |
| 15 .then(testSampleService) | |
| 16 .then(function() { | |
| 17 this.result = "PASS"; | |
| 18 threading.quit(); | |
| 19 }.bind(this)).catch(function(e) { | |
| 20 this.result = "FAIL: " + (e.stack || e); | |
| 21 threading.quit(); | |
| 22 }.bind(this)); | |
| 23 | |
| 24 // Checks that values are set to the defaults if we don't override them. | |
| 25 function testDefaultValues() { | |
| 26 var bar = new sample.Bar(); | |
| 27 expect(bar.alpha).toBe(255); | |
| 28 expect(bar.type).toBe(sample.Bar.Type.VERTICAL); | |
| 29 | |
| 30 var foo = new sample.Foo(); | |
| 31 expect(foo.name).toBe("Fooby"); | |
| 32 expect(foo.a).toBeTruthy(); | |
| 33 expect(foo.data).toBeNull(); | |
| 34 | |
| 35 var defaults = new sample.DefaultsTest(); | |
| 36 expect(defaults.a0).toBe(-12); | |
| 37 expect(defaults.a1).toBe(sample.kTwelve); | |
| 38 expect(defaults.a2).toBe(1234); | |
| 39 expect(defaults.a3).toBe(34567); | |
| 40 expect(defaults.a4).toBe(123456); | |
| 41 expect(defaults.a5).toBe(3456789012); | |
| 42 expect(defaults.a6).toBe(-111111111111); | |
| 43 // JS doesn't have a 64 bit integer type so this is just checking that the | |
| 44 // expected and actual values have the same closest double value. | |
| 45 expect(defaults.a7).toBe(9999999999999999999); | |
| 46 expect(defaults.a8).toBe(0x12345); | |
| 47 expect(defaults.a9).toBe(-0x12345); | |
| 48 expect(defaults.a10).toBe(1234); | |
| 49 expect(defaults.a11).toBe(true); | |
| 50 expect(defaults.a12).toBe(false); | |
| 51 expect(defaults.a13).toBe(123.25); | |
| 52 expect(defaults.a14).toBe(1234567890.123); | |
| 53 expect(defaults.a15).toBe(1E10); | |
| 54 expect(defaults.a16).toBe(-1.2E+20); | |
| 55 expect(defaults.a17).toBe(1.23E-20); | |
| 56 expect(defaults.a20).toBe(sample.Bar.Type.BOTH); | |
| 57 expect(defaults.a21).toBeNull(); | |
| 58 expect(defaults.a22).toBeTruthy(); | |
| 59 expect(defaults.a22.shape).toBe(imported.Shape.RECTANGLE); | |
| 60 expect(defaults.a22.color).toBe(imported2.Color.BLACK); | |
| 61 expect(defaults.a21).toBeNull(); | |
| 62 expect(defaults.a23).toBe(0xFFFFFFFFFFFFFFFF); | |
| 63 expect(defaults.a24).toBe(0x123456789); | |
| 64 expect(defaults.a25).toBe(-0x123456789); | |
| 65 | |
| 66 return Promise.resolve(); | |
| 67 } | |
| 68 | |
| 69 function testSampleService() { | |
| 70 function ServiceImpl() { | |
| 71 } | |
| 72 | |
| 73 ServiceImpl.prototype.frobinate = function(foo, baz, port) { | |
| 74 checkFoo(foo); | |
| 75 expect(baz).toBe(sample.Service.BazOptions.EXTRA); | |
| 76 expect(port.ptr.isBound()).toBeTruthy(); | |
| 77 return Promise.resolve({result: 1234}); | |
| 78 }; | |
| 79 | |
| 80 var foo = makeFoo(); | |
| 81 checkFoo(foo); | |
| 82 | |
| 83 var service = new sample.ServicePtr(); | |
| 84 var request = bindings.makeRequest(service); | |
| 85 var serviceBinding = new bindings.Binding( | |
| 86 sample.Service, new ServiceImpl(), request); | |
| 87 | |
| 88 var port = new sample.PortPtr(); | |
| 89 bindings.makeRequest(port); | |
| 90 var promise = service.frobinate( | |
| 91 foo, sample.Service.BazOptions.EXTRA, port) | |
| 92 .then(function(response) { | |
| 93 expect(response.result).toBe(1234); | |
| 94 | |
| 95 return Promise.resolve(); | |
| 96 }); | |
| 97 | |
| 98 return promise; | |
| 99 } | |
| 100 | |
| 101 function makeFoo() { | |
| 102 var bar = new sample.Bar(); | |
| 103 bar.alpha = 20; | |
| 104 bar.beta = 40; | |
| 105 bar.gamma = 60; | |
| 106 bar.type = sample.Bar.Type.VERTICAL; | |
| 107 | |
| 108 var extra_bars = new Array(3); | |
| 109 for (var i = 0; i < extra_bars.length; ++i) { | |
| 110 var base = i * 100; | |
| 111 var type = i % 2 ? | |
| 112 sample.Bar.Type.VERTICAL : sample.Bar.Type.HORIZONTAL; | |
| 113 extra_bars[i] = new sample.Bar(); | |
| 114 extra_bars[i].alpha = base; | |
| 115 extra_bars[i].beta = base + 20; | |
| 116 extra_bars[i].gamma = base + 40; | |
| 117 extra_bars[i].type = type; | |
| 118 } | |
| 119 | |
| 120 var data = new Array(10); | |
| 121 for (var i = 0; i < data.length; ++i) { | |
| 122 data[i] = data.length - i; | |
| 123 } | |
| 124 | |
| 125 var foo = new sample.Foo(); | |
| 126 foo.name = "foopy"; | |
| 127 foo.x = 1; | |
| 128 foo.y = 2; | |
| 129 foo.a = false; | |
| 130 foo.b = true; | |
| 131 foo.c = false; | |
| 132 foo.bar = bar; | |
| 133 foo.extra_bars = extra_bars; | |
| 134 foo.data = data; | |
| 135 | |
| 136 // TODO(yzshen): currently setting it to null will cause connection error, | |
| 137 // even if the field is defined as nullable. crbug.com/575753 | |
| 138 foo.source = core.createMessagePipe().handle0; | |
| 139 | |
| 140 return foo; | |
| 141 } | |
| 142 | |
| 143 // Checks that the given |Foo| is identical to the one made by |makeFoo()|. | |
| 144 function checkFoo(foo) { | |
| 145 expect(foo.name).toBe("foopy"); | |
| 146 expect(foo.x).toBe(1); | |
| 147 expect(foo.y).toBe(2); | |
| 148 expect(foo.a).toBeFalsy(); | |
| 149 expect(foo.b).toBeTruthy(); | |
| 150 expect(foo.c).toBeFalsy(); | |
| 151 expect(foo.bar.alpha).toBe(20); | |
| 152 expect(foo.bar.beta).toBe(40); | |
| 153 expect(foo.bar.gamma).toBe(60); | |
| 154 expect(foo.bar.type).toBe(sample.Bar.Type.VERTICAL); | |
| 155 | |
| 156 expect(foo.extra_bars.length).toBe(3); | |
| 157 for (var i = 0; i < foo.extra_bars.length; ++i) { | |
| 158 var base = i * 100; | |
| 159 var type = i % 2 ? | |
| 160 sample.Bar.Type.VERTICAL : sample.Bar.Type.HORIZONTAL; | |
| 161 expect(foo.extra_bars[i].alpha).toBe(base); | |
| 162 expect(foo.extra_bars[i].beta).toBe(base + 20); | |
| 163 expect(foo.extra_bars[i].gamma).toBe(base + 40); | |
| 164 expect(foo.extra_bars[i].type).toBe(type); | |
| 165 } | |
| 166 | |
| 167 expect(foo.data.length).toBe(10); | |
| 168 for (var i = 0; i < foo.data.length; ++i) | |
| 169 expect(foo.data[i]).toBe(foo.data.length - i); | |
| 170 | |
| 171 expect(core.isHandle(foo.source)).toBeTruthy(); | |
| 172 } | |
| 173 }); | |
| OLD | NEW |