Chromium Code Reviews| Index: Source/core/streams/ReadableStreamTest.cpp |
| diff --git a/Source/core/streams/ReadableStreamTest.cpp b/Source/core/streams/ReadableStreamTest.cpp |
| index 6986a8669058c802344c0c700a33cde05b1eb107..89596efa81f3ba2bfc3516412af6a82a7f894666 100644 |
| --- a/Source/core/streams/ReadableStreamTest.cpp |
| +++ b/Source/core/streams/ReadableStreamTest.cpp |
| @@ -105,8 +105,17 @@ public: |
| StringStream* construct() |
| { |
| + Checkpoint checkpoint; |
| + { |
| + InSequence s; |
| + EXPECT_CALL(checkpoint, Call(0)); |
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| + EXPECT_CALL(checkpoint, Call(1)); |
| + } |
| StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource); |
| + checkpoint.Call(0); |
| stream->didSourceStart(); |
| + checkpoint.Call(1); |
| return stream; |
| } |
| @@ -118,6 +127,14 @@ public: |
| TEST_F(ReadableStreamTest, Start) |
| { |
| + Checkpoint checkpoint; |
| + { |
| + InSequence s; |
| + EXPECT_CALL(checkpoint, Call(0)); |
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| + EXPECT_CALL(checkpoint, Call(1)); |
| + } |
| + |
| StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource); |
| EXPECT_FALSE(m_exceptionState.hadException()); |
| EXPECT_FALSE(stream->isStarted()); |
| @@ -125,11 +142,13 @@ TEST_F(ReadableStreamTest, Start) |
| EXPECT_FALSE(stream->isPulling()); |
| EXPECT_EQ(stream->state(), ReadableStream::Waiting); |
| + checkpoint.Call(0); |
| stream->didSourceStart(); |
| + checkpoint.Call(1); |
| EXPECT_TRUE(stream->isStarted()); |
| EXPECT_FALSE(stream->isDraining()); |
| - EXPECT_FALSE(stream->isPulling()); |
| + EXPECT_TRUE(stream->isPulling()); |
| EXPECT_EQ(stream->state(), ReadableStream::Waiting); |
| } |
| @@ -157,22 +176,12 @@ TEST_F(ReadableStreamTest, WaitOnWaiting) |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| EXPECT_TRUE(stream->isStarted()); |
| - EXPECT_FALSE(stream->isPulling()); |
| - |
| - { |
| - InSequence s; |
| - EXPECT_CALL(checkpoint, Call(0)); |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| - EXPECT_CALL(checkpoint, Call(1)); |
| - } |
| + EXPECT_TRUE(stream->isPulling()); |
| - checkpoint.Call(0); |
| ScriptPromise p = stream->wait(scriptState()); |
| ScriptPromise q = stream->wait(scriptState()); |
| - checkpoint.Call(1); |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| - EXPECT_TRUE(stream->isPulling()); |
| EXPECT_EQ(q, p); |
| } |
| @@ -188,19 +197,17 @@ TEST_F(ReadableStreamTest, WaitDuringStarting) |
| { |
| InSequence s; |
| EXPECT_CALL(checkpoint, Call(0)); |
| - EXPECT_CALL(checkpoint, Call(1)); |
| EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| + EXPECT_CALL(checkpoint, Call(1)); |
| } |
| - checkpoint.Call(0); |
| stream->wait(scriptState()); |
| - checkpoint.Call(1); |
| - |
| - EXPECT_TRUE(stream->isPulling()); |
| - |
| + checkpoint.Call(0); |
| stream->didSourceStart(); |
| + checkpoint.Call(1); |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| + EXPECT_TRUE(stream->isStarted()); |
| EXPECT_TRUE(stream->isPulling()); |
| } |
| @@ -209,11 +216,6 @@ TEST_F(ReadableStreamTest, WaitAndError) |
| StringStream* stream = construct(); |
| String onFulfilled, onRejected; |
| - { |
| - InSequence s; |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| - } |
| - |
| ScriptPromise promise = stream->wait(scriptState()); |
| promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| @@ -283,11 +285,6 @@ TEST_F(ReadableStreamTest, WaitAndEnqueue) |
| String onFulfilled, onRejected; |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| - { |
| - InSequence s; |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| - } |
| - |
| stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
| isolate()->RunMicrotasks(); |
| @@ -314,11 +311,6 @@ TEST_F(ReadableStreamTest, WaitAndEnqueueAndError) |
| String onFulfilled, onRejected; |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| - { |
| - InSequence s; |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| - } |
| - |
| ScriptPromise promise = stream->wait(scriptState()); |
| promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
| isolate()->RunMicrotasks(); |
| @@ -352,11 +344,6 @@ TEST_F(ReadableStreamTest, CloseWhenWaiting) |
| StringStream* stream = construct(); |
| - { |
| - InSequence s; |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| - } |
| - |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCaptor(&onWaitRejected)); |
| stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createCaptor(&onClosedRejected)); |
| @@ -475,7 +462,7 @@ TEST_F(ReadableStreamTest, EnqueuedAndRead) |
| EXPECT_TRUE(onRejected.isNull()); |
| } |
| -TEST_F(ReadableStreamTest, EnqueTwiceAndRead) |
| +TEST_F(ReadableStreamTest, EnqueueTwiceAndRead) |
| { |
| StringStream* stream = construct(); |
| Checkpoint checkpoint; |
| @@ -483,6 +470,7 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead) |
| { |
| InSequence s; |
| EXPECT_CALL(checkpoint, Call(0)); |
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| EXPECT_CALL(checkpoint, Call(1)); |
| } |
| @@ -492,14 +480,14 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead) |
| EXPECT_EQ(ReadableStream::Readable, stream->state()); |
| EXPECT_FALSE(stream->isPulling()); |
| - checkpoint.Call(0); |
| String chunk; |
| + checkpoint.Call(0); |
| EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); |
| checkpoint.Call(1); |
| EXPECT_FALSE(m_exceptionState.hadException()); |
| EXPECT_EQ("hello", chunk); |
| EXPECT_EQ(ReadableStream::Readable, stream->state()); |
| - EXPECT_FALSE(stream->isPulling()); |
| + EXPECT_TRUE(stream->isPulling()); |
| EXPECT_FALSE(stream->isDraining()); |
| ScriptPromise newPromise = stream->wait(scriptState()); |
| @@ -509,7 +497,6 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead) |
| TEST_F(ReadableStreamTest, CloseWhenReadable) |
| { |
| StringStream* stream = construct(); |
| - String onWaitFulfilled, onWaitRejected; |
| String onClosedFulfilled, onClosedRejected; |
| stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createCaptor(&onClosedRejected)); |
| @@ -538,21 +525,16 @@ TEST_F(ReadableStreamTest, CloseWhenReadable) |
| EXPECT_EQ("bye", chunk); |
| EXPECT_FALSE(m_exceptionState.hadException()); |
| - EXPECT_NE(promise, stream->wait(scriptState())); |
| - stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCaptor(&onWaitRejected)); |
|
tyoshino (SeeGerritForStatus)
2014/11/11 12:43:33
can't we keep this line?
yhirano
2014/11/12 04:20:29
This is a test for "close when readable" case, and
tyoshino (SeeGerritForStatus)
2014/11/12 04:27:16
OK
|
| + EXPECT_EQ(promise, stream->wait(scriptState())); |
| EXPECT_EQ(ReadableStream::Closed, stream->state()); |
| EXPECT_FALSE(stream->isPulling()); |
| EXPECT_TRUE(stream->isDraining()); |
| - EXPECT_TRUE(onWaitFulfilled.isNull()); |
| - EXPECT_TRUE(onWaitRejected.isNull()); |
|
tyoshino (SeeGerritForStatus)
2014/11/11 12:43:33
and these
|
| EXPECT_TRUE(onClosedFulfilled.isNull()); |
| EXPECT_TRUE(onClosedRejected.isNull()); |
| isolate()->RunMicrotasks(); |
| - EXPECT_EQ("undefined", onWaitFulfilled); |
| - EXPECT_TRUE(onWaitRejected.isNull()); |
|
tyoshino (SeeGerritForStatus)
2014/11/11 12:43:33
and these
|
| EXPECT_EQ("undefined", onClosedFulfilled); |
| EXPECT_TRUE(onClosedRejected.isNull()); |
| } |
| @@ -604,13 +586,12 @@ TEST_F(ReadableStreamTest, CancelWhenWaiting) |
| { |
| InSequence s; |
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); |
| EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).WillOnce(Return(promise)); |
| } |
| EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
| ScriptPromise wait = stream->wait(scriptState()); |
| - EXPECT_EQ(promise, stream->cancel(scriptState(), reason)); |
| + EXPECT_NE(promise, stream->cancel(scriptState(), reason)); |
| EXPECT_EQ(ReadableStream::Closed, stream->state()); |
| EXPECT_EQ(stream->wait(scriptState()), wait); |
| @@ -627,6 +608,7 @@ TEST_F(ReadableStreamTest, CancelWhenReadable) |
| { |
| StringStream* stream = construct(); |
| String onFulfilled, onRejected; |
| + String onCancelFulfilled, onCancelRejected; |
| ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason")); |
| ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptState()->isolate(), "hello")); |
| @@ -638,18 +620,21 @@ TEST_F(ReadableStreamTest, CancelWhenReadable) |
| stream->enqueue("hello"); |
| ScriptPromise wait = stream->wait(scriptState()); |
| EXPECT_EQ(ReadableStream::Readable, stream->state()); |
| - EXPECT_EQ(promise, stream->cancel(scriptState(), reason)); |
| + |
| + ScriptPromise cancelResult = stream->cancel(scriptState(), reason); |
| + cancelResult.then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRejected)); |
| + |
| + EXPECT_NE(promise, cancelResult); |
| EXPECT_EQ(ReadableStream::Closed, stream->state()); |
| - EXPECT_NE(stream->wait(scriptState()), wait); |
| + EXPECT_EQ(stream->wait(scriptState()), wait); |
| - stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
| - EXPECT_TRUE(onFulfilled.isNull()); |
| - EXPECT_TRUE(onRejected.isNull()); |
| + EXPECT_TRUE(onCancelFulfilled.isNull()); |
| + EXPECT_TRUE(onCancelRejected.isNull()); |
| isolate()->RunMicrotasks(); |
| - EXPECT_EQ("undefined", onFulfilled); |
| - EXPECT_TRUE(onRejected.isNull()); |
| + EXPECT_EQ("undefined", onCancelFulfilled); |
| + EXPECT_TRUE(onCancelRejected.isNull()); |
| } |
| TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest) |