use crate::endpoint_lib::diagnostic::DiagnosticCollector;
pub(crate) fn split<'a>(value: &'a str, delimiter: &str, limit: usize, _dc: &mut DiagnosticCollector) -> Vec<&'a str> {
if limit == 0 {
return value.split(delimiter).collect();
}
value.splitn(limit, delimiter).collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_split_unlimited() {
assert_eq!(split("a--b--c", "--", 0, &mut DiagnosticCollector::new()), vec!["a", "b", "c"]);
assert_eq!(
split("--x-s3--azid--suffix", "--", 0, &mut DiagnosticCollector::new()),
vec!["", "x-s3", "azid", "suffix"]
);
}
#[test]
fn test_split_with_limit() {
assert_eq!(split("a--b--c", "--", 2, &mut DiagnosticCollector::new()), vec!["a", "b--c"]);
assert_eq!(
split("--x-s3--azid--suffix", "--", 2, &mut DiagnosticCollector::new()),
vec!["", "x-s3--azid--suffix"]
);
}
#[test]
fn test_split_no_split() {
assert_eq!(split("a--b--c", "--", 1, &mut DiagnosticCollector::new()), vec!["a--b--c"]);
assert_eq!(split("mybucket", "--", 1, &mut DiagnosticCollector::new()), vec!["mybucket"]);
}
#[test]
fn test_split_empty_string() {
assert_eq!(split("", "--", 0, &mut DiagnosticCollector::new()), vec![""]);
}
#[test]
fn test_split_delimiter_only() {
assert_eq!(split("--", "--", 0, &mut DiagnosticCollector::new()), vec!["", ""]);
assert_eq!(split("----", "--", 0, &mut DiagnosticCollector::new()), vec!["", "", ""]);
}
#[test]
fn test_split_with_empty_parts() {
assert_eq!(split("--b--", "--", 0, &mut DiagnosticCollector::new()), vec!["", "b", ""]);
}
#[test]
fn test_split_no_delimiter_found() {
assert_eq!(split("abc", "x", 0, &mut DiagnosticCollector::new()), vec!["abc"]);
}
}