#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_ptr_zst()
{
let zst1 = ();
let zst2 = ();
assert!( !mem_tools::same_ptr( &zst1, &zst2 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_ptr_string_literal_deduplication()
{
let s1 = "deduplicated";
let s2 = "deduplicated";
assert!( mem_tools::same_ptr( s1, s2 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_ptr_different_slices()
{
let arr = [ 1, 2, 3, 4 ];
let slice1: &[ i32 ] = &arr[ .. ];
let slice3: &[ i32 ] = &arr[ 1..3 ];
assert!( !mem_tools::same_ptr( slice1, slice3 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_size_cross_type()
{
let a: u32 = 42;
let b: [ u8; 4 ] = [ 1, 2, 3, 4 ];
assert!( mem_tools::same_size( &a, &b ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_size_zst()
{
let zst1 = ();
let zst2 = ();
assert!( mem_tools::same_size( &zst1, &zst2 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_region_string_literal_vs_heap()
{
let literal = "test";
let heap = String::from( "test" );
assert!( !mem_tools::same_region( literal, heap.as_str() ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_region_subslice()
{
let arr = [ 1, 2, 3, 4 ];
let full: &[ i32 ] = &arr[ .. ];
let sub: &[ i32 ] = &arr[ 1..3 ];
assert!( !mem_tools::same_region( full, sub ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_data_zst()
{
let zst1 = ();
let zst2 = ();
assert!( mem_tools::same_data( &zst1, &zst2 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_data_empty_slices()
{
let empty1: &[ i32 ] = &[];
let empty2: &[ i32 ] = &[];
assert!( mem_tools::same_data( empty1, empty2 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_data_cross_type()
{
let tuple = ( 1u8, 2u8, 3u8, 4u8 );
let array = [ 1u8, 2u8, 3u8, 4u8 ];
assert!( mem_tools::same_data( &tuple, &array ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_same_data_unicode()
{
let s1 = "hello";
let s2 = "hello";
assert!( mem_tools::same_data( s1, s2 ) );
let s3 = "héllo";
let s4 = "héllo";
assert!( mem_tools::same_data( s3, s4 ) );
assert!( !mem_tools::same_data( s1, s3 ) );
}
#[ cfg( feature = "enabled" ) ]
#[ test ]
fn corner_case_fat_pointer_handling()
{
let arr1 = [ 1, 2, 3 ];
let arr2 = [ 1, 2, 3 ];
let slice1: &[ i32 ] = &arr1;
let slice2: &[ i32 ] = &arr2;
assert!( !mem_tools::same_ptr( slice1, slice2 ) );
assert!( mem_tools::same_size( slice1, slice2 ) );
assert!( mem_tools::same_data( slice1, slice2 ) );
assert!( !mem_tools::same_region( slice1, slice2 ) );
}