47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
|
#![allow(clippy::uninlined_format_args)]
|
||
|
//! The integration tests seem to always have `std` linked, so things that would
|
||
|
//! depend on that can go here.
|
||
|
|
||
|
use bytemuck::*;
|
||
|
|
||
|
#[test]
|
||
|
fn test_transparent_vtabled() {
|
||
|
use core::fmt::Display;
|
||
|
|
||
|
#[repr(transparent)]
|
||
|
struct DisplayTraitObj(dyn Display);
|
||
|
|
||
|
unsafe impl TransparentWrapper<dyn Display> for DisplayTraitObj {}
|
||
|
|
||
|
impl Display for DisplayTraitObj {
|
||
|
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||
|
self.0.fmt(f)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let v = DisplayTraitObj::wrap_ref(&5i32);
|
||
|
let s = format!("{}", v);
|
||
|
assert_eq!(s, "5");
|
||
|
|
||
|
let mut x = 100i32;
|
||
|
let v_mut = DisplayTraitObj::wrap_mut(&mut x);
|
||
|
let s = format!("{}", v_mut);
|
||
|
assert_eq!(s, "100");
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[cfg(feature = "extern_crate_alloc")]
|
||
|
fn test_large_box_alloc() {
|
||
|
type SuperPage = [[u8; 4096]; 4096];
|
||
|
let _: Box<SuperPage> = try_zeroed_box().unwrap();
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[cfg(feature = "extern_crate_alloc")]
|
||
|
fn test_zero_sized_box_alloc() {
|
||
|
#[repr(align(4096))]
|
||
|
struct Empty;
|
||
|
unsafe impl Zeroable for Empty {}
|
||
|
let _: Box<Empty> = try_zeroed_box().unwrap();
|
||
|
}
|