X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=concepts%2Ftests%2Ftest_lib.rs;fp=concepts%2Ftests%2Ftest_lib.rs;h=af9bbe25b980e3372f1232e43ccea731b0536da2;hp=0000000000000000000000000000000000000000;hb=b653e9fe9d8492f2d4b5419721f7e00b392055f9;hpb=8c240f514e17c9a935f5f392e6a87779ae1c09e8 diff --git a/concepts/tests/test_lib.rs b/concepts/tests/test_lib.rs new file mode 100644 index 0000000..af9bbe2 --- /dev/null +++ b/concepts/tests/test_lib.rs @@ -0,0 +1,51 @@ +#[macro_use] +extern crate global_counter; + +use learning::*; + +#[test] +fn test_longest() { + assert_eq!(longest("abc", "de"), "abc"); + assert_eq!(longest("abc", "def"), "def"); + assert_eq!(longest("abc", "defg"), "defg"); +} + +#[test] +fn test_cacher_int_int() { + global_default_counter!(CALLED, u32); + let mut cacher = Cacher::new(|x| { + CALLED.inc(); + 2 * x + }); + assert_eq!(cacher.value(1), 2); + assert_eq!(CALLED.get_cloned(), 1); + // second time cached + assert_eq!(cacher.value(1), 2); + assert_eq!(CALLED.get_cloned(), 1); + // re-evaluated for new value + assert_eq!(cacher.value(-2), -4); + assert_eq!(CALLED.get_cloned(), 2); + // old arg still cached + assert_eq!(cacher.value(1), 2); + assert_eq!(CALLED.get_cloned(), 2); +} + +#[test] +fn test_cacher_str_usize() { + global_default_counter!(CALLED, u32); + let mut cacher = Cacher::new(|x: &str| { + CALLED.inc(); + x.len() + }); + assert_eq!(cacher.value("abc"), 3); + assert_eq!(CALLED.get_cloned(), 1); + // second time cached + assert_eq!(cacher.value("abc"), 3); + assert_eq!(CALLED.get_cloned(), 1); + // re-evaluated for new value + assert_eq!(cacher.value("defg"), 4); + assert_eq!(CALLED.get_cloned(), 2); + // old arg still cached + assert_eq!(cacher.value("abc"), 3); + assert_eq!(CALLED.get_cloned(), 2); +}