mirror of https://github.com/eldruin/ds323x-rs
Move macros to common file
parent
8546577469
commit
d2a675ef70
|
@ -1,4 +1,8 @@
|
||||||
extern crate embedded_hal;
|
extern crate embedded_hal;
|
||||||
|
extern crate ds323x;
|
||||||
|
use self::ds323x::{ Ds323x, interface, ic };
|
||||||
|
use hal::i2c::{ Mock as I2cMock, Transaction as I2cTrans };
|
||||||
|
use hal::spi::{ Mock as SpiMock, Transaction as SpiTrans };
|
||||||
|
|
||||||
pub const DEVICE_ADDRESS: u8 = 0b110_1000;
|
pub const DEVICE_ADDRESS: u8 = 0b110_1000;
|
||||||
|
|
||||||
|
@ -14,3 +18,42 @@ impl embedded_hal::digital::OutputPin for DummyOutputPin {
|
||||||
fn set_low(&mut self) {}
|
fn set_low(&mut self) {}
|
||||||
fn set_high(&mut self) {}
|
fn set_high(&mut self) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn new_ds3231(transactions: &[I2cTrans]) -> Ds323x<interface::I2cInterface<I2cMock>, ic::DS3231> {
|
||||||
|
Ds323x::new_ds3231(I2cMock::new(&transactions))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_ds3232(transactions: &[I2cTrans]) -> Ds323x<interface::I2cInterface<I2cMock>, ic::DS3232> {
|
||||||
|
Ds323x::new_ds3232(I2cMock::new(&transactions))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_ds3234(transactions: &[SpiTrans])
|
||||||
|
-> Ds323x<interface::SpiInterface<SpiMock, DummyOutputPin>, ic::DS3234> {
|
||||||
|
Ds323x::new_ds3234(SpiMock::new(&transactions), DummyOutputPin)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! get_test {
|
||||||
|
($name:ident, $method:ident, $create_method:ident, $expected:expr, $transaction:expr) => {
|
||||||
|
#[test]
|
||||||
|
fn $name() {
|
||||||
|
let transactions = [ $transaction ];
|
||||||
|
let mut dev = $create_method(&transactions);
|
||||||
|
assert_eq!($expected, dev.$method().unwrap());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! set_test {
|
||||||
|
($name:ident, $method:ident, $create_method:ident, $value:expr, $transaction:expr) => {
|
||||||
|
#[test]
|
||||||
|
fn $name() {
|
||||||
|
let transactions = [ $transaction ];
|
||||||
|
let mut dev = $create_method(&transactions);
|
||||||
|
dev.$method($value).unwrap();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,45 +1,9 @@
|
||||||
extern crate embedded_hal_mock as hal;
|
extern crate embedded_hal_mock as hal;
|
||||||
extern crate ds323x;
|
use hal::i2c::Transaction as I2cTrans;
|
||||||
use ds323x::{ Ds323x, interface, ic };
|
use hal::spi::Transaction as SpiTrans;
|
||||||
use hal::i2c::{ Mock as I2cMock, Transaction as I2cTrans };
|
|
||||||
use hal::spi::{ Mock as SpiMock, Transaction as SpiTrans };
|
|
||||||
mod common;
|
mod common;
|
||||||
use common::{ DEVICE_ADDRESS, Register, DummyOutputPin };
|
use common::{ DEVICE_ADDRESS, Register, new_ds3231,
|
||||||
|
new_ds3232, new_ds3234 };
|
||||||
fn new_ds3231(transactions: &[I2cTrans]) -> Ds323x<interface::I2cInterface<I2cMock>, ic::DS3231> {
|
|
||||||
Ds323x::new_ds3231(I2cMock::new(&transactions))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn new_ds3232(transactions: &[I2cTrans]) -> Ds323x<interface::I2cInterface<I2cMock>, ic::DS3232> {
|
|
||||||
Ds323x::new_ds3232(I2cMock::new(&transactions))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn new_ds3234(transactions: &[SpiTrans])
|
|
||||||
-> Ds323x<interface::SpiInterface<SpiMock, DummyOutputPin>, ic::DS3234> {
|
|
||||||
Ds323x::new_ds3234(SpiMock::new(&transactions), DummyOutputPin)
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! get_test {
|
|
||||||
($name:ident, $method:ident, $create_method:ident, $expected:expr, $transaction:expr) => {
|
|
||||||
#[test]
|
|
||||||
fn $name() {
|
|
||||||
let transactions = [ $transaction ];
|
|
||||||
let mut dev = $create_method(&transactions);
|
|
||||||
assert_eq!($expected, dev.$method().unwrap());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! set_test {
|
|
||||||
($name:ident, $method:ident, $create_method:ident, $value:expr, $transaction:expr) => {
|
|
||||||
#[test]
|
|
||||||
fn $name() {
|
|
||||||
let transactions = [ $transaction ];
|
|
||||||
let mut dev = $create_method(&transactions);
|
|
||||||
dev.$method($value).unwrap();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
get_test!(can_get_seconds_ds3231, get_seconds, new_ds3231, 1,
|
get_test!(can_get_seconds_ds3231, get_seconds, new_ds3231, 1,
|
||||||
I2cTrans::write_read(DEVICE_ADDRESS, vec![Register::SECONDS], vec![1]));
|
I2cTrans::write_read(DEVICE_ADDRESS, vec![Register::SECONDS], vec![1]));
|
||||||
|
|
Loading…
Reference in New Issue