Index: win/scoped_handle_unittest.cc |
diff --git a/win/scoped_handle_unittest.cc b/win/scoped_handle_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70431ace07d1b66777ee4814899029cb7a1d76d3 |
--- /dev/null |
+++ b/win/scoped_handle_unittest.cc |
@@ -0,0 +1,32 @@ |
+// Copyright (c) 2011 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 "base/win/scoped_handle.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+TEST(ScopedHandleTest, ScopedHandle) { |
+ // Any illegal error code will do. We just need to test that it is preserved |
+ // by ScopedHandle to avoid bug 528394. |
+ const DWORD magic_error = 0x12345678; |
+ |
+ HANDLE handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ // Call SetLastError after creating the handle. |
+ ::SetLastError(magic_error); |
+ base::win::ScopedHandle handle_holder(handle); |
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+ |
+ // Create a new handle and then set LastError again. |
+ handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ ::SetLastError(magic_error); |
+ handle_holder.Set(handle); |
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+ |
+ // Create a new handle and then set LastError again. |
+ handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ base::win::ScopedHandle handle_source(handle); |
+ ::SetLastError(magic_error); |
+ handle_holder = std::move(handle_source); |
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+} |