use search_path::SearchPath; use std::path::PathBuf; #[cfg(target_family = "windows")] const SIMPLE_PATH: &str = "a;b;c"; #[cfg(not(target_family = "windows"))] const SIMPLE_PATH: &str = "a:b:c"; #[test] fn test_append() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", SIMPLE_PATH); assert!(!search_path.contains(&PathBuf::from("d"))); search_path.append(PathBuf::from("d")); assert!(search_path.contains(&PathBuf::from("d"))); assert_eq!(search_path.iter().last(), Some(&PathBuf::from("d"))); } #[test] fn test_append_cwd() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", SIMPLE_PATH); assert!(!search_path.contains(&PathBuf::from("."))); search_path.append_cwd(); assert!(search_path.contains(&PathBuf::from("."))); assert_eq!(search_path.iter().last(), Some(&PathBuf::from("."))); } #[test] fn test_prepend() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", SIMPLE_PATH); assert!(!search_path.contains(&PathBuf::from("d"))); search_path.prepend(PathBuf::from("d")); assert!(search_path.contains(&PathBuf::from("d"))); assert_eq!(search_path.iter().next(), Some(&PathBuf::from("d"))); } #[test] fn test_prepend_cwd() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", SIMPLE_PATH); assert!(!search_path.contains(&PathBuf::from("."))); search_path.prepend_cwd(); assert!(search_path.contains(&PathBuf::from("."))); assert_eq!(search_path.iter().next(), Some(&PathBuf::from("."))); } #[test] fn test_remove() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", SIMPLE_PATH); assert!(search_path.contains(&PathBuf::from("a"))); search_path.remove(&PathBuf::from("a")); assert!(!search_path.contains(&PathBuf::from("a"))); } #[cfg(target_family = "windows")] const DUPLICATES_PATH: &str = "a;b;a;b;c;a;c"; #[cfg(not(target_family = "windows"))] const DUPLICATES_PATH: &str = "a:b:a:b:c:a:c"; #[test] fn test_dedup() { let mut search_path = SearchPath::new_or("UNLIKELY_THIS_VAR_EXISTS", DUPLICATES_PATH); search_path.dedup(); assert_eq!(search_path.len(), 3); assert!(search_path.contains(&PathBuf::from("a"))); assert!(search_path.contains(&PathBuf::from("b"))); assert!(search_path.contains(&PathBuf::from("c"))); }