Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1951)

Unified Diff: Source/core/streams/ReadableStreamTest.cpp

Issue 712043002: Make ReadableStream implementation up to date. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/streams/ReadableStream.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
+ 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());
EXPECT_TRUE(onClosedFulfilled.isNull());
EXPECT_TRUE(onClosedRejected.isNull());
isolate()->RunMicrotasks();
- EXPECT_EQ("undefined", onWaitFulfilled);
- EXPECT_TRUE(onWaitRejected.isNull());
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)
« no previous file with comments | « Source/core/streams/ReadableStream.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698