use embedded_hal_mock::{
delay::MockNoop as NoopDelay,
pin::{Mock as PinMock, State as PinState, Transaction as PinTrans},
};
use si4703::{
reset_and_select_i2c_method1, reset_and_select_i2c_method1_with_gpio3,
reset_and_select_i2c_method2,
};
#[test]
fn can_reset_method1() {
let mut rst = PinMock::new(&[PinTrans::set(PinState::Low), PinTrans::set(PinState::High)]);
let mut sda = PinMock::new(&[PinTrans::set(PinState::Low)]);
let mut delay = NoopDelay::new();
reset_and_select_i2c_method1(&mut rst, &mut sda, &mut delay).unwrap();
rst.done();
sda.done()
}
#[test]
fn can_reset_method1_with_gpio3() {
let mut rst = PinMock::new(&[PinTrans::set(PinState::Low), PinTrans::set(PinState::High)]);
let mut sda = PinMock::new(&[PinTrans::set(PinState::Low)]);
let mut gpio3 = PinMock::new(&[PinTrans::set(PinState::Low)]);
let mut delay = NoopDelay::new();
reset_and_select_i2c_method1_with_gpio3(&mut rst, &mut sda, &mut gpio3, &mut delay).unwrap();
rst.done();
sda.done();
gpio3.done()
}
#[test]
fn can_reset_method2() {
let mut rst = PinMock::new(&[PinTrans::set(PinState::Low), PinTrans::set(PinState::High)]);
let mut gpio1 = PinMock::new(&[PinTrans::set(PinState::High)]);
let mut gpio3 = PinMock::new(&[PinTrans::set(PinState::High)]);
let mut delay = NoopDelay::new();
reset_and_select_i2c_method2(&mut rst, &mut gpio1, &mut gpio3, &mut delay).unwrap();
rst.done();
gpio1.done();
gpio3.done()
}