| 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..2e7a1e31d0fd8eca07357393da7561ad05e37632
|
| --- /dev/null
|
| +++ b/sync/internal_api/public/base/model_type_state_map_unittest.cc
|
| @@ -0,0 +1,73 @@
|
| +// 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/base64.h"
|
| +#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;
|
| + std::string encoded;
|
| + states[BOOKMARKS].payload = "bookmarkpayload";
|
| + base::Base64Encode(states[BOOKMARKS].payload, &encoded);
|
| + states[APPS].payload = "";
|
| +
|
| + scoped_ptr<DictionaryValue> value(ModelTypeStateMapToValue(states));
|
| + EXPECT_EQ(2u, value->size());
|
| + ExpectDictStringValue(encoded, *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
|
|
|