TEST_F(DocumentWebSocketChannelTest, sendTextContinuation) { connect(); Checkpoint checkpoint; { InSequence s; EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeText, MemEq("0123456789abcdef", 16), 16)); EXPECT_CALL(checkpoint, Call(1)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("g", 1), 1)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("hijk", 4), 4)); EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeText, MemEq("lmnopqrstuv", 11), 11)); EXPECT_CALL(checkpoint, Call(2)); EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeContinuation, MemEq("wxyzABCDEFGHIJKL", 16), 16)); EXPECT_CALL(checkpoint, Call(3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("MNOPQRSTUVWXYZ", 14), 14)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); channel()->send("0123456789abcdefg"); channel()->send("hijk"); channel()->send("lmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); checkpoint.Call(1); handleClient()->didReceiveFlowControl(handle(), 16); checkpoint.Call(2); handleClient()->didReceiveFlowControl(handle(), 16); checkpoint.Call(3); handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_EQ(62ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferWithNullBytes) { connect(); { InSequence s; EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0ar", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("b\0z", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("qu\0", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0\0\0", 3), 3)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); { RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\0ar", 3); channel()->send(*b, 0, 3); } { RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("b\0z", 3); channel()->send(*b, 0, 3); } { RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("qu\0", 3); channel()->send(*b, 0, 3); } { RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\0\0\0", 3); channel()->send(*b, 0, 3); } EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); }
TestFixture::~TestFixture() { TestDriver driver; clear_all_keys(); // Run for a while to make sure all keys are completely released EXPECT_CALL(driver, send_keyboard_mock(_)).Times(AnyNumber()); idle_for(TAPPING_TERM + 10); testing::Mock::VerifyAndClearExpectations(&driver); // Verify that the matrix really is cleared EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(Between(0, 1)); }
TEST_F(SimpleObjectTest, erase_opengl_buffers_before_buffer_generating) { EXPECT_CALL(gl, gl_GetError()).Times(AnyNumber()); { InSequence s; EXPECT_CALL(gl, gl_GetError()).Times(AtLeast(1)); EXPECT_CALL(gl, gl_GenBuffers(_,_)).Times(AtLeast(1)); } SimpleObject so(to); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonUTF8) { connect(); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\x80\xff\xe7", 3), 3)); handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\x80\xff\xe7", 3); channel()->send(*b, 0, 3); EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonUTF8) { connect(); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\x80\xff\xe7", 3), 3)); handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); Vector<char> v; v.append("\x80\xff\xe7", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInVector) { connect(); { InSequence s; EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("foo", 3), 3)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); Vector<char> fooVector; fooVector.append("foo", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(fooVector))); EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferNonLatin1UTF8Continuation) { connect(); Checkpoint checkpoint; { InSequence s; EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16)); EXPECT_CALL(checkpoint, Call(1)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("\x8b\x90", 2), 2)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); RefPtr<DOMArrayBuffer> b = DOMArrayBuffer::create("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); channel()->send(*b, 0, 18); checkpoint.Call(1); handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInArrayBufferPartial) { connect(); { InSequence s; EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("foo", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("bar", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("baz", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("a", 1), 1)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); RefPtr<DOMArrayBuffer> foobarBuffer = DOMArrayBuffer::create("foobar", 6); RefPtr<DOMArrayBuffer> qbazuxBuffer = DOMArrayBuffer::create("qbazux", 6); channel()->send(*foobarBuffer, 0, 3); channel()->send(*foobarBuffer, 3, 3); channel()->send(*qbazuxBuffer, 1, 3); channel()->send(*qbazuxBuffer, 2, 1); EXPECT_EQ(10ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorNonLatin1UTF8Continuation) { connect(); Checkpoint checkpoint; { InSequence s; EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16)); EXPECT_CALL(checkpoint, Call(1)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("\x8b\x90", 2), 2)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); Vector<char> v; v.append("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); checkpoint.Call(1); handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); }
TEST_F(DocumentWebSocketChannelTest, sendBinaryInVectorWithNullBytes) { connect(); { InSequence s; EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0ar", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("b\0z", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("qu\0", 3), 3)); EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0\0\0", 3), 3)); } handleClient()->didReceiveFlowControl(handle(), 16); EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); { Vector<char> v; v.append("\0ar", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); } { Vector<char> v; v.append("b\0z", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); } { Vector<char> v; v.append("qu\0", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); } { Vector<char> v; v.append("\0\0\0", 3); channel()->sendBinaryAsCharVector(adoptPtr(new Vector<char>(v))); } EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); }