use philbin::{
careful::{Nonce128, Nonce256},
easy::{Error, Result},
};
use similar_asserts::assert_eq;
#[test]
#[cfg(feature = "rand")]
fn generate_nonce_not_zeros() -> Result<()> {
assert_ne!(Nonce128::generate()?.into_array(), [0; Nonce128::BYTES]);
assert_ne!(Nonce256::generate()?.into_array(), [0; Nonce256::BYTES]);
Ok(())
}
#[test]
#[cfg(feature = "rand")]
fn generate_nonces_are_different() -> Result<()> {
assert_ne!(Nonce128::generate()?, Nonce128::generate()?);
assert_ne!(Nonce256::generate()?, Nonce256::generate()?);
Ok(())
}
#[test]
fn new_non_zero_input_works() {
assert!(Nonce128::new([1; Nonce128::BYTES]).is_ok());
assert!(Nonce256::new([1; Nonce256::BYTES]).is_ok());
}
#[test]
fn new_all_zero_key_rejected() {
assert_eq!(
actual: Nonce128::new([0; Nonce128::BYTES]),
expected: Err(Error::AllZeroNotAllowed));
}
#[test]
fn from_same_as_into_array() -> Result<()> {
let array128: [u8; Nonce128::BYTES] =
Nonce128::new([1; Nonce128::BYTES])?.into();
assert_eq!(
actual: array128,
expected: Nonce128::new([1; Nonce128::BYTES])?.into_array());
let array256: [u8; Nonce256::BYTES] =
Nonce256::new([1; Nonce256::BYTES])?.into();
assert_eq!(
actual: array256,
expected: Nonce256::new([1; Nonce256::BYTES])?.into_array());
Ok(())
}