зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1415081 - part 1 - gTest for NS_ReadInputStreamToString, r=smaug
This commit is contained in:
Родитель
b71cdc9eb5
Коммит
dccb5f371a
|
@ -0,0 +1,156 @@
|
|||
#include "gtest/gtest.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
// Here we test the reading the full size of a sync stream
|
||||
TEST(TestReadStreamToString, SyncStreamFullSize) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
ASSERT_EQ(NS_OK, NS_NewCStringInputStream(getter_AddRefs(stream), buffer));
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, buffer.Length(),
|
||||
&written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading less than the full size of a sync stream
|
||||
TEST(TestReadStreamToString, SyncStreamLessThan) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
ASSERT_EQ(NS_OK, NS_NewCStringInputStream(getter_AddRefs(stream), buffer));
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, 5, &written));
|
||||
ASSERT_EQ((uint64_t)5, written);
|
||||
ASSERT_TRUE(nsCString(buffer.get(), 5).Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading more than the full size of a sync stream
|
||||
TEST(TestReadStreamToString, SyncStreamMoreThan) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
ASSERT_EQ(NS_OK, NS_NewCStringInputStream(getter_AddRefs(stream), buffer));
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
// Reading more than the buffer size.
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result,
|
||||
buffer.Length() + 5, &written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading a sync stream without passing the size
|
||||
TEST(TestReadStreamToString, SyncStreamUnknownSize) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
ASSERT_EQ(NS_OK, NS_NewCStringInputStream(getter_AddRefs(stream), buffer));
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
// Reading all without passing the size
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, -1, &written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading the full size of an async stream
|
||||
TEST(TestReadStreamToString, AsyncStreamFullSize) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream = new testing::AsyncStringStream(buffer);
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, buffer.Length(),
|
||||
&written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading less than the full size of an async stream
|
||||
TEST(TestReadStreamToString, AsyncStreamLessThan) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream = new testing::AsyncStringStream(buffer);
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, 5, &written));
|
||||
ASSERT_EQ((uint64_t)5, written);
|
||||
ASSERT_TRUE(nsCString(buffer.get(), 5).Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading more than the full size of an async stream
|
||||
TEST(TestReadStreamToString, AsyncStreamMoreThan) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream = new testing::AsyncStringStream(buffer);
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
// Reading more than the buffer size.
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result,
|
||||
buffer.Length() + 5, &written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading an async stream without passing the size
|
||||
TEST(TestReadStreamToString, AsyncStreamUnknownSize) {
|
||||
nsCString buffer;
|
||||
buffer.AssignLiteral("Hello world!");
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream = new testing::AsyncStringStream(buffer);
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
// Reading all without passing the size
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, -1, &written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
||||
|
||||
// Here we test the reading an async big stream without passing the size
|
||||
TEST(TestReadStreamToString, AsyncStreamUnknownBigSize) {
|
||||
nsCString buffer;
|
||||
|
||||
buffer.SetLength(4096 * 2);
|
||||
for (uint32_t i = 0; i < 4096 * 2; ++i) {
|
||||
buffer.BeginWriting()[i] = i % 10;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream = new testing::AsyncStringStream(buffer);
|
||||
|
||||
uint64_t written;
|
||||
nsAutoCString result;
|
||||
|
||||
// Reading all without passing the size
|
||||
ASSERT_EQ(NS_OK, NS_ReadInputStreamToString(stream, result, -1, &written));
|
||||
ASSERT_EQ(buffer.Length(), written);
|
||||
ASSERT_TRUE(buffer.Equals(result));
|
||||
}
|
|
@ -11,6 +11,7 @@ UNIFIED_SOURCES += [
|
|||
'TestMozURL.cpp',
|
||||
'TestPartiallySeekableInputStream.cpp',
|
||||
'TestProtocolProxyService.cpp',
|
||||
'TestReadStreamToString.cpp',
|
||||
'TestStandardURL.cpp',
|
||||
]
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче