| // Copyright (c) 2006-2008 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. |
| |
| #ifndef NET_DISK_CACHE_DISK_CACHE_TEST_BASE_H_ |
| #define NET_DISK_CACHE_DISK_CACHE_TEST_BASE_H_ |
| |
| #include "base/basictypes.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "testing/platform_test.h" |
| |
| class FilePath; |
| |
| namespace disk_cache { |
| |
| class Backend; |
| class BackendImpl; |
| class MemBackendImpl; |
| |
| } // namespace disk_cache |
| |
| // These tests can use the path service, which uses autoreleased objects on the |
| // Mac, so this needs to be a PlatformTest. Even tests that do not require a |
| // cache (and that do not need to be a DiskCacheTestWithCache) are susceptible |
| // to this problem; all such tests should use TEST_F(DiskCacheTest, ...). |
| class DiskCacheTest : public PlatformTest { |
| virtual void TearDown(); |
| }; |
| |
| // Provides basic support for cache related tests. |
| class DiskCacheTestWithCache : public DiskCacheTest { |
| protected: |
| DiskCacheTestWithCache() |
| : cache_(NULL), cache_impl_(NULL), mem_cache_(NULL), mask_(0), size_(0), |
| memory_only_(false), implementation_(false), force_creation_(false), |
| new_eviction_(false), first_cleanup_(true), integrity_(true) {} |
| |
| void InitCache(); |
| virtual void TearDown(); |
| void SimulateCrash(); |
| void SetTestMode(); |
| |
| void SetMemoryOnlyMode() { |
| memory_only_ = true; |
| } |
| |
| // Use the implementation directly instead of the factory provided object. |
| void SetDirectMode() { |
| implementation_ = true; |
| } |
| |
| void SetMask(uint32 mask) { |
| mask_ = mask; |
| } |
| |
| void SetMaxSize(int size); |
| |
| // Deletes and re-creates the files on initialization errors. |
| void SetForceCreation() { |
| force_creation_ = true; |
| } |
| |
| void SetNewEviction() { |
| new_eviction_ = true; |
| } |
| |
| void DisableFirstCleanup() { |
| first_cleanup_ = false; |
| } |
| |
| void DisableIntegrityCheck() { |
| integrity_ = false; |
| } |
| |
| // cache_ will always have a valid object, regardless of how the cache was |
| // initialized. The implementation pointers can be NULL. |
| disk_cache::Backend* cache_; |
| disk_cache::BackendImpl* cache_impl_; |
| disk_cache::MemBackendImpl* mem_cache_; |
| |
| uint32 mask_; |
| int size_; |
| bool memory_only_; |
| bool implementation_; |
| bool force_creation_; |
| bool new_eviction_; |
| bool first_cleanup_; |
| bool integrity_; |
| // This is intentionally left uninitialized, to be used by any test. |
| bool success_; |
| |
| private: |
| void InitMemoryCache(); |
| void InitDiskCache(); |
| void InitDiskCacheImpl(const FilePath& path); |
| }; |
| |
| #endif // NET_DISK_CACHE_DISK_CACHE_TEST_BASE_H_ |