5 assert_eq!(longest("abc", "de"), "abc");
6 assert_eq!(longest("abc", "def"), "def");
7 assert_eq!(longest("abc", "defg"), "defg");
10 // FIXME: How to make this not unsafe?
11 static mut CALLED: u32 = 0;
14 fn test_cacher_int_int() {
15 unsafe { CALLED = 0; }
16 let mut cacher = Cacher::new(|x| {
17 unsafe { CALLED += 1; }
20 assert_eq!(cacher.value(1), 2);
21 unsafe { assert_eq!(CALLED, 1); }
23 assert_eq!(cacher.value(1), 2);
24 unsafe { assert_eq!(CALLED, 1); }
25 // re-evaluated for new value
26 assert_eq!(cacher.value(-2), -4);
27 unsafe { assert_eq!(CALLED, 2); }
28 // old arg still cached
29 assert_eq!(cacher.value(1), 2);
30 unsafe { assert_eq!(CALLED, 2); }
34 fn test_cacher_str_usize() {
35 unsafe { CALLED = 0; }
36 let mut cacher = Cacher::new(|x: &str| {
37 unsafe { CALLED += 1; }
40 assert_eq!(cacher.value("abc"), 3);
41 unsafe { assert_eq!(CALLED, 1); }
43 assert_eq!(cacher.value("abc"), 3);
44 unsafe { assert_eq!(CALLED, 1); }
45 // re-evaluated for new value
46 assert_eq!(cacher.value("defg"), 4);
47 unsafe { assert_eq!(CALLED, 2); }
48 // old arg still cached
49 assert_eq!(cacher.value("abc"), 3);
50 unsafe { assert_eq!(CALLED, 2); }