1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/file_util.h" 6 #include "base/files/scoped_temp_dir.h" 7 #include "net/disk_cache/cache_util.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/platform_test.h" 10 11 namespace disk_cache { 12 13 class CacheUtilTest : public PlatformTest { 14 public: 15 virtual void SetUp() { 16 PlatformTest::SetUp(); 17 ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir()); 18 cache_dir_ = tmp_dir_.path().Append(FILE_PATH_LITERAL("Cache")); 19 file1_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL("file01"))); 20 file2_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL(".file02"))); 21 dir1_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL("dir01"))); 22 file3_ = base::FilePath(dir1_.Append(FILE_PATH_LITERAL("file03"))); 23 ASSERT_TRUE(file_util::CreateDirectory(cache_dir_)); 24 FILE *fp = file_util::OpenFile(file1_, "w"); 25 ASSERT_TRUE(fp != NULL); 26 file_util::CloseFile(fp); 27 fp = file_util::OpenFile(file2_, "w"); 28 ASSERT_TRUE(fp != NULL); 29 file_util::CloseFile(fp); 30 ASSERT_TRUE(file_util::CreateDirectory(dir1_)); 31 fp = file_util::OpenFile(file3_, "w"); 32 ASSERT_TRUE(fp != NULL); 33 file_util::CloseFile(fp); 34 dest_dir_ = tmp_dir_.path().Append(FILE_PATH_LITERAL("old_Cache_001")); 35 dest_file1_ = base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL("file01"))); 36 dest_file2_ = 37 base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL(".file02"))); 38 dest_dir1_ = base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL("dir01"))); 39 } 40 41 protected: 42 base::ScopedTempDir tmp_dir_; 43 base::FilePath cache_dir_; 44 base::FilePath file1_; 45 base::FilePath file2_; 46 base::FilePath dir1_; 47 base::FilePath file3_; 48 base::FilePath dest_dir_; 49 base::FilePath dest_file1_; 50 base::FilePath dest_file2_; 51 base::FilePath dest_dir1_; 52 }; 53 54 TEST_F(CacheUtilTest, MoveCache) { 55 EXPECT_TRUE(disk_cache::MoveCache(cache_dir_, dest_dir_)); 56 EXPECT_TRUE(base::PathExists(dest_dir_)); 57 EXPECT_TRUE(base::PathExists(dest_file1_)); 58 EXPECT_TRUE(base::PathExists(dest_file2_)); 59 EXPECT_TRUE(base::PathExists(dest_dir1_)); 60 #if defined(OS_CHROMEOS) 61 EXPECT_TRUE(base::PathExists(cache_dir_)); // old cache dir stays 62 #else 63 EXPECT_FALSE(base::PathExists(cache_dir_)); // old cache is gone 64 #endif 65 EXPECT_FALSE(base::PathExists(file1_)); 66 EXPECT_FALSE(base::PathExists(file2_)); 67 EXPECT_FALSE(base::PathExists(dir1_)); 68 } 69 70 TEST_F(CacheUtilTest, DeleteCache) { 71 disk_cache::DeleteCache(cache_dir_, false); 72 EXPECT_TRUE(base::PathExists(cache_dir_)); // cache dir stays 73 EXPECT_FALSE(base::PathExists(dir1_)); 74 EXPECT_FALSE(base::PathExists(file1_)); 75 EXPECT_FALSE(base::PathExists(file2_)); 76 EXPECT_FALSE(base::PathExists(file3_)); 77 } 78 79 TEST_F(CacheUtilTest, DeleteCacheAndDir) { 80 disk_cache::DeleteCache(cache_dir_, true); 81 EXPECT_FALSE(base::PathExists(cache_dir_)); // cache dir is gone 82 EXPECT_FALSE(base::PathExists(dir1_)); 83 EXPECT_FALSE(base::PathExists(file1_)); 84 EXPECT_FALSE(base::PathExists(file2_)); 85 EXPECT_FALSE(base::PathExists(file3_)); 86 } 87 88 TEST_F(CacheUtilTest, DeleteCacheFile) { 89 EXPECT_TRUE(disk_cache::DeleteCacheFile(file1_)); 90 EXPECT_FALSE(base::PathExists(file1_)); 91 EXPECT_TRUE(base::PathExists(cache_dir_)); // cache dir stays 92 EXPECT_TRUE(base::PathExists(dir1_)); 93 EXPECT_TRUE(base::PathExists(file3_)); 94 } 95 96 } // namespace disk_cache 97