blob: 27a023f99ecb0df4bb5ed53726f200b1c0da65f9 [file] [log] [blame]
use alloc::{
borrow::{
Borrow,
BorrowMut,
Cow,
},
vec::Vec,
};
use core::{
convert::TryFrom,
fmt::Debug,
hash::Hash,
iter::FromIterator,
ops::{
Deref,
DerefMut,
Index,
Range,
},
panic::{
RefUnwindSafe,
UnwindSafe,
},
};
#[cfg(feature = "std")]
use std::io::Write;
use static_assertions::*;
use crate::prelude::*;
#[test]
fn alloc_impl() {
assert_impl_all!(BitVec<usize, Lsb0>:
AsMut<BitSlice<usize, Lsb0>>,
AsMut<BitVec<usize, Lsb0>>,
AsRef<BitSlice<usize, Lsb0>>,
AsRef<BitVec<usize, Lsb0>>,
Borrow<BitSlice<usize, Lsb0>>,
BorrowMut<BitSlice<usize, Lsb0>>,
Clone,
Debug,
Default,
Deref,
DerefMut,
Drop,
Eq,
Extend<&'static bool>,
Extend<bool>,
From<&'static BitSlice<usize, Lsb0>>,
From<&'static mut BitSlice<usize, Lsb0>>,
From<BitArray<[usize; 20], Lsb0>>,
From<BitBox<usize, Lsb0>>,
From<Cow<'static, BitSlice<usize, Lsb0>>>,
FromIterator<bool>,
Hash,
Index<usize>,
Index<Range<usize>>,
IntoIterator,
Ord,
PartialEq<&'static BitSlice<usize, Lsb0>>,
PartialEq<BitArray<[usize; 20], Lsb0>>,
RefUnwindSafe,
Send,
Sync,
TryFrom<Vec<usize>>,
Unpin,
UnwindSafe,
);
}
#[test]
#[cfg(feature = "std")]
fn std_impl() {
assert_impl_all!(BitVec<usize, Lsb0>: Write);
}
#[test]
fn format() {
#[cfg(not(feature = "std"))]
use alloc::format;
let bv = bitvec![0, 0, 1, 1, 0, 1, 0, 1];
assert_eq!(format!("{}", bv), format!("{}", bv.as_bitslice()));
assert_eq!(format!("{:b}", bv), format!("{:b}", bv.as_bitslice()));
assert_eq!(format!("{:o}", bv), format!("{:o}", bv.as_bitslice()));
assert_eq!(format!("{:x}", bv), format!("{:x}", bv.as_bitslice()));
assert_eq!(format!("{:X}", bv), format!("{:X}", bv.as_bitslice()));
let text = format!("{:?}", bitvec![u8, Msb0; 0, 1, 0, 0]);
assert!(
text.starts_with("BitVec<u8, bitvec::order::Msb0> { addr: 0x"),
"{}",
text
);
assert!(
text.contains(", head: 000, bits: 4, capacity: "),
"{}",
text
);
assert!(text.ends_with(" } [0, 1, 0, 0]"), "{}", text);
}