xref: /relibc/ralloc/tests/manual.rs (revision 6e3426f3cac2a1c080eecaf99d121c7729ebf92a)
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