Home | History | Annotate | Download | only in win
      1 // Copyright (c) 2012 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 "base/win/scoped_handle.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 void CreateHandle(int value, HANDLE* result) {
      9   *result = reinterpret_cast<HANDLE>(value);
     10 }
     11 
     12 TEST(ScopedHandleTest, Receive) {
     13   base::win::ScopedHandle handle;
     14   int value = 51;
     15 
     16   {
     17     // This is not really the expected use case, but it is a very explicit test.
     18     base::win::ScopedHandle::Receiver a = handle.Receive();
     19     HANDLE* pointer = a;
     20     *pointer = reinterpret_cast<HANDLE>(value);
     21   }
     22 
     23   EXPECT_EQ(handle.Get(), reinterpret_cast<HANDLE>(value));
     24   HANDLE to_discard = handle.Take();
     25 
     26   // The standard use case:
     27   value = 183;
     28   CreateHandle(value, handle.Receive());
     29   EXPECT_EQ(handle.Get(), reinterpret_cast<HANDLE>(value));
     30   to_discard = handle.Take();
     31 }
     32