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");
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());
}