1
Fork 0

add unit test to bootstrap:util:cache:tests

This commit is contained in:
bit-aloo 2025-02-11 10:33:05 +05:30
parent 8a0a4df0c6
commit 24150eb3c0
No known key found for this signature in database
GPG key ID: 02911B24FDAE81DA
2 changed files with 55 additions and 0 deletions

View file

@ -298,3 +298,6 @@ impl Cache {
self.0.borrow().contains_key(&TypeId::of::<S>())
}
}
#[cfg(test)]
mod tests;

52
src/bootstrap/src/utils/cache/tests.rs vendored Normal file
View file

@ -0,0 +1,52 @@
use std::path::PathBuf;
use crate::utils::cache::{INTERNER, Internable, TyIntern};
#[test]
fn test_string_interning() {
let s1 = INTERNER.intern_str("Hello");
let s2 = INTERNER.intern_str("Hello");
let s3 = INTERNER.intern_str("world");
assert_eq!(s1, s2, "Same strings should be interned to the same instance");
assert_ne!(s1, s3, "Different strings should have different interned values");
}
#[test]
fn test_path_interning() {
let p1 = PathBuf::from("/tmp/file").intern();
let p2 = PathBuf::from("/tmp/file").intern();
let p3 = PathBuf::from("/tmp/other").intern();
assert_eq!(p1, p2);
assert_ne!(p1, p3);
}
#[test]
fn test_vec_interning() {
let v1 = vec!["a".to_string(), "b".to_string()].intern();
let v2 = vec!["a".to_string(), "b".to_string()].intern();
let v3 = vec!["c".to_string()].intern();
assert_eq!(v1, v2);
assert_ne!(v1, v3);
}
#[test]
fn test_interned_equality() {
let s1 = INTERNER.intern_str("test");
let s2 = INTERNER.intern_str("test");
assert_eq!(s1, s2);
assert_eq!(s1, "test");
}
#[test]
fn test_ty_intern_intern_borrow() {
let mut interner = TyIntern::default();
let s1 = interner.intern_borrow("borrowed");
let s2 = interner.intern("borrowed".to_string());
assert_eq!(s1, s2);
assert_eq!(interner.get(s1), "borrowed");
}