extern crate lifeguard; #[cfg(test)] mod tests { use lifeguard::*; #[test] fn test_deref() { let str_pool : Pool = Pool::with_size(1); let rstring = str_pool.new_from("cat"); assert_eq!("cat", *rstring); } #[test] fn test_deref_rc() { let str_pool : Pool = Pool::with_size(1); let rstring = str_pool.new_rc_from("cat"); assert_eq!("cat", *rstring); } #[test] fn test_deref_mut() { let str_pool : Pool = Pool::with_size(1); let mut rstring = str_pool.new_from("cat"); rstring.push_str("s love eating mice"); assert_eq!("cats love eating mice", *rstring); } #[test] fn test_deref_mut_rc() { let str_pool : Pool = Pool::with_size(1); let mut rstring = str_pool.new_rc_from("cat"); rstring.push_str("s love eating mice"); assert_eq!("cats love eating mice", *rstring); } #[test] fn test_as_mut() { let str_pool : Pool = Pool::with_size(1); let mut rstring = str_pool.new_from("cat"); rstring.as_mut().push_str("s love eating mice"); assert_eq!("cats love eating mice", *rstring); } #[test] fn test_as_mut_rc() { let str_pool : Pool = Pool::with_size(1); let mut rstring = str_pool.new_rc_from("cat"); rstring.as_mut().push_str("s love eating mice"); assert_eq!("cats love eating mice", *rstring); } #[test] fn test_as_ref() { let str_pool : Pool = Pool::with_size(1); let rstring = str_pool.new_from("cat"); assert_eq!("cat", rstring.as_ref()); } #[test] fn test_as_ref_rc() { let str_pool : Pool = Pool::with_size(1); let rstring = str_pool.new_rc_from("cat"); assert_eq!("cat", rstring.as_ref()); } #[test] fn test_recycle() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let _rstring = str_pool.new_from("cat"); assert_eq!(0, str_pool.size()); } assert_eq!(1, str_pool.size()); } #[test] fn test_recycle_rc() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let _rstring = str_pool.new_rc_from("cat"); assert_eq!(0, str_pool.size()); } assert_eq!(1, str_pool.size()); } #[test] fn test_clone() { let str_pool : Pool = Pool::with_size(2); { assert_eq!(2, str_pool.size()); let text = str_pool.new_from("cat"); let text_clone = text.clone(); assert_eq!(text, text_clone); assert_eq!(0, str_pool.size()); } assert_eq!(2, str_pool.size()); } #[test] fn test_rc_clone() { let str_pool : Pool = Pool::with_size(2); { assert_eq!(2, str_pool.size()); let text = str_pool.new_rc_from("cat"); let text_clone = text.clone(); assert_eq!(text, text_clone); assert_eq!(0, str_pool.size()); } assert_eq!(2, str_pool.size()); } #[test] fn test_size_cap() { let str_pool : Pool = Pool::with_size_and_max(1, 1); { assert_eq!(1, str_pool.size()); let _rstring = str_pool.new_from("dog"); let _rstring2 = str_pool.new_from("cat"); assert_eq!(0, str_pool.size()); } assert_eq!(1, str_pool.size()); } #[test] fn test_detach() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let _string : String = str_pool.new().detach(); assert_eq!(0, str_pool.size()); } assert_eq!(0, str_pool.size()); } #[test] fn test_detach_rc() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let _string : String = str_pool.new_rc().detach(); assert_eq!(0, str_pool.size()); } assert_eq!(0, str_pool.size()); } #[test] fn test_attach() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let string: String = str_pool.new().detach(); assert_eq!(0, str_pool.size()); let _rstring: Recycled = str_pool.attach(string); } assert_eq!(1, str_pool.size()); } #[test] fn test_attach_rc() { let str_pool : Pool = Pool::with_size(1); { assert_eq!(1, str_pool.size()); let string: String = str_pool.new_rc().detach(); assert_eq!(0, str_pool.size()); let _rstring: RcRecycled = str_pool.attach_rc(string); } assert_eq!(1, str_pool.size()); } #[test] fn test_builder() { let pool = pool() .with(StartingSize(128)) .with(MaxSize(1_024)) .with(Supplier(|| String::with_capacity(16_000))) .build(); assert_eq!(pool.size(), 128); assert_eq!(pool.max_size(), 1_024); assert_eq!(pool.new().capacity(), 16_000); } #[test] fn test_new_from_iter(){ let vec_pool : Pool> = Pool::with_size(1); { let vec4 = vec_pool.new_from(0..4); assert_eq!(4, vec4.len()) } { let vec3 = vec_pool.new_from(0..3); assert_eq!(3, vec3.len()) } } }