LEFT | RIGHT |
1 #include <gtest/gtest.h> | 1 #include <gtest/gtest.h> |
2 #include "../process.h" | 2 #include "../process.h" |
3 #include <functional> | 3 #include <functional> |
4 | 4 |
5 // Turn off warnings for string copies | 5 // Turn off warnings for string copies |
6 #pragma warning( disable : 4996 ) | 6 #pragma warning( disable : 4996 ) |
7 | 7 |
8 //------------------------------------------------------- | 8 //------------------------------------------------------- |
9 // Comparison objects | 9 // Comparison objects |
10 //------------------------------------------------------- | 10 //------------------------------------------------------- |
11 | 11 |
12 const wchar_t * multiple_module_names[] = { L"kernel32.dll", L"non-matching-name
" } ; | |
13 const wchar_t * non_existent_module_names[] = { L"non-matching-name" } ; | |
14 | |
15 const wchar_t exact_exe_name[] = L"installer-ca-tests.exe" ; | 12 const wchar_t exact_exe_name[] = L"installer-ca-tests.exe" ; |
16 const std::wstring exact_exe_string( exact_exe_name ) ; | 13 const std::wstring exact_exe_string( exact_exe_name ) ; |
17 const wstring_ci exact_exe_string_ci( exact_exe_name ) ; | 14 const wstring_ci exact_exe_string_ci( exact_exe_name ) ; |
18 | 15 |
19 const wchar_t mixedcase_exe_name[] = L"Installer-CA-Tests.exe" ; | 16 const wchar_t mixedcase_exe_name[] = L"Installer-CA-Tests.exe" ; |
20 const wstring_ci mixedcase_exe_string_ci( mixedcase_exe_name ) ; | 17 const wstring_ci mixedcase_exe_string_ci( mixedcase_exe_name ) ; |
21 | 18 |
22 const wchar_t unknown_name[] = L"non-matching-name" ; | 19 const wchar_t unknown_name[] = L"non-matching-name" ; |
23 const wchar_t * multiple_exe_names[] = { mixedcase_exe_name, unknown_name } ; | 20 const wchar_t * multiple_exe_names[] = { mixedcase_exe_name, unknown_name } ; |
24 | 21 |
(...skipping 13 matching lines...) Expand all Loading... |
38 * Compare to our own process name, case-insensitive, no length limit | 35 * Compare to our own process name, case-insensitive, no length limit |
39 */ | 36 */ |
40 struct our_process_by_name_CI | 37 struct our_process_by_name_CI |
41 : std::unary_function< PROCESSENTRY32W, bool > | 38 : std::unary_function< PROCESSENTRY32W, bool > |
42 { | 39 { |
43 bool operator()( const PROCESSENTRY32W & process ) | 40 bool operator()( const PROCESSENTRY32W & process ) |
44 { | 41 { |
45 return wstring_ci( process.szExeFile ) == mixedcase_exe_string_ci ; | 42 return wstring_ci( process.szExeFile ) == mixedcase_exe_string_ci ; |
46 } ; | 43 } ; |
47 } ; | 44 } ; |
48 | |
49 | |
50 struct our_process_by_name_subclassed | |
51 : public process_by_any_exe_not_immersive | |
52 { | |
53 our_process_by_name_subclassed() | |
54 : process_by_any_exe_not_immersive( file_name_set( multiple_exe_names )) | |
55 {} | |
56 } ; | |
57 | |
58 | 45 |
59 //------------------------------------------------------- | 46 //------------------------------------------------------- |
60 //------------------------------------------------------- | 47 //------------------------------------------------------- |
61 /** | 48 /** |
62 * Filter by process name. Comparison is case-insensitive. | 49 * Filter by process name. Comparison is case-insensitive. |
63 */ | 50 */ |
64 class process_by_any_file_name_CI | 51 class process_by_any_file_name_CI |
65 : public std::unary_function< PROCESSENTRY32W, bool > | 52 : public std::unary_function< PROCESSENTRY32W, bool > |
66 { | 53 { |
67 const file_name_set & names ; | 54 const file_name_set & names ; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 return p ; | 90 return p ; |
104 } | 91 } |
105 | 92 |
106 PROCESSENTRY32 process_empty = process_with_name( L"" ) ; | 93 PROCESSENTRY32 process_empty = process_with_name( L"" ) ; |
107 PROCESSENTRY32 process_exact = process_with_name( exact_exe_name ) ; | 94 PROCESSENTRY32 process_exact = process_with_name( exact_exe_name ) ; |
108 PROCESSENTRY32 process_mixedcase = process_with_name( mixedcase_exe_name ) ; | 95 PROCESSENTRY32 process_mixedcase = process_with_name( mixedcase_exe_name ) ; |
109 PROCESSENTRY32 process_explorer = process_with_name( L"explorer.exe" ) ; | 96 PROCESSENTRY32 process_explorer = process_with_name( L"explorer.exe" ) ; |
110 PROCESSENTRY32 process_absent = process_with_name( L"no_such_name" ) ; | 97 PROCESSENTRY32 process_absent = process_with_name( L"no_such_name" ) ; |
111 | 98 |
112 file_name_set multiple_name_set( multiple_exe_names ) ; | 99 file_name_set multiple_name_set( multiple_exe_names ) ; |
113 file_name_set multiple_name_set_modules( multiple_module_names ) ; | |
114 file_name_set non_existent_name_set_modules( non_existent_module_names ) ; | |
115 process_by_any_file_name_CI find_in_set( multiple_name_set ) ; | 100 process_by_any_file_name_CI find_in_set( multiple_name_set ) ; |
| 101 process_by_any_exe_not_immersive find_in_set_not_immersive( multiple_name_set )
; |
| 102 |
116 | 103 |
117 TEST( file_name_set, validate_setup ) | 104 TEST( file_name_set, validate_setup ) |
118 { | 105 { |
119 ASSERT_EQ( 2u, multiple_name_set.size() ) ; | 106 ASSERT_EQ( 2u, multiple_name_set.size() ) ; |
120 ASSERT_TRUE( multiple_name_set.find( exact_exe_string_ci ) != multiple_name_se
t.end() ) ; | 107 ASSERT_TRUE( multiple_name_set.find( exact_exe_string_ci ) != multiple_name_se
t.end() ) ; |
121 ASSERT_TRUE( multiple_name_set.find( mixedcase_exe_string_ci ) != multiple_nam
e_set.end() ) ; | 108 ASSERT_TRUE( multiple_name_set.find( mixedcase_exe_string_ci ) != multiple_nam
e_set.end() ) ; |
122 ASSERT_TRUE( multiple_name_set.find( L"" ) == multiple_name_set.end() ) ; | 109 ASSERT_TRUE( multiple_name_set.find( L"" ) == multiple_name_set.end() ) ; |
123 ASSERT_TRUE( multiple_name_set.find( L"not-in-list" ) == multiple_name_set.end
() ) ; | 110 ASSERT_TRUE( multiple_name_set.find( L"not-in-list" ) == multiple_name_set.end
() ) ; |
124 } | 111 } |
125 | 112 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 ASSERT_GE( s.size(), 1u ); | 274 ASSERT_GE( s.size(), 1u ); |
288 } | 275 } |
289 | 276 |
290 TEST( pid_set, find_our_process_in_set ) | 277 TEST( pid_set, find_our_process_in_set ) |
291 { | 278 { |
292 std::set< DWORD > s ; | 279 std::set< DWORD > s ; |
293 initialize_process_set( s, find_in_set, copy_PID() ) ; | 280 initialize_process_set( s, find_in_set, copy_PID() ) ; |
294 size_t size( s.size() ) ; | 281 size_t size( s.size() ) ; |
295 EXPECT_EQ( size, 1u ); | 282 EXPECT_EQ( size, 1u ); |
296 ASSERT_GE( size, 1u ); | 283 ASSERT_GE( size, 1u ); |
| 284 } |
| 285 |
| 286 TEST( pid_set, find_our_process_in_set_not_immersive ) |
| 287 { |
| 288 std::set< DWORD > s ; |
| 289 initialize_process_set( s, find_in_set_not_immersive, copy_PID() ) ; |
| 290 size_t size( s.size() ) ; |
| 291 EXPECT_EQ( size, 1u ); |
| 292 ASSERT_GE( size, 1u ); |
297 } | 293 } |
LEFT | RIGHT |