use compact_arena::{in_tiny_arena, mk_tiny_arena};
#[cfg(not(any(miri, target_os = "windows")))]
#[test]
fn add_65536_objects() {
in_tiny_arena!(arena, {
for _ in 0..=65535 {
arena.add(42); }
});
}
#[cfg(not(miri))] #[test]
#[should_panic(expected = "Capacity Exceeded")]
fn add_65537_objects() {
in_tiny_arena!(arena, {
for _ in 0..=65535 {
arena.add(42); }
arena.add(65537); });
}
#[test]
fn two_tiny_arenas() {
std::thread::Builder::new()
.stack_size(32 * 1024 * 1024)
.spawn(|| {
assert_eq!(
3,
in_tiny_arena!(a, {
in_tiny_arena!(b, {
let x = a.add(1usize);
let y = b.add(2usize);
a[x] + b[y]
})
})
)
})
.unwrap()
.join()
.unwrap();
}
#[test]
fn two_tiny_arenas_one_scope() {
std::thread::Builder::new()
.stack_size(32 * 1024 * 1024)
.spawn(|| {
mk_tiny_arena!(a);
mk_tiny_arena!(b);
let x = a.add(1usize);
let y = b.add(2usize);
assert_eq!(3, a[x] + b[y])
})
.unwrap()
.join()
.unwrap();
}