1 extern crate ralloc; 2 3 #[global_allocator] 4 static ALLOCATOR: ralloc::Allocator = ralloc::Allocator; 5 6 mod util; 7 8 use std::ptr; 9 10 #[test] 11 fn manual() { 12 util::multiply(|| { 13 let ptr1 = ralloc::alloc(30, 3); 14 let ptr2 = ralloc::alloc(500, 20); 15 16 assert_eq!(0, ptr1 as usize % 3); 17 assert_eq!(0, ptr2 as usize % 20); 18 19 unsafe { 20 util::acid(|| { 21 ptr::write_bytes(ptr1, 0x22, 30); 22 }); 23 util::acid(|| { 24 for i in 0..500 { 25 *ptr2.offset(i) = i as u8; 26 } 27 }); 28 29 assert_eq!(*ptr1, 0x22); 30 assert_eq!(*ptr1.offset(5), 0x22); 31 32 assert_eq!(*ptr2, 0); 33 assert_eq!(*ptr2.offset(15), 15); 34 35 let ptr1 = ralloc::realloc(ptr1, 30, 300, 3); 36 for i in 0..300 { 37 util::acid(|| { 38 *ptr1.offset(i) = i as u8; 39 }); 40 } 41 assert_eq!(*ptr1, 0); 42 assert_eq!(*ptr1.offset(200), 200); 43 44 util::acid(|| { 45 ralloc::free(ptr1, 30); 46 ralloc::free(ptr2, 500); 47 }); 48 } 49 }); 50 } 51