use embedded_hal_mock::eh1::spi::{Mock, Transaction};
use ic_md::{CntCfg, CntSetup, IcMd};
#[test]
fn test_read_negative_value() {
let expectations = [
Transaction::transaction_start(),
Transaction::write(0x00),
Transaction::write(0x02),
Transaction::transaction_end(),
Transaction::transaction_start(),
Transaction::write(0x80 | 0x08),
Transaction::read_vec(vec![0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0]), Transaction::transaction_end(),
Transaction::transaction_start(),
Transaction::write(0x00),
Transaction::write(0x01),
Transaction::transaction_end(),
Transaction::transaction_start(),
Transaction::write(0x80 | 0x08),
Transaction::read_vec(vec![0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC0]), Transaction::transaction_end(),
];
let mut spi_device = Mock::new(&expectations);
let mut icmd = IcMd::new(&mut spi_device);
icmd.init().unwrap();
let counter_value = icmd.read_counter().unwrap();
let cnt_0 = counter_value
.get_cnt0()
.expect("Counter 0 should always be set up");
assert_eq!(cnt_0, -1);
let counter_setup = CntCfg::Cnt2Bit24(CntSetup::default(), CntSetup::default());
icmd.set_counter_config(counter_setup);
icmd.init().unwrap();
let counter_value = icmd.read_counter().unwrap();
let cnt_0 = counter_value
.get_cnt0()
.expect("Counter 0 should always be set up");
let cnt_1 = counter_value
.get_cnt1()
.expect("Counter 1 should be set up in this configuration");
assert_eq!(cnt_0, -3); assert_eq!(cnt_1, -1);
spi_device.done();
}