1 use std::cell::RefCell;
7 assert_eq!(longest("abc", "de"), "abc");
8 assert_eq!(longest("abc", "def"), "def");
9 assert_eq!(longest("abc", "defg"), "defg");
13 fn test_cacher_int_int() {
14 let called = RefCell::new(0);
15 let mut cacher = Cacher::new(|x| {
16 *(called.borrow_mut()) += 1;
19 assert_eq!(cacher.value(1), 2);
20 assert_eq!(*called.borrow(), 1);
22 assert_eq!(cacher.value(1), 2);
23 assert_eq!(*called.borrow(), 1);
24 // re-evaluated for new value
25 assert_eq!(cacher.value(-2), -4);
26 assert_eq!(*called.borrow(), 2);
27 // old arg still cached
28 assert_eq!(cacher.value(1), 2);
29 assert_eq!(*called.borrow(), 2);
33 fn test_cacher_str_usize() {
34 let called = RefCell::new(0);
35 let mut cacher = Cacher::new(|x: &str| {
36 *(called.borrow_mut()) += 1;
39 assert_eq!(cacher.value("abc"), 3);
40 assert_eq!(*called.borrow(), 1);
42 assert_eq!(cacher.value("abc"), 3);
43 assert_eq!(*called.borrow(), 1);
44 // re-evaluated for new value
45 assert_eq!(cacher.value("defg"), 4);
46 assert_eq!(*called.borrow(), 2);
47 // old arg still cached
48 assert_eq!(cacher.value("abc"), 3);
49 assert_eq!(*called.borrow(), 2);