Index: mojo/public/js/core_unittests.js |
diff --git a/mojo/public/js/core_unittests.js b/mojo/public/js/core_unittests.js |
index eaeaa4f74aeb9ada6e199bb3408fb89fcec1d8ff..0f7b3ff0290297b5af332c58d8c6bcf456eb51b6 100644 |
--- a/mojo/public/js/core_unittests.js |
+++ b/mojo/public/js/core_unittests.js |
@@ -7,6 +7,13 @@ define([ |
"mojo/public/js/core", |
"gc", |
], function(expect, core, gc) { |
+ |
+ var HANDLE_SIGNAL_READWRITABLE = core.HANDLE_SIGNAL_WRITABLE | |
+ core.HANDLE_SIGNAL_READABLE; |
+ var HANDLE_SIGNAL_ALL = core.HANDLE_SIGNAL_WRITABLE | |
+ core.HANDLE_SIGNAL_READABLE | |
+ core.HANDLE_SIGNAL_PEER_CLOSED; |
+ |
runWithMessagePipe(testNop); |
runWithMessagePipe(testReadAndWriteMessage); |
runWithMessagePipeWithOptions(testNop); |
@@ -15,6 +22,8 @@ define([ |
runWithDataPipe(testReadAndWriteDataPipe); |
runWithDataPipeWithOptions(testNop); |
runWithDataPipeWithOptions(testReadAndWriteDataPipe); |
+ runWithMessagePipe(testIsHandleMessagePipe); |
+ runWithDataPipe(testIsHandleDataPipe); |
gc.collectGarbage(); // should not crash |
this.result = "PASS"; |
@@ -68,6 +77,36 @@ define([ |
} |
function testReadAndWriteMessage(pipe) { |
+ var wait = core.waitMany([], [], 0); |
+ expect(wait.result).toBe(core.RESULT_INVALID_ARGUMENT); |
+ expect(wait.index).toBe(null); |
+ expect(wait.signalsState).toBe(null); |
+ |
+ wait = core.wait(pipe.handle0, core.HANDLE_SIGNAL_READABLE, 0); |
+ expect(wait.result).toBe(core.RESULT_DEADLINE_EXCEEDED); |
+ expect(wait.signalsState.satisfiedSignals).toBe( |
+ core.HANDLE_SIGNAL_WRITABLE); |
+ expect(wait.signalsState.satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ |
+ wait = core.waitMany( |
+ [pipe.handle0, pipe.handle1], |
+ [core.HANDLE_SIGNAL_READABLE,core.HANDLE_SIGNAL_READABLE], |
+ 0); |
+ expect(wait.result).toBe(core.RESULT_DEADLINE_EXCEEDED); |
+ expect(wait.index).toBe(null); |
+ expect(wait.signalsState[0].satisfiedSignals).toBe( |
+ core.HANDLE_SIGNAL_WRITABLE); |
+ expect(wait.signalsState[0].satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ expect(wait.signalsState[1].satisfiedSignals).toBe( |
+ core.HANDLE_SIGNAL_WRITABLE); |
+ expect(wait.signalsState[1].satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ |
+ wait = core.wait(pipe.handle0, core.HANDLE_SIGNAL_WRITABLE, 0); |
+ expect(wait.result).toBe(core.RESULT_OK); |
+ expect(wait.signalsState.satisfiedSignals).toBe( |
+ core.HANDLE_SIGNAL_WRITABLE); |
+ expect(wait.signalsState.satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ |
var senderData = new Uint8Array(42); |
for (var i = 0; i < senderData.length; ++i) { |
senderData[i] = i * i; |
@@ -79,6 +118,19 @@ define([ |
expect(result).toBe(core.RESULT_OK); |
+ wait = core.waitMany( |
+ [pipe.handle0, pipe.handle1], |
+ [core.HANDLE_SIGNAL_WRITABLE,core.HANDLE_SIGNAL_WRITABLE], |
+ 0); |
+ expect(wait.result).toBe(core.RESULT_OK); |
+ expect(wait.index).toBe(0); |
+ expect(wait.signalsState[0].satisfiedSignals).toBe( |
+ core.HANDLE_SIGNAL_WRITABLE); |
+ expect(wait.signalsState[0].satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ expect(wait.signalsState[1].satisfiedSignals).toBe( |
+ HANDLE_SIGNAL_READWRITABLE); |
+ expect(wait.signalsState[1].satisfiableSignals).toBe(HANDLE_SIGNAL_ALL); |
+ |
var read = core.readMessage( |
pipe.handle1, core.READ_MESSAGE_FLAG_NONE); |
@@ -125,4 +177,21 @@ define([ |
expect(memory[i]).toBe((i * i) & 0xFF); |
} |
+ function testIsHandleMessagePipe(pipe) { |
+ expect(core.isHandle(123).toBeFalsy); |
+ expect(core.isHandle("123").toBeFalsy); |
+ expect(core.isHandle({}).toBeFalsy); |
+ expect(core.isHandle([]).toBeFalsy); |
+ expect(core.isHandle(undefined).toBeFalsy); |
+ expect(core.isHandle(pipe).toBeFalsy); |
+ expect(core.isHandle(pipe.handle0)).toBeTruthy(); |
+ expect(core.isHandle(pipe.handle1)).toBeTruthy(); |
+ expect(core.isHandle(null)).toBeTruthy(); |
+ } |
+ |
+ function testIsHandleDataPipe(pipe) { |
+ expect(core.isHandle(pipe.consumerHandle)).toBeTruthy(); |
+ expect(core.isHandle(pipe.producerHandle)).toBeTruthy(); |
+ } |
+ |
}); |