Index: base/registry_monitor_manager_unittest.cc |
diff --git a/base/registry_monitor_manager_unittest.cc b/base/registry_monitor_manager_unittest.cc |
deleted file mode 100644 |
index 4d767057f9e33d4edb6a9a2da40c06c298698999..0000000000000000000000000000000000000000 |
--- a/base/registry_monitor_manager_unittest.cc |
+++ /dev/null |
@@ -1,235 +0,0 @@ |
-// Copyright 2008-2009 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
- |
-#include <windows.h> |
-#include <limits.h> |
-#include "base/basictypes.h" |
-#include "omaha/base/scoped_any.h" |
-#include "omaha/base/reactor.h" |
-#include "omaha/base/reg_key.h" |
-#include "omaha/base/registry_monitor_manager.h" |
-#include "omaha/base/thread.h" |
-#include "omaha/base/utils.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-namespace { |
- |
-const TCHAR kKeyNameFull[] = _T("HKCU\\key"); |
-const TCHAR kKeyName[] = _T("key"); |
-const TCHAR kValueName[] = _T("value"); |
- |
-} // namespace |
- |
-class RegistryMonitorTest : public testing::Test { |
- protected: |
- RegistryMonitorTest() {} |
- |
- virtual void SetUp() { |
- // Override HKCU. |
- RegKey::DeleteKey(kRegistryHiveOverrideRoot); |
- OverrideSpecifiedRegistryHives(kRegistryHiveOverrideRoot, false, true); |
- reset(registry_changed_event_, ::CreateEvent(NULL, true, false, NULL)); |
- } |
- |
- virtual void TearDown() { |
- reset(registry_changed_event_); |
- RestoreRegistryHives(); |
- RegKey::DeleteKey(kRegistryHiveOverrideRoot); |
- } |
- |
- static void RegistryDeleteCallback(const TCHAR* key_name, |
- const TCHAR* value_name, |
- RegistryChangeType change_type, |
- const void* new_value_data, |
- void* user_data) { |
- EXPECT_STREQ(kKeyName, key_name); |
- EXPECT_STREQ(kValueName, value_name); |
- EXPECT_EQ(REGISTRY_CHANGE_TYPE_DELETE, change_type); |
- EXPECT_TRUE(new_value_data); |
- EXPECT_TRUE(user_data); |
- RegistryMonitorTest* object = static_cast<RegistryMonitorTest*>(user_data); |
- DWORD actual_value = reinterpret_cast<DWORD>(new_value_data); |
- EXPECT_EQ(ULONG_MAX, actual_value); |
- EXPECT_TRUE(::SetEvent(get(object->registry_changed_event_))); |
- } |
- |
- static void RegistryChangeCallback(const TCHAR* key_name, |
- const TCHAR* value_name, |
- RegistryChangeType change_type, |
- const void* new_value_data, |
- void* user_data) { |
- EXPECT_STREQ(kKeyName, key_name); |
- EXPECT_STREQ(kValueName, value_name); |
- EXPECT_EQ(REGISTRY_CHANGE_TYPE_UPDATE, change_type); |
- EXPECT_TRUE(new_value_data); |
- EXPECT_TRUE(user_data); |
- RegistryMonitorTest* object = static_cast<RegistryMonitorTest*>(user_data); |
- const TCHAR* actual_value = static_cast<const TCHAR*>(new_value_data); |
- EXPECT_STREQ(_T("foo"), actual_value); |
- EXPECT_TRUE(::SetEvent(get(object->registry_changed_event_))); |
- } |
- |
- static void RegistryChangesCallback(const TCHAR* key_name, |
- const TCHAR* value_name, |
- RegistryChangeType change_type, |
- const void* new_value_data, |
- void* user_data) { |
- EXPECT_STREQ(kKeyName, key_name); |
- EXPECT_STREQ(kValueName, value_name); |
- EXPECT_EQ(REGISTRY_CHANGE_TYPE_UPDATE, change_type); |
- EXPECT_TRUE(new_value_data); |
- EXPECT_TRUE(user_data); |
- RegistryMonitorTest* object = static_cast<RegistryMonitorTest*>(user_data); |
- EXPECT_TRUE(::SetEvent(get(object->registry_changed_event_))); |
- } |
- |
- static void RegistryCreateCallback(const TCHAR* key_name, |
- const TCHAR* value_name, |
- RegistryChangeType change_type, |
- const void* new_value_data, |
- void* user_data) { |
- EXPECT_STREQ(kKeyName, key_name); |
- EXPECT_STREQ(kValueName, value_name); |
- EXPECT_EQ(REGISTRY_CHANGE_TYPE_CREATE, change_type); |
- EXPECT_TRUE(new_value_data); |
- EXPECT_TRUE(user_data); |
- RegistryMonitorTest* object = static_cast<RegistryMonitorTest*>(user_data); |
- DWORD actual_value = reinterpret_cast<DWORD>(new_value_data); |
- EXPECT_EQ(1, actual_value); |
- EXPECT_TRUE(::SetEvent(get(object->registry_changed_event_))); |
- } |
- |
- static void RegistryKeyCallback(const TCHAR* key_name, void* user_data) { |
- EXPECT_STREQ(kKeyName, key_name); |
- RegistryMonitorTest* object = static_cast<RegistryMonitorTest*>(user_data); |
- EXPECT_TRUE(::SetEvent(get(object->registry_changed_event_))); |
- } |
- |
- scoped_event registry_changed_event_; |
- |
- static DWORD const kWaitForChangeMs = 5000; |
-}; |
- |
-TEST_F(RegistryMonitorTest, DeleteValue) { |
- DWORD value = 0; |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, kValueName, value)); |
- RegistryMonitor registry_monitor; |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_DWORD, |
- RegistryDeleteCallback, this)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.StartMonitoring()); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::DeleteValue(kKeyNameFull, kValueName)); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
-} |
- |
-TEST_F(RegistryMonitorTest, ChangeValue) { |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, kValueName, _T(""))); |
- RegistryMonitor registry_monitor; |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_SZ, |
- RegistryChangeCallback, this)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.StartMonitoring()); |
- |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, |
- kValueName, |
- _T("foo"))); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
-} |
- |
-// Tests changing the same value two times. This is useful to detect if |
-// the key is registered back for notification after a succesful callback. |
-TEST_F(RegistryMonitorTest, ChangeValues) { |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, |
- kValueName, |
- _T(""))); |
- |
- RegistryMonitor registry_monitor; |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_SZ, |
- RegistryChangesCallback, this)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.StartMonitoring()); |
- |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, |
- kValueName, |
- _T("foo"))); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
- EXPECT_TRUE(::ResetEvent(get(registry_changed_event_))); |
- |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, |
- kValueName, |
- _T("bar"))); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
-} |
- |
-TEST_F(RegistryMonitorTest, CreateValue) { |
- RegistryMonitor registry_monitor; |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- ASSERT_HRESULT_SUCCEEDED(RegKey::CreateKey(kKeyNameFull)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_DWORD, |
- RegistryCreateCallback, this)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.StartMonitoring()); |
- |
- DWORD value = 1; |
- ASSERT_HRESULT_SUCCEEDED(RegKey::SetValue(kKeyNameFull, kValueName, value)); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
-} |
- |
-// Monitoring values under the same key pair is allowed. |
-TEST_F(RegistryMonitorTest, MonitorSame) { |
- RegistryMonitor registry_monitor; |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- ASSERT_HRESULT_SUCCEEDED(RegKey::CreateKey(kKeyNameFull)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_DWORD, |
- RegistryCreateCallback, this)); |
- ASSERT_HRESULT_SUCCEEDED(registry_monitor.MonitorValue( |
- HKEY_CURRENT_USER, kKeyName, kValueName, REG_DWORD, |
- RegistryCreateCallback, this)); |
-} |
- |
-TEST_F(RegistryMonitorTest, MonitorKey) { |
- EXPECT_HRESULT_SUCCEEDED(RegKey::CreateKey(kKeyNameFull)); |
- |
- RegistryMonitor registry_monitor; |
- EXPECT_HRESULT_SUCCEEDED(registry_monitor.Initialize()); |
- EXPECT_HRESULT_SUCCEEDED(registry_monitor.MonitorKey( |
- HKEY_CURRENT_USER, kKeyName, RegistryKeyCallback, this)); |
- |
- EXPECT_HRESULT_SUCCEEDED(registry_monitor.StartMonitoring()); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::CreateKey(_T("HKCU\\key\\subkey"))); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
- |
- EXPECT_TRUE(::ResetEvent(get(registry_changed_event_))); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::DeleteKey(_T("HKCU\\key\\subkey"))); |
- EXPECT_EQ(WAIT_OBJECT_0, ::WaitForSingleObject(get(registry_changed_event_), |
- kWaitForChangeMs)); |
-} |
- |
-} // namespace omaha |
- |