[email protected] | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | da2566e1 | 2010-03-10 06:23:35 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
[email protected] | e078590 | 2011-05-19 23:34:17 | [diff] [blame] | 5 | #include "base/scoped_native_library.h" |
[email protected] | 864b136 | 2010-08-19 03:49:38 | [diff] [blame] | 6 | #if defined(OS_WIN) |
[email protected] | 5799981 | 2013-02-24 05:40:52 | [diff] [blame] | 7 | #include "base/files/file_path.h" |
[email protected] | 864b136 | 2010-08-19 03:49:38 | [diff] [blame] | 8 | #endif |
[email protected] | da2566e1 | 2010-03-10 06:23:35 | [diff] [blame] | 9 | |
10 | #include "testing/gtest/include/gtest/gtest.h" | ||||
11 | |||||
[email protected] | 5257bcf | 2013-02-19 05:47:10 | [diff] [blame] | 12 | namespace base { |
13 | |||||
[email protected] | da2566e1 | 2010-03-10 06:23:35 | [diff] [blame] | 14 | // Tests whether or not a function pointer retrieved via ScopedNativeLibrary |
15 | // is available only in a scope. | ||||
16 | TEST(ScopedNativeLibrary, Basic) { | ||||
17 | #if defined(OS_WIN) | ||||
18 | // Get the pointer to DirectDrawCreate() from "ddraw.dll" and verify it | ||||
19 | // is valid only in this scope. | ||||
20 | // FreeLibrary() doesn't actually unload a DLL until its reference count | ||||
21 | // becomes zero, i.e. this function pointer is still valid if the DLL used | ||||
22 | // in this test is also used by another part of this executable. | ||||
23 | // So, this test uses "ddraw.dll", which is not used by Chrome at all but | ||||
24 | // installed on all versions of Windows. | ||||
25 | FARPROC test_function; | ||||
26 | { | ||||
[email protected] | 5257bcf | 2013-02-19 05:47:10 | [diff] [blame] | 27 | FilePath path(GetNativeLibraryName(L"ddraw")); |
28 | ScopedNativeLibrary library(path); | ||||
[email protected] | da2566e1 | 2010-03-10 06:23:35 | [diff] [blame] | 29 | test_function = reinterpret_cast<FARPROC>( |
30 | library.GetFunctionPointer("DirectDrawCreate")); | ||||
31 | EXPECT_EQ(0, IsBadCodePtr(test_function)); | ||||
32 | } | ||||
33 | EXPECT_NE(0, IsBadCodePtr(test_function)); | ||||
34 | #endif | ||||
35 | } | ||||
[email protected] | 5257bcf | 2013-02-19 05:47:10 | [diff] [blame] | 36 | |
37 | } // namespace base |