Logo Search packages:      
Sourcecode: chromium-browser version File versions  Download package

test_id_factory.h

// Copyright (c) 2009 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 tool making it easier to create IDs for unit testing.

#ifndef CHROME_TEST_SYNC_ENGINE_TEST_ID_FACTORY_H_
#define CHROME_TEST_SYNC_ENGINE_TEST_ID_FACTORY_H_

#include <string>

#include "base/string_util.h"
#include "chrome/browser/sync/syncable/syncable_id.h"

namespace browser_sync {

class TestIdFactory {
 public:
  TestIdFactory() : next_value_(1337000) {}
  ~TestIdFactory() {}

  // Get the root ID.
  static syncable::Id root() {
    return syncable::Id();
  }

  // Make an ID from a number.  If the number is zero, return the root ID.
  // If the number is positive, create a server ID based on the value.  If
  // the number is negative, create a local ID based on the value.  This
  // is deterministic, and [FromNumber(X) == FromNumber(Y)] iff [X == Y].
  static syncable::Id FromNumber(int64 value) {
    if (value == 0)
      return root();
    else if (value < 0)
      return syncable::Id::CreateFromClientString(Int64ToString(value));
    else
      return syncable::Id::CreateFromServerId(Int64ToString(value));
  }

  // Create a local ID from a name.
  static syncable::Id MakeLocal(std::string name) {
    return syncable::Id::CreateFromClientString(std::string("lient ") + name);
  }

  // Create a server ID from a string name.
  static syncable::Id MakeServer(std::string name) {
    return syncable::Id::CreateFromServerId(std::string("erver ") + name);
  }

  // Autogenerate a fresh local ID.
  syncable::Id NewLocalId() {
    return syncable::Id::CreateFromClientString(
        std::string("_auto ") + IntToString(-next_value()));
  }

  // Autogenerate a fresh server ID.
  syncable::Id NewServerId() {
    return syncable::Id::CreateFromServerId(
        std::string("_auto ") + IntToString(next_value()));
  }

 private:
  int next_value() {
    return next_value_++;
  }
  int next_value_;
};

}  // namespace browser_sync

#endif  // CHROME_TEST_SYNC_ENGINE_TEST_ID_FACTORY_H_


Generated by  Doxygen 1.6.0   Back to index