| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013 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 #include <algorithm> | |
| 6 #include <vector> | |
| 7 | |
| 8 #include "base/memory/scoped_ptr.h" | |
| 9 #include "chrome/browser/chromeos/login/screens/screen_context.h" | |
| 10 #include "testing/gtest/include/gtest/gtest.h" | |
| 11 | |
| 12 namespace chromeos { | |
| 13 | |
| 14 class ScreenContextTest : public testing::Test { | |
| 15 public: | |
| 16 ScreenContextTest() {} | |
| 17 virtual ~ScreenContextTest() {} | |
| 18 | |
| 19 virtual void SetUp() { | |
| 20 context_.reset(new ScreenContext()); | |
| 21 } | |
| 22 | |
| 23 virtual void TearDown() { | |
| 24 } | |
| 25 | |
| 26 protected: | |
| 27 ScreenContext& context() { return *context_.get(); } | |
| 28 | |
| 29 private: | |
| 30 scoped_ptr<ScreenContext> context_; | |
| 31 }; | |
| 32 | |
| 33 TEST_F(ScreenContextTest, Simple) { | |
| 34 ASSERT_FALSE(context().HasChanges()); | |
| 35 | |
| 36 ASSERT_FALSE(context().HasKey("key0")); | |
| 37 | |
| 38 bool rv = context().SetBoolean("key0", true); | |
| 39 ASSERT_TRUE(rv); | |
| 40 ASSERT_TRUE(context().HasKey("key0")); | |
| 41 ASSERT_TRUE(context().GetBoolean("key0")); | |
| 42 ASSERT_TRUE(context().GetBoolean("key0", false)); | |
| 43 ASSERT_TRUE(context().HasChanges()); | |
| 44 | |
| 45 rv = context().SetBoolean("key0", true); | |
| 46 ASSERT_FALSE(rv); | |
| 47 | |
| 48 rv = context().SetBoolean("key0", false); | |
| 49 ASSERT_TRUE(rv); | |
| 50 ASSERT_TRUE(context().HasKey("key0")); | |
| 51 ASSERT_FALSE(context().GetBoolean("key0")); | |
| 52 ASSERT_FALSE(context().GetBoolean("key0", true)); | |
| 53 ASSERT_TRUE(context().HasChanges()); | |
| 54 | |
| 55 ASSERT_FALSE(context().HasKey("key1")); | |
| 56 | |
| 57 ASSERT_EQ(1, context().GetInteger("key1", 1)); | |
| 58 rv = context().SetInteger("key1", 2); | |
| 59 ASSERT_TRUE(rv); | |
| 60 ASSERT_TRUE(context().HasKey("key1")); | |
| 61 ASSERT_EQ(2, context().GetInteger("key1")); | |
| 62 ASSERT_EQ(2, context().GetInteger("key1", 1)); | |
| 63 } | |
| 64 | |
| 65 TEST_F(ScreenContextTest, Changes) { | |
| 66 ASSERT_FALSE(context().HasChanges()); | |
| 67 | |
| 68 bool rv = context().SetInteger("key0", 2); | |
| 69 ASSERT_TRUE(rv); | |
| 70 ASSERT_EQ(2, context().GetInteger("key0")); | |
| 71 ASSERT_TRUE(context().HasChanges()); | |
| 72 | |
| 73 base::DictionaryValue changes; | |
| 74 context().GetChangesAndReset(&changes); | |
| 75 ASSERT_FALSE(context().HasChanges()); | |
| 76 | |
| 77 ASSERT_EQ(1u, changes.size()); | |
| 78 int value; | |
| 79 rv = changes.GetInteger("key0", &value); | |
| 80 ASSERT_TRUE(rv); | |
| 81 ASSERT_EQ(2, value); | |
| 82 | |
| 83 rv = context().SetInteger("key0", 3); | |
| 84 ASSERT_TRUE(rv); | |
| 85 ASSERT_EQ(3, context().GetInteger("key0", 3)); | |
| 86 ASSERT_TRUE(context().HasChanges()); | |
| 87 | |
| 88 rv = context().SetInteger("key0", 2); | |
| 89 ASSERT_TRUE(rv); | |
| 90 ASSERT_TRUE(context().HasChanges()); | |
| 91 } | |
| 92 | |
| 93 TEST_F(ScreenContextTest, ComplexChanges) { | |
| 94 ASSERT_FALSE(context().HasChanges()); | |
| 95 | |
| 96 context().SetString("key0", "value0"); | |
| 97 context().SetBoolean("key1", true); | |
| 98 context().SetDouble("key2", 3.14159); | |
| 99 ASSERT_TRUE(context().HasChanges()); | |
| 100 | |
| 101 // Get all changes and verify them. | |
| 102 base::DictionaryValue changes; | |
| 103 context().GetChangesAndReset(&changes); | |
| 104 ASSERT_FALSE(context().HasChanges()); | |
| 105 ASSERT_EQ(3u, changes.size()); | |
| 106 | |
| 107 std::string string_value; | |
| 108 bool bool_value; | |
| 109 double double_value; | |
| 110 bool rv = changes.GetString("key0", &string_value); | |
| 111 ASSERT_TRUE(rv); | |
| 112 rv = changes.GetBoolean("key1", &bool_value); | |
| 113 ASSERT_TRUE(rv); | |
| 114 rv = changes.GetDouble("key2", &double_value); | |
| 115 ASSERT_TRUE(rv); | |
| 116 ASSERT_EQ("value0", string_value); | |
| 117 ASSERT_EQ(true, bool_value); | |
| 118 ASSERT_DOUBLE_EQ(3.14159, double_value); | |
| 119 | |
| 120 context().SetString("key0", "value1"); | |
| 121 ASSERT_TRUE(context().HasChanges()); | |
| 122 | |
| 123 context().SetString("key0", "value0"); | |
| 124 ASSERT_TRUE(context().HasChanges()); | |
| 125 | |
| 126 context().GetChangesAndReset(&changes); | |
| 127 ASSERT_FALSE(context().HasChanges()); | |
| 128 ASSERT_EQ(1u, changes.size()); | |
| 129 rv = changes.GetString("key0", &string_value); | |
| 130 ASSERT_TRUE(rv); | |
| 131 ASSERT_EQ("value0", string_value); | |
| 132 } | |
| 133 | |
| 134 TEST_F(ScreenContextTest, ApplyChanges) { | |
| 135 ASSERT_FALSE(context().HasChanges()); | |
| 136 | |
| 137 base::DictionaryValue changes; | |
| 138 changes.SetString("key0", "value0"); | |
| 139 changes.SetInteger("key1", 1); | |
| 140 changes.SetBoolean("key2", true); | |
| 141 | |
| 142 std::vector<std::string> keys; | |
| 143 context().ApplyChanges(changes, &keys); | |
| 144 | |
| 145 ASSERT_EQ(3u, keys.size()); | |
| 146 std::sort(keys.begin(), keys.end()); | |
| 147 ASSERT_EQ("key0", keys[0]); | |
| 148 ASSERT_EQ("key1", keys[1]); | |
| 149 ASSERT_EQ("key2", keys[2]); | |
| 150 | |
| 151 ASSERT_FALSE(context().HasChanges()); | |
| 152 ASSERT_EQ("value0", context().GetString("key0")); | |
| 153 ASSERT_EQ(1, context().GetInteger("key1")); | |
| 154 ASSERT_TRUE(context().GetBoolean("key2")); | |
| 155 } | |
| 156 | |
| 157 } // namespace chromeos | |
| OLD | NEW |