#![allow(clippy::cast_possible_truncation, reason = "test")]
use cmov::{Cmov, CmovEq};
use core::hint::black_box;
#[test]
fn u64_cmoveq() {
let n = 0x8200_0000_0000_0000u64;
let mut cond = 0u8;
n.cmoveq(&0, 1u8, &mut cond);
assert_eq!(cond, 0);
}
#[test]
fn cmovz_wrong_output() {
let condition: u32 = black_box(1 << 8);
let mut left = 1;
let right = 2;
debug_assert_eq!(0, condition as u8);
left.cmovz(&right, condition as u8);
assert_eq!(left, right);
}
#[test]
fn cmoveq_wrong_output_u16() {
let input = 1;
let mut output = 0;
let left: u32 = black_box(1 << 16);
let right: u32 = black_box(1 << 17);
debug_assert_eq!(left as u16, right as u16);
(left as u16).cmoveq(&(right as u16), input, &mut output);
assert_eq!(input, output);
}
#[test]
fn cmoveq_wrong_output_i16() {
let input = 1;
let mut output = 0;
let left: u32 = black_box(1 << 16);
let right: u32 = black_box(1 << 17);
debug_assert_eq!(left as i16, right as i16);
(left as i16).cmoveq(&(right as i16), input, &mut output);
assert_eq!(input, output);
}