diff options
Diffstat (limited to '')
-rw-r--r-- | compiler/rustc_incremental/src/persist/fs/tests.rs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/compiler/rustc_incremental/src/persist/fs/tests.rs b/compiler/rustc_incremental/src/persist/fs/tests.rs new file mode 100644 index 000000000..184796948 --- /dev/null +++ b/compiler/rustc_incremental/src/persist/fs/tests.rs @@ -0,0 +1,84 @@ +use super::*; + +#[test] +fn test_all_except_most_recent() { + assert_eq!( + all_except_most_recent(vec![ + (UNIX_EPOCH + Duration::new(4, 0), PathBuf::from("4"), None), + (UNIX_EPOCH + Duration::new(1, 0), PathBuf::from("1"), None), + (UNIX_EPOCH + Duration::new(5, 0), PathBuf::from("5"), None), + (UNIX_EPOCH + Duration::new(3, 0), PathBuf::from("3"), None), + (UNIX_EPOCH + Duration::new(2, 0), PathBuf::from("2"), None), + ]) + .keys() + .cloned() + .collect::<FxHashSet<PathBuf>>(), + [PathBuf::from("1"), PathBuf::from("2"), PathBuf::from("3"), PathBuf::from("4"),] + .into_iter() + .collect::<FxHashSet<PathBuf>>() + ); + + assert_eq!( + all_except_most_recent(vec![]).keys().cloned().collect::<FxHashSet<PathBuf>>(), + FxHashSet::default() + ); +} + +#[test] +fn test_timestamp_serialization() { + for i in 0..1_000u64 { + let time = UNIX_EPOCH + Duration::new(i * 1_434_578, (i as u32) * 239_000); + let s = timestamp_to_string(time); + assert_eq!(Ok(time), string_to_timestamp(&s)); + } +} + +#[test] +fn test_find_source_directory_in_iter() { + let already_visited = FxHashSet::default(); + + // Find newest + assert_eq!( + find_source_directory_in_iter( + [ + PathBuf::from("crate-dir/s-3234-0000-svh"), + PathBuf::from("crate-dir/s-2234-0000-svh"), + PathBuf::from("crate-dir/s-1234-0000-svh") + ] + .into_iter(), + &already_visited + ), + Some(PathBuf::from("crate-dir/s-3234-0000-svh")) + ); + + // Filter out "-working" + assert_eq!( + find_source_directory_in_iter( + [ + PathBuf::from("crate-dir/s-3234-0000-working"), + PathBuf::from("crate-dir/s-2234-0000-svh"), + PathBuf::from("crate-dir/s-1234-0000-svh") + ] + .into_iter(), + &already_visited + ), + Some(PathBuf::from("crate-dir/s-2234-0000-svh")) + ); + + // Handle empty + assert_eq!(find_source_directory_in_iter([].into_iter(), &already_visited), None); + + // Handle only working + assert_eq!( + find_source_directory_in_iter( + [ + PathBuf::from("crate-dir/s-3234-0000-working"), + PathBuf::from("crate-dir/s-2234-0000-working"), + PathBuf::from("crate-dir/s-1234-0000-working") + ] + .into_iter(), + &already_visited + ), + None + ); +} |