use mpdclient::{Connection, connection::idle::IdleReturn};
use crate::common::setup_mpd;
mod common;
#[tokio::test(flavor = "multi_thread")]
#[ignore = "new setup"]
async fn idle() -> eyre::Result<()> {
let th = tokio::spawn(async move {
let connection = Connection::new().unwrap();
let idle = connection.idle().idle().unwrap();
assert_eq!(idle, vec![IdleReturn::Mixer]);
});
std::thread::sleep(std::time::Duration::from_millis(10));
let connection2 = Connection::new().unwrap();
connection2.mixer().set_volume(100).unwrap();
th.await?;
Ok(())
}
#[tokio::test(flavor = "multi_thread")]
#[ignore = "new setup"]
async fn idle_mask() -> eyre::Result<()> {
let th = tokio::spawn(async move {
let connection = Connection::new().unwrap();
let idle = connection.idle().idle_mask(&[IdleReturn::Player]).unwrap();
assert_eq!(idle, vec![IdleReturn::Player]);
});
std::thread::sleep(std::time::Duration::from_millis(10));
let connection2 = Connection::new()?;
connection2.mixer().set_volume(100)?;
connection2.player().play()?;
connection2.player().pause(true)?;
th.await?;
Ok(())
}
#[test]
fn idle_set() -> eyre::Result<()> {
setup_mpd(
|_| Ok(()),
|conn| {
let conn2 = Connection::connect(conn.settings()?.host().as_deref(), 0, 0)?;
conn.idle().set()?;
std::thread::sleep(std::time::Duration::from_millis(10));
conn2.mixer().set_volume(100)?;
assert_eq!(conn.idle().unset()?, vec![IdleReturn::Mixer]);
Ok(())
},
)
}