1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Use of this source code is governed by a BSD-style license that can be
321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// found in the LICENSE file.
421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "base/values.h"
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/prefs/pref_value_map.h"
721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "testing/gtest/include/gtest/gtest.h"
821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass PrefValueMapTest : public testing::Test {
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(PrefValueMapTest, SetValue) {
1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefValueMap map;
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* result = NULL;
1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.GetValue("key", &result));
1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(result);
1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.SetValue("key", Value::CreateStringValue("test")));
1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.SetValue("key", Value::CreateStringValue("test")));
2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.SetValue("key", Value::CreateStringValue("hi mom!")));
2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.GetValue("key", &result));
2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue("hi mom!").Equals(result));
2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(PrefValueMapTest, RemoveValue) {
2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefValueMap map;
2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.RemoveValue("key"));
2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.SetValue("key", Value::CreateStringValue("test")));
3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.GetValue("key", NULL));
3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.RemoveValue("key"));
3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.GetValue("key", NULL));
3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.RemoveValue("key"));
3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(PrefValueMapTest, Clear) {
4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefValueMap map;
4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.SetValue("key", Value::CreateStringValue("test")));
4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(map.GetValue("key", NULL));
4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  map.Clear();
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_FALSE(map.GetValue("key", NULL));
4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(PrefValueMapTest, GetDifferingKeys) {
5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefValueMap reference;
5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(reference.SetValue("b", Value::CreateStringValue("test")));
5221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(reference.SetValue("c", Value::CreateStringValue("test")));
5321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(reference.SetValue("e", Value::CreateStringValue("test")));
5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
5521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefValueMap check;
5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::vector<std::string> differing_paths;
5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  std::vector<std::string> expected_differing_paths;
5821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
5921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  reference.GetDifferingKeys(&check, &differing_paths);
6021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("b");
6121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("c");
6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("e");
6321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(expected_differing_paths, differing_paths);
6421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
6521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(check.SetValue("a", Value::CreateStringValue("test")));
6621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(check.SetValue("c", Value::CreateStringValue("test")));
6721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(check.SetValue("d", Value::CreateStringValue("test")));
6821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
6921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  reference.GetDifferingKeys(&check, &differing_paths);
7021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.clear();
7121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("a");
7221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("b");
7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("d");
7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  expected_differing_paths.push_back("e");
7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(expected_differing_paths, differing_paths);
7621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
77