use rigctld::{Daemon, Mode, Rig};
use tokio::runtime::Runtime;
use tokio::time::{sleep, Duration};
macro_rules! tokio {
($e:expr) => {
Runtime::new().unwrap().block_on(async { $e })
};
}
#[test]
fn lifecycle() {
tokio!({
let daemon = Daemon::default();
let mut rigctld = daemon.spawn().await.unwrap();
sleep(Duration::from_millis(250)).await;
assert!(rigctld.is_running().unwrap());
let mut rig = Rig::new(daemon.get_host(), daemon.get_port());
rig.connect().await.unwrap();
assert_eq!(rig.disconnect(), true);
rigctld.kill().await.unwrap();
})
}
#[test]
fn deamon_not_running() {
tokio!({
let mut rig = Rig::new("127.0.0.1", 4532);
assert_eq!(rig.connect().await.is_err(), true);
})
}
#[test]
fn rig_frequency() {
tokio!({
let daemon = Daemon::default();
let mut rigctld = daemon.spawn().await.unwrap();
sleep(Duration::from_millis(250)).await;
let mut rig = Rig::new(daemon.get_host(), daemon.get_port());
rig.connect().await.unwrap();
let freq_before = rig.get_frequency().await.unwrap();
rig.set_frequency(7123000).await.unwrap();
let freq_after = rig.get_frequency().await.unwrap();
assert_ne!(freq_before, 7123000);
assert_eq!(freq_after, 7123000);
rigctld.kill().await.unwrap();
})
}
#[test]
fn rig_mode() {
tokio!({
let daemon = Daemon::default();
let mut rigctld = daemon.spawn().await.unwrap();
sleep(Duration::from_millis(250)).await;
let mut rig = Rig::new(daemon.get_host(), daemon.get_port());
rig.connect().await.unwrap();
let (mode_before, pb_before) = rig.get_mode().await.unwrap();
rig.set_mode(Mode::LSB, 1234).await.unwrap();
let (mode_after, pb_after) = rig.get_mode().await.unwrap();
assert_ne!(mode_before, Mode::LSB);
assert_ne!(pb_before, 1234);
assert_eq!(mode_after, Mode::LSB);
assert_eq!(pb_after, 1234);
rigctld.kill().await.unwrap();
})
}
#[test]
#[ignore]
fn device_icom_ic7200() {
tokio!({
let daemon = Daemon::default()
.set_model(3061)
.set_serial_speed(19200)
.set_civ_address(0x76)
.set_rig_file("/dev/ttyUSB0".into());
let mut rigctld = daemon.spawn().await.unwrap();
sleep(Duration::from_millis(1000)).await;
let mut rig = Rig::new(daemon.get_host(), daemon.get_port());
rig.connect().await.unwrap();
rig.get_frequency().await.unwrap();
rig.get_mode().await.unwrap();
rigctld.kill().await.unwrap();
})
}