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

Unified Diff: net/base/file_stream_unittest.cc

Issue 8843: Add write and read/write support to FileStream (renamed from FileInputStream)... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 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 | « net/base/file_stream_posix.cc ('k') | net/base/file_stream_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/file_stream_unittest.cc
===================================================================
--- net/base/file_stream_unittest.cc (revision 4000)
+++ net/base/file_stream_unittest.cc (working copy)
@@ -5,20 +5,21 @@
#include "base/file_util.h"
#include "base/path_service.h"
#include "base/platform_test.h"
-#include "net/base/file_input_stream.h"
+#include "net/base/file_stream.h"
#include "net/base/net_errors.h"
#include "net/base/test_completion_callback.h"
#include "testing/gtest/include/gtest/gtest.h"
static const char kTestData[] = "0123456789";
+static const int kTestDataSize = arraysize(kTestData) - 1;
-class FileInputStreamTest : public PlatformTest {
+class FileStreamTest : public PlatformTest {
public:
virtual void SetUp() {
PlatformTest::SetUp();
file_util::CreateTemporaryFileName(&temp_file_path_);
- file_util::WriteFile(temp_file_path_, kTestData, arraysize(kTestData)-1);
+ file_util::WriteFile(temp_file_path_, kTestData, kTestDataSize);
}
virtual void TearDown() {
file_util::Delete(temp_file_path_, false);
@@ -30,14 +31,15 @@
std::wstring temp_file_path_;
};
-TEST_F(FileInputStreamTest, BasicOpenClose) {
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), false);
+TEST_F(FileStreamTest, BasicOpenClose) {
+ net::FileStream stream;
+ int rv = stream.Open(temp_file_path(),
+ base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ);
EXPECT_EQ(net::OK, rv);
}
-TEST_F(FileInputStreamTest, UseClosedStream) {
- net::FileInputStream stream;
+TEST_F(FileStreamTest, UseClosedStream) {
+ net::FileStream stream;
EXPECT_FALSE(stream.IsOpen());
@@ -55,13 +57,15 @@
EXPECT_EQ(net::ERR_UNEXPECTED, rv);
}
-TEST_F(FileInputStreamTest, BasicRead) {
+TEST_F(FileStreamTest, BasicRead) {
int64 file_size;
bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
EXPECT_TRUE(ok);
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), false);
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ;
+ int rv = stream.Open(temp_file_path(), flags);
EXPECT_EQ(net::OK, rv);
int64 total_bytes_avail = stream.Available();
@@ -83,13 +87,16 @@
EXPECT_TRUE(data_read == kTestData);
}
-TEST_F(FileInputStreamTest, AsyncRead) {
+TEST_F(FileStreamTest, AsyncRead) {
int64 file_size;
bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
EXPECT_TRUE(ok);
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), true);
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ |
+ base::PLATFORM_FILE_ASYNC;
+ int rv = stream.Open(temp_file_path(), flags);
EXPECT_EQ(net::OK, rv);
int64 total_bytes_avail = stream.Available();
@@ -115,13 +122,15 @@
EXPECT_TRUE(data_read == kTestData);
}
-TEST_F(FileInputStreamTest, BasicRead_FromOffset) {
+TEST_F(FileStreamTest, BasicRead_FromOffset) {
int64 file_size;
bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
EXPECT_TRUE(ok);
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), false);
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ;
+ int rv = stream.Open(temp_file_path(), flags);
EXPECT_EQ(net::OK, rv);
const int64 kOffset = 3;
@@ -147,13 +156,16 @@
EXPECT_TRUE(data_read == kTestData + kOffset);
}
-TEST_F(FileInputStreamTest, AsyncRead_FromOffset) {
+TEST_F(FileStreamTest, AsyncRead_FromOffset) {
int64 file_size;
bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
EXPECT_TRUE(ok);
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), true);
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ |
+ base::PLATFORM_FILE_ASYNC;
+ int rv = stream.Open(temp_file_path(), flags);
EXPECT_EQ(net::OK, rv);
const int64 kOffset = 3;
@@ -183,9 +195,11 @@
EXPECT_TRUE(data_read == kTestData + kOffset);
}
-TEST_F(FileInputStreamTest, SeekAround) {
- net::FileInputStream stream;
- int rv = stream.Open(temp_file_path(), true);
+TEST_F(FileStreamTest, SeekAround) {
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ;
+ int rv = stream.Open(temp_file_path(), flags);
EXPECT_EQ(net::OK, rv);
const int64 kOffset = 3;
@@ -203,3 +217,153 @@
new_offset = stream.Seek(net::FROM_END, -kTestDataLen);
EXPECT_EQ(0, new_offset);
}
+
+TEST_F(FileStreamTest, BasicWrite) {
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
+ base::PLATFORM_FILE_WRITE;
+ int rv = stream.Open(temp_file_path(), flags);
+ EXPECT_EQ(net::OK, rv);
+
+ int64 file_size;
+ bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(0, file_size);
+
+ rv = stream.Write(kTestData, kTestDataSize, NULL);
+ EXPECT_EQ(kTestDataSize, rv);
+ stream.Close();
+
+ ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(kTestDataSize, file_size);
+}
+
+TEST_F(FileStreamTest, AsyncWrite) {
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
+ base::PLATFORM_FILE_WRITE |
+ base::PLATFORM_FILE_ASYNC;
+ int rv = stream.Open(temp_file_path(), flags);
+ EXPECT_EQ(net::OK, rv);
+
+ int64 file_size;
+ bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(0, file_size);
+
+ TestCompletionCallback callback;
+ int64 total_bytes_written = 0;
+
+ while (total_bytes_written != kTestDataSize) {
+ rv = stream.Write(kTestData, kTestDataSize, &callback);
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+ EXPECT_LT(0, rv);
+ if (rv <= 0)
+ break;
+ total_bytes_written += rv;
+ }
+ ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(file_size, total_bytes_written);
+}
+
+TEST_F(FileStreamTest, BasicWrite_FromOffset) {
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_WRITE;
+ int rv = stream.Open(temp_file_path(), flags);
+ EXPECT_EQ(net::OK, rv);
+
+ int64 file_size;
+ bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(kTestDataSize, file_size);
+
+ const int64 kOffset = 0;
+ int64 new_offset = stream.Seek(net::FROM_END, kOffset);
+ EXPECT_EQ(kTestDataSize, new_offset);
+
+ rv = stream.Write(kTestData, kTestDataSize, NULL);
+ EXPECT_EQ(kTestDataSize, rv);
+ stream.Close();
+
+ ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(kTestDataSize * 2, file_size);
+}
+
+TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
+ int64 file_size;
+ bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_WRITE |
+ base::PLATFORM_FILE_ASYNC;
+ int rv = stream.Open(temp_file_path(), flags);
+ EXPECT_EQ(net::OK, rv);
+
+ const int64 kOffset = 0;
+ int64 new_offset = stream.Seek(net::FROM_END, kOffset);
+ EXPECT_EQ(kTestDataSize, new_offset);
+
+ TestCompletionCallback callback;
+ int64 total_bytes_written = 0;
+
+ while (total_bytes_written != kTestDataSize) {
+ rv = stream.Write(kTestData, kTestDataSize, &callback);
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+ EXPECT_LT(0, rv);
+ if (rv <= 0)
+ break;
+ total_bytes_written += rv;
+ }
+ ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(file_size, kTestDataSize * 2);
+}
+
+TEST_F(FileStreamTest, BasicReadWrite) {
+ int64 file_size;
+ bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+
+ net::FileStream stream;
+ int flags = base::PLATFORM_FILE_OPEN |
+ base::PLATFORM_FILE_READ |
+ base::PLATFORM_FILE_WRITE;
+ int rv = stream.Open(temp_file_path(), flags);
+ EXPECT_EQ(net::OK, rv);
+
+ int64 total_bytes_avail = stream.Available();
+ EXPECT_EQ(file_size, total_bytes_avail);
+
+ int64 total_bytes_read = 0;
+
+ std::string data_read;
+ for (;;) {
+ char buf[4];
+ rv = stream.Read(buf, sizeof(buf), NULL);
+ EXPECT_LE(0, rv);
+ if (rv <= 0)
+ break;
+ total_bytes_read += rv;
+ data_read.append(buf, rv);
+ }
+ EXPECT_EQ(file_size, total_bytes_read);
+ EXPECT_TRUE(data_read == kTestData);
+
+ rv = stream.Write(kTestData, kTestDataSize, NULL);
+ EXPECT_EQ(kTestDataSize, rv);
+ stream.Close();
+
+ ok = file_util::GetFileSize(temp_file_path(), &file_size);
+ EXPECT_TRUE(ok);
+ EXPECT_EQ(kTestDataSize * 2, file_size);
+}
+
+// TODO(erikkay): more READ_WRITE tests?
Property changes on: net\base\file_stream_unittest.cc
___________________________________________________________________
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/net/base/file_input_stream_unittest.cc:r69-2775
« no previous file with comments | « net/base/file_stream_posix.cc ('k') | net/base/file_stream_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698