From 526fd424f72af34796869842b69a966ca633792b Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 26 May 2022 12:17:29 -0400 Subject: [PATCH] Tests for tor_netdoc::util::intern --- crates/tor-netdoc/src/util/intern.rs | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/crates/tor-netdoc/src/util/intern.rs b/crates/tor-netdoc/src/util/intern.rs index 3e662def3..48d83dfa9 100644 --- a/crates/tor-netdoc/src/util/intern.rs +++ b/crates/tor-netdoc/src/util/intern.rs @@ -76,3 +76,36 @@ impl InternCache { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn interning_by_value() { + // "intern" case. + let c: InternCache = InternCache::new(); + + let s1 = c.intern("abc".to_string()); + let s2 = c.intern("def".to_string()); + let s3 = c.intern("abc".to_string()); + assert!(Arc::ptr_eq(&s1, &s3)); + assert!(!Arc::ptr_eq(&s1, &s2)); + assert_eq!(s2.as_ref(), "def"); + assert_eq!(s3.as_ref(), "abc"); + } + + #[test] + fn interning_by_ref() { + // "intern" case. + let c: InternCache = InternCache::new(); + + let s1 = c.intern_ref("abc"); + let s2 = c.intern_ref("def"); + let s3 = c.intern_ref("abc"); + assert!(Arc::ptr_eq(&s1, &s3)); + assert!(!Arc::ptr_eq(&s1, &s2)); + assert_eq!(&*s2, "def"); + assert_eq!(&*s3, "abc"); + } +}