use super::*;
#[test]
fn test_fixed_big_int_set_bit() {
let mut bi = FixedBigInt::new(224);
bi.set_bit(0);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000000000000000000000001"
);
bi.lsh(1);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000000000000000000000002"
);
bi.lsh(0);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000000000000000000000002"
);
bi.set_bit(10);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000000000000000000000402"
);
bi.lsh(20);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000000000000000040200000"
);
bi.set_bit(80);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000000100000000000040200000"
);
bi.lsh(4);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000000000000001000000000000402000000"
);
bi.set_bit(130);
assert_eq!(
bi.to_string(),
"0000000000000000000000000000000400000000001000000000000402000000"
);
bi.lsh(64);
assert_eq!(
bi.to_string(),
"0000000000000004000000000010000000000004020000000000000000000000"
);
bi.set_bit(7);
assert_eq!(
bi.to_string(),
"0000000000000004000000000010000000000004020000000000000000000080"
);
bi.lsh(129);
assert_eq!(
bi.to_string(),
"0000000004000000000000000000010000000000000000000000000000000000"
);
for _ in 0..256 {
bi.lsh(1);
bi.set_bit(0);
}
assert_eq!(
bi.to_string(),
"00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
);
}