dirwalk 1.1.1

Platform-optimized recursive directory walker with metadata
Documentation
use dirwalk::scan_dir;
use std::path::Path;

#[test]
fn scan_current_dir_returns_entries() {
    let entries = scan_dir(Path::new(".")).unwrap();
    assert!(!entries.is_empty(), "current directory should have entries");

    // Should find Cargo.toml
    let has_cargo = entries.iter().any(|e| e.name() == "Cargo.toml");
    assert!(has_cargo, "should find Cargo.toml in current dir");
}

#[test]
fn scan_dir_finds_src_directory() {
    let entries = scan_dir(Path::new(".")).unwrap();
    let src = entries.iter().find(|e| e.name() == "src");
    assert!(src.is_some(), "should find src directory");

    let src = src.unwrap();
    assert!(src.is_dir);
    assert_eq!(src.extension(), None);
}

#[test]
fn scan_dir_entry_metadata() {
    let entries = scan_dir(Path::new(".")).unwrap();
    let cargo = entries.iter().find(|e| e.name() == "Cargo.toml").unwrap();

    assert!(!cargo.is_dir);
    assert!(cargo.size > 0);
    assert!(cargo.modified > 0);
    assert_eq!(cargo.extension(), Some("toml"));
    assert_eq!(cargo.relative_path, cargo.name());
    assert_eq!(cargo.depth, 0);
}

#[test]
fn scan_dir_excludes_dot_entries() {
    let entries = scan_dir(Path::new(".")).unwrap();
    assert!(!entries.iter().any(|e| e.name() == "."));
    assert!(!entries.iter().any(|e| e.name() == ".."));
}

#[test]
fn scan_invalid_path_returns_error() {
    let result = scan_dir(Path::new("nonexistent_path_that_does_not_exist"));
    assert!(result.is_err());
}