braces 0.2.6

Convert path lists into compact brace expansion syntax
Documentation
use braces::{brace_paths, BraceConfig, BraceError};

#[test]
fn test_error_display() {
    let empty_err = BraceError::EmptyInput;
    assert_eq!(format!("{}", empty_err), "No paths provided");

    let mixed_err = BraceError::MixedSeparators {
        found: vec!["\\".to_string()],
        expected: "/".to_string(),
    };
    assert!(format!("{}", mixed_err).contains("Mixed path separators"));

    let brace_err = BraceError::InvalidBraceInput {
        path: "foo/{bar}".to_string(),
        reason: "test".to_string(),
    };
    assert!(format!("{}", brace_err).contains("Invalid braces input"));

    let depth_err = BraceError::DepthLimitExceeded { limit: 5 };
    assert!(format!("{}", depth_err).contains("depth limit"));
}

#[test]
fn test_error_is_error_trait() {
    let err = BraceError::EmptyInput;
    let _: &dyn std::error::Error = &err;
}

#[test]
fn test_result_type() {
    let paths: Vec<String> = vec![];
    let result = brace_paths(&paths, &BraceConfig::default());
    assert!(result.is_err());
}

#[test]
fn test_error_equality() {
    let err1 = BraceError::EmptyInput;
    let err2 = BraceError::EmptyInput;
    assert_eq!(err1, err2);

    let err3 = BraceError::DepthLimitExceeded { limit: 5 };
    let err4 = BraceError::DepthLimitExceeded { limit: 5 };
    assert_eq!(err3, err4);
}

#[test]
fn test_error_clone() {
    let err = BraceError::EmptyInput;
    let cloned = err.clone();
    assert_eq!(err, cloned);
}