| #![cfg(test)] |
| |
| use super::mem::arena::{upb_Arena_Free, upb_Arena_New, RawArena}; |
| |
| #[macro_export] |
| /// Force a compiler error if the passed in function is not linked. |
| macro_rules! assert_linked { |
| ($($vals:tt)+) => { |
| let _ = std::hint::black_box($($vals)+ as *const ()); |
| } |
| } |
| |
| pub struct TestArena { |
| raw: RawArena, |
| } |
| |
| impl TestArena { |
| pub fn new() -> Self { |
| TestArena { raw: unsafe { upb_Arena_New() }.unwrap() } |
| } |
| pub fn raw(&self) -> RawArena { |
| self.raw |
| } |
| } |
| |
| impl std::ops::Drop for TestArena { |
| fn drop(&mut self) { |
| unsafe { upb_Arena_Free(self.raw) } |
| } |
| } |