Index: chrome/browser/renderer_host/file_system_accessor_unittest.cc |
=================================================================== |
--- chrome/browser/renderer_host/file_system_accessor_unittest.cc (revision 0) |
+++ chrome/browser/renderer_host/file_system_accessor_unittest.cc (revision 0) |
@@ -0,0 +1,117 @@ |
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/file_util.h" |
+#include "base/message_loop.h" |
+#include "base/timer.h" |
+#include "chrome/browser/chrome_thread.h" |
+#include "chrome/browser/renderer_host/file_system_accessor.h" |
+#include "chrome/test/file_test_utils.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+class FileSystemAccessorTest : public testing::Test { |
+ protected: |
+ virtual void SetUp() { |
+ // Make sure the current thread has a message loop. |
+ EXPECT_TRUE(MessageLoop::current() != NULL); |
+ |
+ // Create FILE thread which is used to do file access. |
+ file_thread_.reset(new ChromeThread(ChromeThread::FILE)); |
+ EXPECT_TRUE(ChromeThread::GetMessageLoop(ChromeThread::FILE) == NULL); |
+ |
+ // Start FILE thread and verify FILE message loop exists. |
+ file_thread_->Start(); |
+ EXPECT_TRUE(file_thread_->message_loop() != NULL); |
+ } |
+ |
+ virtual void TearDown() { |
+ file_thread_->Stop(); |
+ EXPECT_TRUE(ChromeThread::GetMessageLoop(ChromeThread::FILE) == NULL); |
+ } |
+ |
+ void TestGetFileSize(const FilePath& path, |
+ void* param, |
+ int64 expected_result, |
+ void* expected_param) { |
+ // Initialize the actual result not equal to the expected result. |
+ result_ = expected_result + 1; |
+ param_ = NULL; |
+ |
+ FileSystemAccessor::RequestFileSize( |
+ path, |
+ param, |
+ NewCallback(this, &FileSystemAccessorTest::GetFileSizeCallback)); |
+ |
+ // Time out if getting file size takes more than 10 seconds. |
+ const int kGetFileSizeTimeoutSeconds = 10; |
+ base::OneShotTimer<MessageLoop> timer; |
+ timer.Start(base::TimeDelta::FromSeconds(kGetFileSizeTimeoutSeconds), |
+ MessageLoop::current(), &MessageLoop::Quit); |
+ |
+ MessageLoop::current()->Run(); |
+ |
+ EXPECT_EQ(expected_result, result_); |
+ EXPECT_EQ(expected_param, param_); |
+ } |
+ |
+ private: |
+ void GetFileSizeCallback(int64 result, void* param) { |
+ result_ = result; |
+ param_ = param; |
+ MessageLoop::current()->Quit(); |
+ } |
+ |
+ scoped_ptr<ChromeThread> file_thread_; |
+ FilePath temp_file_; |
+ int64 result_; |
+ void* param_; |
+ MessageLoop loop_; |
+}; |
+ |
+TEST_F(FileSystemAccessorTest, GetFileSize) { |
+ const std::string data("This is test data."); |
+ |
+ FilePath path; |
+ FILE* file = file_util::CreateAndOpenTemporaryFile(&path); |
+ EXPECT_TRUE(file != NULL); |
+ size_t bytes_written = fwrite(data.data(), 1, data.length(), file); |
+ EXPECT_TRUE(file_util::CloseFile(file)); |
+ |
+ FileAutoDeleter deleter(path); |
+ |
+ TestGetFileSize(path, NULL, bytes_written, NULL); |
+} |
+ |
+TEST_F(FileSystemAccessorTest, GetFileSizeWithParam) { |
+ const std::string data("This is test data."); |
+ |
+ FilePath path; |
+ FILE* file = file_util::CreateAndOpenTemporaryFile(&path); |
+ EXPECT_TRUE(file != NULL); |
+ size_t bytes_written = fwrite(data.data(), 1, data.length(), file); |
+ EXPECT_TRUE(file_util::CloseFile(file)); |
+ |
+ FileAutoDeleter deleter(path); |
+ |
+ int param = 100; |
+ TestGetFileSize(path, static_cast<void*>(¶m), |
+ bytes_written, static_cast<void*>(¶m)); |
+} |
+ |
+TEST_F(FileSystemAccessorTest, GetFileSizeEmptyFile) { |
+ FilePath path; |
+ EXPECT_TRUE(file_util::CreateTemporaryFileName(&path)); |
+ FileAutoDeleter deleter(path); |
+ |
+ TestGetFileSize(path, NULL, 0, NULL); |
+} |
+ |
+TEST_F(FileSystemAccessorTest, GetFileSizeNotFound) { |
+ FilePath path; |
+ EXPECT_TRUE(file_util::CreateNewTempDirectory( |
+ FILE_PATH_LITERAL("chrome_test_"), &path)); |
+ FileAutoDeleter deleter(path); |
+ |
+ TestGetFileSize(path.Append(FILE_PATH_LITERAL("foo.txt")), NULL, -1, NULL); |
+} |
Property changes on: chrome\browser\renderer_host\file_system_accessor_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |