// 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([ "gin/test/expect", "mojo/public/js/bindings/core", "gc", ], function(expect, core, gc) { runWithMessagePipe(testNop); runWithMessagePipe(testReadAndWriteMessage); runWithDataPipe(testNop); runWithDataPipe(testReadAndWriteDataPipe); gc.collectGarbage(); // should not crash this.result = "PASS"; function runWithMessagePipe(test) { var pipe = core.createMessagePipe(); test(pipe); expect(core.close(pipe.handle0)).toBe(core.RESULT_OK); expect(core.close(pipe.handle1)).toBe(core.RESULT_OK); } function runWithDataPipe(test) { var pipe = core.createDataPipe({ flags: core.CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, elementNumBytes: 1, capacityNumBytes: 64 }); expect(pipe.result).toBe(core.RESULT_OK); test(pipe); expect(core.close(pipe.producerHandle)).toBe(core.RESULT_OK); expect(core.close(pipe.consumerHandle)).toBe(core.RESULT_OK); } function testNop(pipe) { } function testReadAndWriteMessage(pipe) { var senderData = new Uint8Array(42); for (var i = 0; i < senderData.length; ++i) { senderData[i] = i * i; } var result = core.writeMessage( pipe.handle0, senderData, [], core.WRITE_MESSAGE_FLAG_NONE); expect(result).toBe(core.RESULT_OK); var read = core.readMessage( pipe.handle1, core.READ_MESSAGE_FLAG_NONE); expect(read.result).toBe(core.RESULT_OK); expect(read.buffer.byteLength).toBe(42); expect(read.handles.length).toBe(0); var memory = new Uint8Array(read.buffer); for (var i = 0; i < memory.length; ++i) expect(memory[i]).toBe((i * i) & 0xFF); } function testReadAndWriteDataPipe(pipe) { var senderData = new Uint8Array(42); for (var i = 0; i < senderData.length; ++i) { senderData[i] = i * i; } var write = core.writeData( pipe.producerHandle, senderData, core.WRITE_DATA_FLAG_ALL_OR_NONE); expect(write.result).toBe(core.RESULT_OK); expect(write.numBytes).toBe(42); var read = core.readData( pipe.consumerHandle, core.READ_DATA_FLAG_ALL_OR_NONE); expect(read.result).toBe(core.RESULT_OK); expect(read.buffer.byteLength).toBe(42); var memory = new Uint8Array(read.buffer); for (var i = 0; i < memory.length; ++i) expect(memory[i]).toBe((i * i) & 0xFF); } });