#[ cfg( feature = "optimize_split" ) ]
use strs_tools_meta ::optimize_split;
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc1_single_char_delimiter()
{
let result = optimize_split!( "a,b,c", "," );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc2_multi_char_single_delimiter()
{
let result = optimize_split!( "a->b->c", "->" );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc3_multiple_delimiters()
{
let result = optimize_split!( "a,b;c", [ ",", ";" ] );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc4_complex_delimiters()
{
let result = optimize_split!( "a,b->c ::d", [ ",", "->", " :: " ] );
assert!( result.len() >= 3 );
assert_eq!( result[ 0 ], "a" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc5_preserve_delimiters()
{
let result = optimize_split!( "a,b,c", ",", preserve_delimiters = true );
assert!( result.len() >= 3 );
assert_eq!( result[ 0 ], "a" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc6_preserve_empty()
{
let result = optimize_split!( "a,,c", ",", preserve_empty = true );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc7_multiple_delimiters_simple()
{
let result = optimize_split!( "a,b;c", [ ",", ";" ] );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc8_debug_mode()
{
let result = optimize_split!( "a,b,c", "," );
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc9_explicit_parameters()
{
let result = optimize_split!(
"a,b,c",
",",
preserve_delimiters = false,
preserve_empty = false
);
assert_eq!( result.len(), 3 );
assert_eq!( result[ 0 ], "a" );
assert_eq!( result[ 1 ], "b" );
assert_eq!( result[ 2 ], "c" );
}
#[ cfg( feature = "optimize_split" ) ]
#[ test ]
fn tc10_default_value_equivalence()
{
let result_explicit = optimize_split!(
"a,b,c",
",",
preserve_delimiters = false,
preserve_empty = false
);
let result_default = optimize_split!( "a,b,c", "," );
assert_eq!( result_explicit, result_default );
}