// 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 = handle_source.Pass(); EXPECT_EQ(magic_error, ::GetLastError()); }