about summary refs log tree commit diff
path: root/compiler/rustc_incremental/src/persist/fs/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_incremental/src/persist/fs/tests.rs')
-rw-r--r--compiler/rustc_incremental/src/persist/fs/tests.rs84
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 00000000000..652ef6bcdce
--- /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>>(),
+        vec![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(
+            vec![
+                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(
+            vec![
+                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(vec![].into_iter(), &already_visited), None);
+
+    // Handle only working
+    assert_eq!(
+        find_source_directory_in_iter(
+            vec![
+                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
+    );
+}