Index: chrome/test/sync/engine/test_directory_setter_upper.h |
=================================================================== |
--- chrome/test/sync/engine/test_directory_setter_upper.h (revision 99413) |
+++ chrome/test/sync/engine/test_directory_setter_upper.h (working copy) |
@@ -1,144 +0,0 @@ |
-// Copyright (c) 2011 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. |
-// |
-// A handy class that takes care of setting up and destroying a |
-// syncable::Directory instance for unit tests that require one. |
-// |
-// The expected usage is to make this a component of your test fixture: |
-// |
-// class AwesomenessTest : public testing::Test { |
-// public: |
-// virtual void SetUp() { |
-// metadb_.SetUp(); |
-// } |
-// virtual void TearDown() { |
-// metadb_.TearDown(); |
-// } |
-// protected: |
-// TestDirectorySetterUpper metadb_; |
-// }; |
-// |
-// Then, in your tests, get at the directory like so: |
-// |
-// TEST_F(AwesomenessTest, IsMaximal) { |
-// ScopedDirLookup dir(metadb_.manager(), metadb_.name()); |
-// ... now use |dir| to get at syncable::Entry objects ... |
-// } |
-// |
- |
-#ifndef CHROME_TEST_SYNC_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |
-#define CHROME_TEST_SYNC_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |
-#pragma once |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/scoped_temp_dir.h" |
-#include "chrome/browser/sync/syncable/directory_manager.h" |
-#include "chrome/browser/sync/syncable/syncable.h" |
-#include "chrome/test/sync/null_directory_change_delegate.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
- |
-namespace syncable { |
-class DirectoryManager; |
-class ScopedDirLookup; |
-} // namespace syncable |
- |
-namespace browser_sync { |
- |
-class TestDirectorySetterUpper { |
- public: |
- TestDirectorySetterUpper(); |
- virtual ~TestDirectorySetterUpper(); |
- |
- // Create a DirectoryManager instance and use it to open the directory. |
- // Clears any existing database backing files that might exist on disk. |
- virtual void SetUp(); |
- |
- // Undo everything done by SetUp(): close the directory and delete the |
- // backing files. Before closing the directory, this will run the directory |
- // invariant checks and perform the SaveChanges action on the directory. |
- virtual void TearDown(); |
- |
- syncable::DirectoryManager* manager() const { return manager_.get(); } |
- const std::string& name() const { return name_; } |
- |
- protected: |
- // Subclasses may want to use a different directory name. |
- explicit TestDirectorySetterUpper(const std::string& name); |
- virtual void Init(); |
- void reset_directory_manager(syncable::DirectoryManager* d); |
- |
- syncable::NullDirectoryChangeDelegate delegate_; |
- |
- private: |
- void RunInvariantCheck(const syncable::ScopedDirLookup& dir); |
- |
- scoped_ptr<syncable::DirectoryManager> manager_; |
- const std::string name_; |
- ScopedTempDir temp_dir_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestDirectorySetterUpper); |
-}; |
- |
-// A variant of the above where SetUp does not actually open the directory. |
-// You must manually invoke Open(). This is useful if you are writing a test |
-// that depends on the DirectoryManager::OPENED event. |
-class ManuallyOpenedTestDirectorySetterUpper : public TestDirectorySetterUpper { |
- public: |
- ManuallyOpenedTestDirectorySetterUpper() : was_opened_(false) {} |
- virtual void SetUp(); |
- virtual void TearDown(); |
- void Open(); |
- private: |
- bool was_opened_; |
-}; |
- |
-// Use this flavor if you have a test that will trigger the opening event to |
-// happen automagically. It is careful on teardown to close only if needed. |
-class TriggeredOpenTestDirectorySetterUpper : public TestDirectorySetterUpper { |
- public: |
- // A triggered open is typically in response to a successful auth event just |
- // as in "real life". In this case, the name that will be used should be |
- // deterministically known at construction, and is passed in |name|. |
- explicit TriggeredOpenTestDirectorySetterUpper(const std::string& name); |
- virtual void SetUp(); |
- virtual void TearDown(); |
-}; |
- |
-// Use this when you don't want to test the whole stack down to the Directory |
-// level, as it installs a google mock Directory implementation. |
-class MockDirectorySetterUpper : public TestDirectorySetterUpper { |
- public: |
- class Manager : public syncable::DirectoryManager { |
- public: |
- Manager(const FilePath& root_path, syncable::Directory* dir); |
- virtual ~Manager() { managed_directory_ = NULL; } |
- }; |
- |
- class MockDirectory : public syncable::Directory { |
- public: |
- explicit MockDirectory(const std::string& name); |
- virtual ~MockDirectory(); |
- MOCK_METHOD1(PurgeEntriesWithTypeIn, void(const syncable::ModelTypeSet&)); |
- |
- private: |
- syncable::NullDirectoryChangeDelegate delegate_; |
- }; |
- |
- MockDirectorySetterUpper(); |
- virtual ~MockDirectorySetterUpper(); |
- |
- virtual void SetUp(); |
- virtual void TearDown(); |
- MockDirectory* directory() { return directory_.get(); } |
- |
- private: |
- scoped_ptr<MockDirectory> directory_; |
-}; |
- |
-} // namespace browser_sync |
- |
-#endif // CHROME_TEST_SYNC_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |