| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/win/registry.h" | 5 #include "base/win/registry.h" |
| 6 | 6 |
| 7 #include <cstring> | 7 #include <cstring> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 KEY_READ)); | 134 KEY_READ)); |
| 135 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, foo_key.c_str(), | 135 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, foo_key.c_str(), |
| 136 KEY_READ | KEY_SET_VALUE)); | 136 KEY_READ | KEY_SET_VALUE)); |
| 137 ASSERT_TRUE(key.Valid()); | 137 ASSERT_TRUE(key.Valid()); |
| 138 | 138 |
| 139 // Create a test value that is larger than MAX_PATH. | 139 // Create a test value that is larger than MAX_PATH. |
| 140 std::wstring data(MAX_PATH * 2, L'a'); | 140 std::wstring data(MAX_PATH * 2, L'a'); |
| 141 | 141 |
| 142 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(data.c_str(), data.c_str())); | 142 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(data.c_str(), data.c_str())); |
| 143 | 143 |
| 144 RegistryValueIterator iterator(HKEY_CURRENT_USER, foo_key.c_str()); | 144 RegistryValueIterator iterator(HKEY_CURRENT_USER, foo_key.c_str(), 0); |
| 145 ASSERT_TRUE(iterator.Valid()); | 145 ASSERT_TRUE(iterator.Valid()); |
| 146 EXPECT_STREQ(data.c_str(), iterator.Name()); | 146 EXPECT_STREQ(data.c_str(), iterator.Name()); |
| 147 EXPECT_STREQ(data.c_str(), iterator.Value()); | 147 EXPECT_STREQ(data.c_str(), iterator.Value()); |
| 148 // ValueSize() is in bytes, including NUL. | 148 // ValueSize() is in bytes, including NUL. |
| 149 EXPECT_EQ((MAX_PATH * 2 + 1) * sizeof(wchar_t), iterator.ValueSize()); | 149 EXPECT_EQ((MAX_PATH * 2 + 1) * sizeof(wchar_t), iterator.ValueSize()); |
| 150 ++iterator; | 150 ++iterator; |
| 151 EXPECT_FALSE(iterator.Valid()); | 151 EXPECT_FALSE(iterator.Valid()); |
| 152 } | 152 } |
| 153 | 153 |
| 154 TEST_F(RegistryTest, TruncatedCharTest) { | 154 TEST_F(RegistryTest, TruncatedCharTest) { |
| 155 RegKey key; | 155 RegKey key; |
| 156 std::wstring foo_key(kRootKey); | 156 std::wstring foo_key(kRootKey); |
| 157 foo_key += L"\\Foo"; | 157 foo_key += L"\\Foo"; |
| 158 ASSERT_EQ(ERROR_SUCCESS, key.Create(HKEY_CURRENT_USER, foo_key.c_str(), | 158 ASSERT_EQ(ERROR_SUCCESS, key.Create(HKEY_CURRENT_USER, foo_key.c_str(), |
| 159 KEY_READ)); | 159 KEY_READ)); |
| 160 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, foo_key.c_str(), | 160 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, foo_key.c_str(), |
| 161 KEY_READ | KEY_SET_VALUE)); | 161 KEY_READ | KEY_SET_VALUE)); |
| 162 ASSERT_TRUE(key.Valid()); | 162 ASSERT_TRUE(key.Valid()); |
| 163 | 163 |
| 164 const wchar_t kName[] = L"name"; | 164 const wchar_t kName[] = L"name"; |
| 165 // kData size is not a multiple of sizeof(wchar_t). | 165 // kData size is not a multiple of sizeof(wchar_t). |
| 166 const uint8 kData[] = { 1, 2, 3, 4, 5 }; | 166 const uint8 kData[] = { 1, 2, 3, 4, 5 }; |
| 167 EXPECT_EQ(5, arraysize(kData)); | 167 EXPECT_EQ(5, arraysize(kData)); |
| 168 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kName, kData, | 168 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kName, kData, |
| 169 arraysize(kData), REG_BINARY)); | 169 arraysize(kData), REG_BINARY)); |
| 170 | 170 |
| 171 RegistryValueIterator iterator(HKEY_CURRENT_USER, foo_key.c_str()); | 171 RegistryValueIterator iterator(HKEY_CURRENT_USER, foo_key.c_str(), 0); |
| 172 ASSERT_TRUE(iterator.Valid()); | 172 ASSERT_TRUE(iterator.Valid()); |
| 173 EXPECT_STREQ(kName, iterator.Name()); | 173 EXPECT_STREQ(kName, iterator.Name()); |
| 174 // ValueSize() is in bytes. | 174 // ValueSize() is in bytes. |
| 175 ASSERT_EQ(arraysize(kData), iterator.ValueSize()); | 175 ASSERT_EQ(arraysize(kData), iterator.ValueSize()); |
| 176 // Value() is NUL terminated. | 176 // Value() is NUL terminated. |
| 177 int end = (iterator.ValueSize() + sizeof(wchar_t) - 1) / sizeof(wchar_t); | 177 int end = (iterator.ValueSize() + sizeof(wchar_t) - 1) / sizeof(wchar_t); |
| 178 EXPECT_NE(L'\0', iterator.Value()[end-1]); | 178 EXPECT_NE(L'\0', iterator.Value()[end-1]); |
| 179 EXPECT_EQ(L'\0', iterator.Value()[end]); | 179 EXPECT_EQ(L'\0', iterator.Value()[end]); |
| 180 EXPECT_EQ(0, std::memcmp(kData, iterator.Value(), arraysize(kData))); | 180 EXPECT_EQ(0, std::memcmp(kData, iterator.Value(), arraysize(kData))); |
| 181 ++iterator; | 181 ++iterator; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 key.Open(HKEY_CURRENT_USER, foo_key.c_str(), KEY_READ)); | 346 key.Open(HKEY_CURRENT_USER, foo_key.c_str(), KEY_READ)); |
| 347 | 347 |
| 348 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_WRITE)); | 348 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_WRITE)); |
| 349 ASSERT_EQ(ERROR_SUCCESS, key.DeleteKey(L"foo")); | 349 ASSERT_EQ(ERROR_SUCCESS, key.DeleteKey(L"foo")); |
| 350 } | 350 } |
| 351 | 351 |
| 352 } // namespace | 352 } // namespace |
| 353 | 353 |
| 354 } // namespace win | 354 } // namespace win |
| 355 } // namespace base | 355 } // namespace base |
| OLD | NEW |