Skip to content

Commit 24150eb

Browse files
committed
add unit test to bootstrap:util:cache:tests
1 parent 8a0a4df commit 24150eb

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

src/bootstrap/src/utils/cache.rs

+3
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,6 @@ impl Cache {
298298
self.0.borrow().contains_key(&TypeId::of::<S>())
299299
}
300300
}
301+
302+
#[cfg(test)]
303+
mod tests;
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
use std::path::PathBuf;
2+
3+
use crate::utils::cache::{INTERNER, Internable, TyIntern};
4+
5+
#[test]
6+
fn test_string_interning() {
7+
let s1 = INTERNER.intern_str("Hello");
8+
let s2 = INTERNER.intern_str("Hello");
9+
let s3 = INTERNER.intern_str("world");
10+
11+
assert_eq!(s1, s2, "Same strings should be interned to the same instance");
12+
assert_ne!(s1, s3, "Different strings should have different interned values");
13+
}
14+
15+
#[test]
16+
fn test_path_interning() {
17+
let p1 = PathBuf::from("/tmp/file").intern();
18+
let p2 = PathBuf::from("/tmp/file").intern();
19+
let p3 = PathBuf::from("/tmp/other").intern();
20+
21+
assert_eq!(p1, p2);
22+
assert_ne!(p1, p3);
23+
}
24+
25+
#[test]
26+
fn test_vec_interning() {
27+
let v1 = vec!["a".to_string(), "b".to_string()].intern();
28+
let v2 = vec!["a".to_string(), "b".to_string()].intern();
29+
let v3 = vec!["c".to_string()].intern();
30+
31+
assert_eq!(v1, v2);
32+
assert_ne!(v1, v3);
33+
}
34+
35+
#[test]
36+
fn test_interned_equality() {
37+
let s1 = INTERNER.intern_str("test");
38+
let s2 = INTERNER.intern_str("test");
39+
40+
assert_eq!(s1, s2);
41+
assert_eq!(s1, "test");
42+
}
43+
44+
#[test]
45+
fn test_ty_intern_intern_borrow() {
46+
let mut interner = TyIntern::default();
47+
let s1 = interner.intern_borrow("borrowed");
48+
let s2 = interner.intern("borrowed".to_string());
49+
50+
assert_eq!(s1, s2);
51+
assert_eq!(interner.get(s1), "borrowed");
52+
}

0 commit comments

Comments
 (0)