Index: sync/internal_api/public/base/model_type_state_map_unittest.cc |
diff --git a/sync/internal_api/public/base/model_type_state_map_unittest.cc b/sync/internal_api/public/base/model_type_state_map_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1981f3de62af482414b501add57ff06a1856db08 |
--- /dev/null |
+++ b/sync/internal_api/public/base/model_type_state_map_unittest.cc |
@@ -0,0 +1,70 @@ |
+// 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. |
+ |
+#include "sync/internal_api/public/base/model_type_state_map.h" |
+ |
+#include <string> |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/test/values_test_util.h" |
+#include "base/values.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace syncer { |
+namespace { |
+ |
+using base::ExpectDictStringValue; |
+ |
+class ModelTypeStateMapTest : public testing::Test {}; |
+ |
+TEST_F(ModelTypeStateMapTest, TypeStateMapToSet) { |
+ ModelTypeStateMap states; |
+ states[BOOKMARKS].payload = "bookmarkpayload"; |
+ states[APPS].payload = ""; |
+ |
+ const ModelTypeSet types(BOOKMARKS, APPS); |
+ EXPECT_TRUE(ModelTypeStateMapToSet(states).Equals(types)); |
+} |
+ |
+TEST_F(ModelTypeStateMapTest, TypeStateMapToValue) { |
+ ModelTypeStateMap states; |
+ states[BOOKMARKS].payload = "bookmarkpayload"; |
+ states[APPS].payload = ""; |
+ |
+ scoped_ptr<DictionaryValue> value(ModelTypeStateMapToValue(states)); |
+ EXPECT_EQ(2u, value->size()); |
+ ExpectDictStringValue(states[BOOKMARKS].payload, *value, "Bookmarks"); |
+ ExpectDictStringValue("", *value, "Apps"); |
+ EXPECT_FALSE(value->HasKey("Preferences")); |
+} |
+ |
+TEST_F(ModelTypeStateMapTest, CoalesceStates) { |
+ ModelTypeStateMap original; |
+ std::string empty_payload; |
+ std::string payload1 = "payload1"; |
+ std::string payload2 = "payload2"; |
+ std::string payload3 = "payload3"; |
+ original[BOOKMARKS].payload = empty_payload; |
+ original[PASSWORDS].payload = payload1; |
+ original[AUTOFILL].payload = payload2; |
+ original[THEMES].payload = payload3; |
+ |
+ ModelTypeStateMap update; |
+ update[BOOKMARKS].payload = empty_payload; // Same. |
+ update[PASSWORDS].payload = empty_payload; // Overwrite with empty. |
+ update[AUTOFILL].payload = payload1; // Overwrite with non-empty. |
+ update[SESSIONS].payload = payload2; // New. |
+ // Themes untouched. |
+ |
+ CoalesceStates(&original, update); |
+ ASSERT_EQ(5U, original.size()); |
+ EXPECT_EQ(empty_payload, original[BOOKMARKS].payload); |
+ EXPECT_EQ(payload1, original[PASSWORDS].payload); |
+ EXPECT_EQ(payload1, original[AUTOFILL].payload); |
+ EXPECT_EQ(payload2, original[SESSIONS].payload); |
+ EXPECT_EQ(payload3, original[THEMES].payload); |
+} |
+ |
+} // namespace |
+} // namespace syncer |