Index: third_party/leveldatabase/env_chromium_unittest.cc |
diff --git a/third_party/leveldatabase/env_chromium_unittest.cc b/third_party/leveldatabase/env_chromium_unittest.cc |
index 05669f1be011906d23017f8fd4f204d91e2fce1b..85767e646397c2936616ca734436d712c42552ef 100644 |
--- a/third_party/leveldatabase/env_chromium_unittest.cc |
+++ b/third_party/leveldatabase/env_chromium_unittest.cc |
@@ -7,7 +7,10 @@ |
#include "base/files/file_path.h" |
#include "base/files/scoped_temp_dir.h" |
#include "base/test/test_suite.h" |
-#include "env_chromium.h" |
+#if defined(OS_WIN) |
+#include "env_chromium_win32.h" |
+#endif |
+#include "env_chromium_posix.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/leveldatabase/env_idb.h" |
#include "third_party/leveldatabase/src/include/leveldb/db.h" |
@@ -54,6 +57,21 @@ TEST(ErrorEncoding, Errno) { |
EXPECT_EQ(some_errno, error); |
} |
+#if defined(OS_WIN) |
+TEST(ErrorEncoding, ErrnoWin32) { |
+ const MethodID in_method = kWritableFileFlush; |
+ const DWORD some_errno = ERROR_FILE_NOT_FOUND; |
+ const Status s = |
+ MakeIOErrorWin32("Somefile.txt", "message", in_method, some_errno); |
+ MethodID method; |
+ int error; |
+ EXPECT_EQ(METHOD_AND_ERRNO, |
+ ParseMethodAndError(s.ToString().c_str(), &method, &error)); |
+ EXPECT_EQ(in_method, method); |
+ EXPECT_EQ(some_errno, error); |
+} |
+#endif |
+ |
TEST(ErrorEncoding, NoEncodedMessage) { |
Status s = Status::IOError("Some message", "from leveldb itself"); |
MethodID method = kRandomAccessFileRead; |
@@ -63,23 +81,36 @@ TEST(ErrorEncoding, NoEncodedMessage) { |
EXPECT_EQ(4, error); |
} |
-class MyEnv : public ChromiumEnv { |
+class MyEnvDelegate : public ChromiumEnvDelegate { |
public: |
- MyEnv() : directory_syncs_(0) {} |
- int directory_syncs() { return directory_syncs_; } |
+ MyEnvDelegate() : directory_syncs_(0) {} |
+ int directory_syncs() const { return directory_syncs_; } |
- protected: |
virtual void DidSyncDir(const std::string& fname) { |
++directory_syncs_; |
- ChromiumEnv::DidSyncDir(fname); |
} |
private: |
int directory_syncs_; |
}; |
-TEST(ChromiumEnv, DirectorySyncing) { |
- MyEnv env; |
+template <typename T> |
+class ChromiumEnvMultiPlatformTests : public ::testing::Test { |
+ public: |
+}; |
+ |
+#if defined(OS_WIN) |
+typedef ::testing::Types<ChromiumEnvPosix, ChromiumEnvWin32> ChromiumEnvMultiPlatformTestsTypes; |
+#else |
+typedef ::testing::Types<ChromiumEnvPosix> ChromiumEnvMultiPlatformTestsTypes; |
+#endif |
+TYPED_TEST_CASE(ChromiumEnvMultiPlatformTests, ChromiumEnvMultiPlatformTestsTypes); |
+ |
+TYPED_TEST(ChromiumEnvMultiPlatformTests, DirectorySyncing) { |
+ TypeParam env; |
+ MyEnvDelegate* delegate(new MyEnvDelegate()); |
+ env.SetDelegate(delegate); |
+ |
base::ScopedTempDir dir; |
dir.CreateUniqueTempDir(); |
base::FilePath dir_path = dir.path(); |
@@ -93,9 +124,9 @@ TEST(ChromiumEnv, DirectorySyncing) { |
EXPECT_TRUE(s.ok()); |
scoped_ptr<WritableFile> manifest_file(manifest_file_ptr); |
manifest_file->Append(data); |
- EXPECT_EQ(0, env.directory_syncs()); |
+ EXPECT_EQ(0, delegate->directory_syncs()); |
manifest_file->Append(data); |
- EXPECT_EQ(0, env.directory_syncs()); |
+ EXPECT_EQ(0, delegate->directory_syncs()); |
std::string sst_file_name = |
FilePathToString(dir_path.Append(FILE_PATH_LITERAL("000003.sst"))); |
@@ -104,12 +135,12 @@ TEST(ChromiumEnv, DirectorySyncing) { |
EXPECT_TRUE(s.ok()); |
scoped_ptr<WritableFile> sst_file(sst_file_ptr); |
sst_file->Append(data); |
- EXPECT_EQ(0, env.directory_syncs()); |
+ EXPECT_EQ(0, delegate->directory_syncs()); |
manifest_file->Append(data); |
- EXPECT_EQ(1, env.directory_syncs()); |
+ EXPECT_EQ(1, delegate->directory_syncs()); |
manifest_file->Append(data); |
- EXPECT_EQ(1, env.directory_syncs()); |
+ EXPECT_EQ(1, delegate->directory_syncs()); |
} |
int CountFilesWithExtension(const base::FilePath& dir, |
@@ -223,4 +254,6 @@ TEST(ChromiumEnv, GetChildrenPriorResults) { |
EXPECT_EQ(1, result.size()); |
} |
-int main(int argc, char** argv) { return base::TestSuite(argc, argv).Run(); } |
+int main(int argc, char** argv) { |
+ return base::TestSuite(argc, argv).Run(); |
+} |