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