mirror of
https://github.com/bspeice/qadapt
synced 2024-11-14 10:08:08 -05:00
43 lines
821 B
Rust
43 lines
821 B
Rust
use qadapt::assert_no_alloc;
|
|
use qadapt::QADAPT;
|
|
|
|
#[global_allocator]
|
|
static Q: QADAPT = QADAPT;
|
|
|
|
#[test]
|
|
fn math() {
|
|
let x = assert_no_alloc!(2 + 2);
|
|
assert_eq!(x, 4);
|
|
}
|
|
|
|
// Because the `exit_protected` guard is never run, the compiler
|
|
// warns us of unreachable code
|
|
#[allow(unreachable_code)]
|
|
fn early_return() -> usize {
|
|
assert_no_alloc!(return 8)
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic]
|
|
fn early_return_boxing() {
|
|
// The release-mode compiler is able to optimize through the Box
|
|
if cfg!(debug_assertions) {
|
|
Box::new(early_return());
|
|
} else {
|
|
panic!("Intentional")
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic]
|
|
fn list_push() {
|
|
let mut x = Vec::with_capacity(1);
|
|
x.push(1);
|
|
|
|
if cfg!(debug_assertions) {
|
|
assert_no_alloc!(x.push(12))
|
|
} else {
|
|
panic!("Intentional")
|
|
}
|
|
}
|