use cheetah_string::CheetahString;
#[test]
fn test_split_edge_cases() {
let s = CheetahString::from("");
let parts: Vec<&str> = s.split(',').collect();
assert_eq!(parts, vec![""]);
let s = CheetahString::from(",a,b");
let parts: Vec<&str> = s.split(',').collect();
assert_eq!(parts, vec!["", "a", "b"]);
let s = CheetahString::from("a,b,");
let parts: Vec<&str> = s.split(',').collect();
assert_eq!(parts, vec!["a", "b", ""]);
let s = CheetahString::from("a,,b");
let parts: Vec<&str> = s.split(',').collect();
assert_eq!(parts, vec!["a", "", "b"]);
let s = CheetahString::from(",");
let parts: Vec<&str> = s.split(',').collect();
assert_eq!(parts, vec!["", ""]);
let s = CheetahString::from("a::b::c");
let parts: Vec<&str> = s.split("::").collect();
assert_eq!(parts, vec!["a", "b", "c"]);
let s = CheetahString::from("::a::b");
let parts: Vec<&str> = s.split("::").collect();
assert_eq!(parts, vec!["", "a", "b"]);
let s = CheetahString::from("a::b::");
let parts: Vec<&str> = s.split("::").collect();
assert_eq!(parts, vec!["a", "b", ""]);
}
#[test]
fn test_empty_pattern() {
let s = CheetahString::from("hello");
let parts: Vec<&str> = s.split("").collect();
assert_eq!(parts, vec!["", "h", "e", "l", "l", "o", ""]);
let s = CheetahString::from("");
let parts: Vec<&str> = s.split("").collect();
assert_eq!(parts, vec!["", ""]);
}
#[test]
fn test_string_pattern_consecutive_separators() {
let s = CheetahString::from("a::b::::c::");
let parts: Vec<&str> = s.split("::").collect();
assert_eq!(parts, vec!["a", "b", "", "c", ""]);
}
#[test]
#[should_panic(expected = "split with string pattern does not support reverse iteration")]
fn test_single_char_string_pattern_reverse_panics() {
let s = CheetahString::from("a b c");
let _: Vec<&str> = s.split(" ").rev().collect();
}