| // Copyright (c) 2012 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) { |
| // ... now use metadb_.directory() to get at syncable::Entry objects ... |
| // } |
| // |
| |
| #ifndef SYNC_TEST_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |
| #define SYNC_TEST_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/compiler_specific.h" |
| #include "base/macros.h" |
| #include "sync/test/fake_sync_encryption_handler.h" |
| #include "sync/test/null_directory_change_delegate.h" |
| #include "sync/util/test_unrecoverable_error_handler.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| namespace syncer { |
| |
| namespace syncable { |
| class Directory; |
| class DirectoryBackingStore; |
| class TestTransactionObserver; |
| } |
| |
| class TestDirectorySetterUpper { |
| public: |
| TestDirectorySetterUpper(); |
| virtual ~TestDirectorySetterUpper(); |
| |
| // Create a Directory instance open it. |
| virtual void SetUp(); |
| |
| // Create a Directory instance using |directory_store| as backend storage. |
| // Takes ownership of |directory_store|. |
| virtual void SetUpWith( |
| syncer::syncable::DirectoryBackingStore* directory_store); |
| |
| // 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::Directory* directory() { return directory_.get(); } |
| |
| SyncEncryptionHandler* encryption_handler() { return &encryption_handler_; } |
| |
| syncable::TestTransactionObserver* transaction_observer() { |
| return test_transaction_observer_.get(); |
| } |
| |
| private: |
| syncable::NullDirectoryChangeDelegate delegate_; |
| std::unique_ptr<syncable::TestTransactionObserver> test_transaction_observer_; |
| TestUnrecoverableErrorHandler handler_; |
| |
| void RunInvariantCheck(); |
| |
| FakeSyncEncryptionHandler encryption_handler_; |
| std::unique_ptr<syncable::Directory> directory_; |
| std::string name_; |
| |
| DISALLOW_COPY_AND_ASSIGN(TestDirectorySetterUpper); |
| }; |
| |
| } // namespace syncer |
| |
| #endif // SYNC_TEST_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_ |