@@ -187,3 +187,99 @@ pub(crate) mod tokio {
187187 }
188188 }
189189}
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