X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=tests%2Ftest_lib.rs;h=af9bbe25b980e3372f1232e43ccea731b0536da2;hp=186ffd7dcf3756d8262f9aefdd6bfb0ff192525b;hb=b756cb948f64416c2f5fd280a971bc7daa3bddea;hpb=b6a408eb8944df04d6c6e876a9a00f6c425f47f1 diff --git a/tests/test_lib.rs b/tests/test_lib.rs index 186ffd7..af9bbe2 100644 --- a/tests/test_lib.rs +++ b/tests/test_lib.rs @@ -1,3 +1,6 @@ +#[macro_use] +extern crate global_counter; + use learning::*; #[test] @@ -7,45 +10,42 @@ fn test_longest() { assert_eq!(longest("abc", "defg"), "defg"); } -// FIXME: How to make this not unsafe? -static mut CALLED: u32 = 0; - #[test] fn test_cacher_int_int() { - unsafe { CALLED = 0; } + global_default_counter!(CALLED, u32); let mut cacher = Cacher::new(|x| { - unsafe { CALLED += 1; } + CALLED.inc(); 2 * x }); assert_eq!(cacher.value(1), 2); - unsafe { assert_eq!(CALLED, 1); } + assert_eq!(CALLED.get_cloned(), 1); // second time cached assert_eq!(cacher.value(1), 2); - unsafe { assert_eq!(CALLED, 1); } + assert_eq!(CALLED.get_cloned(), 1); // re-evaluated for new value assert_eq!(cacher.value(-2), -4); - unsafe { assert_eq!(CALLED, 2); } + assert_eq!(CALLED.get_cloned(), 2); // old arg still cached assert_eq!(cacher.value(1), 2); - unsafe { assert_eq!(CALLED, 2); } + assert_eq!(CALLED.get_cloned(), 2); } #[test] fn test_cacher_str_usize() { - unsafe { CALLED = 0; } + global_default_counter!(CALLED, u32); let mut cacher = Cacher::new(|x: &str| { - unsafe { CALLED += 1; } + CALLED.inc(); x.len() }); assert_eq!(cacher.value("abc"), 3); - unsafe { assert_eq!(CALLED, 1); } + assert_eq!(CALLED.get_cloned(), 1); // second time cached assert_eq!(cacher.value("abc"), 3); - unsafe { assert_eq!(CALLED, 1); } + assert_eq!(CALLED.get_cloned(), 1); // re-evaluated for new value assert_eq!(cacher.value("defg"), 4); - unsafe { assert_eq!(CALLED, 2); } + assert_eq!(CALLED.get_cloned(), 2); // old arg still cached assert_eq!(cacher.value("abc"), 3); - unsafe { assert_eq!(CALLED, 2); } + assert_eq!(CALLED.get_cloned(), 2); }