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