blob: 92441380f542a58f279dbfa42714f41b7eef33c1 [file] [log] [blame]
// 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 <string>
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/scoped_temp_dir.h"
#include "sync/util/test_unrecoverable_error_handler.h"
#include "sync/syncable/syncable.h"
#include "sync/test/fake_encryptor.h"
#include "sync/test/null_directory_change_delegate.h"
#include "testing/gmock/include/gmock/gmock.h"
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(); }
protected:
syncable::NullDirectoryChangeDelegate delegate_;
TestUnrecoverableErrorHandler handler_;
private:
void RunInvariantCheck();
ScopedTempDir temp_dir_;
FakeEncryptor encryptor_;
scoped_ptr<syncable::Directory> directory_;
std::string name_;
DISALLOW_COPY_AND_ASSIGN(TestDirectorySetterUpper);
};
} // namespace browser_sync
#endif // SYNC_TEST_ENGINE_TEST_DIRECTORY_SETTER_UPPER_H_