use std::path::PathBuf;
use std::sync::Arc;
use std::sync::atomic::{AtomicUsize, Ordering};
use iced_swdir_tree::{
DirectoryFilter, DirectoryTree, ScanExecutor, ScanFuture, ScanJob, ThreadExecutor,
};
#[derive(Default)]
struct CountingExecutor {
count: AtomicUsize,
}
impl ScanExecutor for CountingExecutor {
fn spawn_blocking(&self, job: ScanJob) -> ScanFuture {
self.count.fetch_add(1, Ordering::SeqCst);
ThreadExecutor.spawn_blocking(job)
}
}
#[test]
fn with_executor_accepts_a_custom_impl() {
let exec: Arc<dyn ScanExecutor> = Arc::new(CountingExecutor::default());
let _tree = DirectoryTree::new(PathBuf::from("/tmp"))
.with_executor(exec.clone())
.with_filter(DirectoryFilter::FilesAndFolders);
}
#[test]
fn default_executor_is_thread_executor_and_builds_cleanly() {
let _tree = DirectoryTree::new(PathBuf::from("/tmp"));
}