@@ -187,3 +187,99 @@ pub(crate) mod tokio {
187
187
}
188
188
}
189
189
}
190
+
191
+ #[ cfg( test) ]
192
+ mod tests {
193
+ use super :: * ;
194
+
195
+ #[ test]
196
+ fn validate_process_id_system_idle_process ( ) {
197
+ let process_id = SYSTEM_IDLE_PROCESS_PROCESS_ID ;
198
+ let result = validate_process_id ( process_id) ;
199
+ assert ! ( result. is_err( ) ) ;
200
+ assert_eq ! (
201
+ format!( "{}" , result. unwrap_err( ) ) ,
202
+ format!(
203
+ "Invalid process id: {process_id}. Reason: Not allowed to kill System Idle Process" ,
204
+ process_id = process_id
205
+ )
206
+ ) ;
207
+ }
208
+
209
+ #[ test]
210
+ fn validate_process_id_system ( ) {
211
+ let process_id = SYSTEM_PROCESS_ID ;
212
+ let result = validate_process_id ( process_id) ;
213
+ assert ! ( result. is_err( ) ) ;
214
+ assert_eq ! (
215
+ format!( "{}" , result. unwrap_err( ) ) ,
216
+ format!(
217
+ "Invalid process id: {process_id}. Reason: Not allowed to kill System" ,
218
+ process_id = process_id
219
+ )
220
+ ) ;
221
+ }
222
+
223
+ #[ test]
224
+ fn validate_process_id_other ( ) {
225
+ let process_id = 1 ;
226
+ let result = validate_process_id ( process_id) ;
227
+ assert ! ( result. is_ok( ) ) ;
228
+ }
229
+
230
+ #[ test]
231
+ fn validate_process_id_available_max ( ) {
232
+ let process_id = AVAILABLE_MAX_PROCESS_ID ;
233
+ let result = validate_process_id ( process_id) ;
234
+ assert ! ( result. is_ok( ) ) ;
235
+ }
236
+
237
+ #[ test]
238
+ fn child_process_id_map_filter_same ( ) {
239
+ let process_info = ProcessInfo {
240
+ process_id : 1 ,
241
+ parent_process_id : 1 ,
242
+ name : "1" . to_string ( ) ,
243
+ } ;
244
+ assert_eq ! ( child_process_id_map_filter( & process_info) , true ) ;
245
+ }
246
+
247
+ #[ test]
248
+ fn child_process_id_map_filter_not_same ( ) {
249
+ let process_info = ProcessInfo {
250
+ process_id : 1 ,
251
+ parent_process_id : 0 ,
252
+ name : "1" . to_string ( ) ,
253
+ } ;
254
+ assert_eq ! ( child_process_id_map_filter( & process_info) , false ) ;
255
+ }
256
+
257
+ #[ test]
258
+ fn kill_available_max_process_id ( ) {
259
+ let target_process_id = AVAILABLE_MAX_PROCESS_ID ;
260
+ let result = kill ( target_process_id) ;
261
+ assert ! ( result. is_ok( ) ) ;
262
+ let result = result. unwrap ( ) ;
263
+ match result {
264
+ KillOutput :: MaybeAlreadyTerminated { process_id, source } => {
265
+ assert_eq ! ( target_process_id, process_id) ;
266
+ match source {
267
+ crate :: Error :: Windows ( e) => {
268
+ assert_eq ! ( e. code( ) , E_INVALIDARG ) ;
269
+ assert_eq ! ( e. message( ) , "The parameter is incorrect." ) ;
270
+ }
271
+ _ => panic ! ( "Unexpected source: {source:?}" , ) ,
272
+ }
273
+ }
274
+ _ => panic ! ( "Unexpected result: {result:?}" , ) ,
275
+ }
276
+ }
277
+
278
+ #[ test]
279
+ fn get_process_infos_test ( ) {
280
+ let result = get_process_infos ( ) ;
281
+ assert ! ( result. is_ok( ) ) ;
282
+ let process_infos = result. unwrap ( ) ;
283
+ assert ! ( process_infos. len( ) > 2 ) ;
284
+ }
285
+ }
0 commit comments