// 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_ #pragma once #include #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/scoped_temp_dir.h" #include "sync/test/fake_encryptor.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 syncable { class Directory; } namespace browser_sync { class TestDirectorySetterUpper { public: TestDirectorySetterUpper(); virtual ~TestDirectorySetterUpper(); // Create a Directory instance open it. 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::Directory* directory() { return directory_.get(); } private: syncable::NullDirectoryChangeDelegate delegate_; TestUnrecoverableErrorHandler handler_; void RunInvariantCheck(); ScopedTempDir temp_dir_; FakeEncryptor encryptor_; scoped_ptr directory_; std::string name_; DISALLOW_COPY_AND_ASSIGN(TestDirectorySetterUpper); }; } // namespace browser_sync #endif // SYNC_TEST_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_