#![feature(test)] #![allow(clippy::all)] use haz_alloc::Alloc; use std::alloc::Layout; static ALLOC: Alloc = Alloc::new(); #[test] fn test_small_to_huge() { unsafe { let mut p = ALLOC.alloc_zeroed(Layout::from_size_align(8, 8).unwrap()) as *mut u64; assert_eq!(*p, 0); assert_eq!(ALLOC.size(p as _), 8); *p = 100; p = ALLOC.realloc(p as _, Layout::from_size_align(16, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert_eq!(ALLOC.size(p as _), 16); p = ALLOC.realloc(p as _, Layout::from_size_align(10240, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert!(ALLOC.size(p as _) >= 10240); p = ALLOC.realloc(p as _, Layout::from_size_align(20000, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert!(ALLOC.size(p as _) >= 20000); p = ALLOC.realloc(p as _, Layout::from_size_align(327680, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert!(ALLOC.size(p as _) >= 327680); p = ALLOC.realloc(p as _, Layout::from_size_align(3276800, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); ALLOC.dealloc(p as _); } } #[test] fn test_huge_to_small() { unsafe { let mut p = ALLOC.alloc(Layout::from_size_align(3276800, 8).unwrap()) as *mut u64; assert!(ALLOC.size(p as _) >= 3276800); *p = 100; p = ALLOC.realloc(p as _, Layout::from_size_align(10240, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert!(ALLOC.size(p as _) >= 10240); p = ALLOC.realloc(p as _, Layout::from_size_align(16, 8).unwrap()) as *mut u64; assert_eq!(*p, 100); assert!(ALLOC.size(p as _) >= 16); ALLOC.dealloc(p as _); } }