1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // A tool making it easier to create IDs for unit testing. 6 7 #ifndef SYNC_TEST_ENGINE_TEST_ID_FACTORY_H_ 8 #define SYNC_TEST_ENGINE_TEST_ID_FACTORY_H_ 9 10 #include <string> 11 12 #include "base/strings/string_number_conversions.h" 13 #include "sync/syncable/syncable_id.h" 14 15 namespace syncer { 16 17 class TestIdFactory { 18 public: 19 TestIdFactory() : next_value_(1337000) {} 20 ~TestIdFactory() {} 21 22 // Get the root ID. 23 static syncable::Id root() { 24 return syncable::Id(); 25 } 26 27 // Make an ID from a number. If the number is zero, return the root ID. 28 // If the number is positive, create a server ID based on the value. If 29 // the number is negative, create a local ID based on the value. This 30 // is deterministic, and [FromNumber(X) == FromNumber(Y)] iff [X == Y]. 31 static syncable::Id FromNumber(int64 value) { 32 if (value == 0) 33 return root(); 34 else if (value < 0) 35 return syncable::Id::CreateFromClientString(base::Int64ToString(value)); 36 else 37 return syncable::Id::CreateFromServerId(base::Int64ToString(value)); 38 } 39 40 // Create a local ID from a name. 41 static syncable::Id MakeLocal(std::string name) { 42 return syncable::Id::CreateFromClientString(std::string("lient ") + name); 43 } 44 45 // Create a server ID from a string name. 46 static syncable::Id MakeServer(std::string name) { 47 return syncable::Id::CreateFromServerId(std::string("erver ") + name); 48 } 49 50 // Autogenerate a fresh local ID. 51 syncable::Id NewLocalId() { 52 return syncable::Id::CreateFromClientString( 53 std::string("_auto ") + base::IntToString(-next_value())); 54 } 55 56 // Autogenerate a fresh server ID. 57 syncable::Id NewServerId() { 58 return syncable::Id::CreateFromServerId( 59 std::string("_auto ") + base::IntToString(next_value())); 60 } 61 62 private: 63 int next_value() { 64 return next_value_++; 65 } 66 int next_value_; 67 }; 68 69 } // namespace syncer 70 71 #endif // SYNC_TEST_ENGINE_TEST_ID_FACTORY_H_ 72 73