use log;
use micro_timer::timed;
#[test]
fn check_name_conflict() {
#[timed]
fn thing(_value: usize) -> usize {
let timer = 10;
timer
}
assert_eq!(thing(1), 10 as usize);
}
#[test]
fn test_mut() {
#[timed]
fn thing(mut value: usize) {
println!("{}", value);
value = 5;
println!("{}", value);
}
thing(1);
}
#[test]
fn test_ref_mut() {
#[timed]
fn thing(value: &mut String) {
value.push('a');
}
let mut a = String::new();
thing(&mut a);
assert_eq!("a", a);
}
#[test]
fn test_fn_mut() {
#[timed]
fn thing(value: &mut String) {
value.push('a');
}
let mut a = String::new();
thing(&mut a);
assert_eq!("a", a);
}
#[test]
fn test_mut_struct() {
#[timed]
fn thing(value: Thing) -> &mut String {
value.value
}
let mut s = String::new();
struct Thing<'a> {
value: &'a mut String,
}
thing(Thing { value: &mut s });
}
#[test]
fn test_mut_pointer() {
#[timed]
fn thing(value: *mut u8) {
unsafe { *value != 0u8 };
}
let mut s = String::new();
thing(s.as_mut_ptr());
}