#![ allow( missing_docs ) ]
include!( "../../../../module/step/meta/src/module/terminal.rs" );
#[ allow( unused_imports ) ]
use ::process_tools as the_module;
#[ allow( unused_imports ) ]
use test_tools :: *;
#[ cfg( feature = "enabled" ) ]
mod inc
{
use super :: *;
use the_module ::lifecycle ::signal;
#[ test ]
fn signal_name_sigkill()
{
assert_eq!( signal ::signal_name( 9 ), "SIGKILL" );
}
#[ test ]
fn signal_name_sigterm()
{
assert_eq!( signal ::signal_name( 15 ), "SIGTERM" );
}
#[ test ]
fn signal_name_sigint()
{
assert_eq!( signal ::signal_name( 2 ), "SIGINT" );
}
#[ test ]
fn signal_name_unknown()
{
assert_eq!( signal ::signal_name( 999 ), "UNKNOWN" );
}
#[ test ]
fn signal_number_sigkill()
{
assert_eq!( signal ::signal_number( "SIGKILL" ), Some( 9 ) );
}
#[ test ]
fn signal_number_nonexistent()
{
assert_eq!( signal ::signal_number( "NONEXISTENT" ), None );
}
#[ test ]
fn all_signals_contains_standard()
{
let signals = signal ::all_signals();
assert!( signals.iter().any( | &( n, name ) | n == 1 && name == "SIGHUP" ) );
assert!( signals.iter().any( | &( n, name ) | n == 2 && name == "SIGINT" ) );
assert!( signals.iter().any( | &( n, name ) | n == 9 && name == "SIGKILL" ) );
assert!( signals.iter().any( | &( n, name ) | n == 15 && name == "SIGTERM" ) );
}
#[ test ]
fn signal_round_trip_consistency()
{
let name = "SIGKILL";
let number = signal ::signal_number( name ).expect( "SIGKILL must be mapped" );
assert_eq!( signal ::signal_name( number ), name );
}
#[ test ]
fn signal_name_zero_returns_unknown()
{
assert_eq!( signal ::signal_name( 0 ), "UNKNOWN" );
}
#[ test ]
fn signal_name_negative_returns_unknown()
{
assert_eq!( signal ::signal_name( -1 ), "UNKNOWN" );
}
#[ test ]
fn signal_name_boundary_26_returns_unknown()
{
assert_eq!( signal ::signal_name( 26 ), "UNKNOWN" );
}
#[ test ]
fn signal_name_i32_max_returns_unknown()
{
assert_eq!( signal ::signal_name( i32 ::MAX ), "UNKNOWN" );
}
#[ test ]
fn signal_number_empty_string()
{
assert_eq!( signal ::signal_number( "" ), None );
}
#[ test ]
fn signal_number_lowercase_returns_none()
{
assert_eq!( signal ::signal_number( "sigkill" ), None );
}
#[ test ]
fn signal_number_without_sig_prefix()
{
assert_eq!( signal ::signal_number( "KILL" ), None );
}
#[ test ]
fn signal_number_sig_prefix_only()
{
assert_eq!( signal ::signal_number( "SIG" ), None );
}
#[ test ]
fn all_signals_exact_count()
{
assert_eq!( signal ::all_signals().len(), 25 );
}
#[ test ]
fn all_signals_no_duplicate_numbers()
{
let signals = signal ::all_signals();
let mut numbers = std ::collections ::HashSet ::new();
for &( num, _ ) in signals
{
assert!( numbers.insert( num ), "duplicate signal number: {num}" );
}
}
#[ test ]
fn all_signals_no_duplicate_names()
{
let signals = signal ::all_signals();
let mut names = std ::collections ::HashSet ::new();
for &( _, name ) in signals
{
assert!( names.insert( name ), "duplicate signal name: {name}" );
}
}
#[ test ]
fn signal_round_trip_all()
{
for &( num, name ) in signal ::all_signals()
{
assert_eq!(
signal ::signal_name( num ), name,
"forward lookup failed for signal {num}"
);
assert_eq!(
signal ::signal_number( name ), Some( num ),
"reverse lookup failed for signal {name}"
);
}
}
}