mpdclient 0.2.0

Rust interface to MPD using libmpdclient
Documentation
use crate::common::setup_mpd;

mod common;

#[test]
fn artists() -> eyre::Result<()> {
    setup_mpd(
        |setup| setup.song("song"),
        |conn| {
            assert_eq!(conn.stats()?.artists(), Some(2));
            Ok(())
        },
    )
}

#[test]
fn albums() -> eyre::Result<()> {
    setup_mpd(
        |setup| setup.song("song"),
        |conn| {
            assert_eq!(conn.stats()?.albums(), Some(1));
            Ok(())
        },
    )
}

#[test]
fn songs() -> eyre::Result<()> {
    setup_mpd(
        |setup| {
            setup.song("song")?;
            setup.song("song2")
        },
        |conn| {
            assert_eq!(conn.stats()?.songs().unwrap(), 2);
            Ok(())
        },
    )
}

#[test]
fn uptime() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.stats()?.uptime().is_none());
            std::thread::sleep(std::time::Duration::from_secs(1));
            assert!(conn.stats()?.uptime().unwrap() >= 1);
            Ok(())
        },
    )
}

#[test]
fn update_time() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.stats()?.db_update_time().is_some());
            Ok(())
        },
    )
}

#[test]
fn play_time() -> eyre::Result<()> {
    setup_mpd(
        |setup| setup.song("song"),
        |conn| {
            assert!(conn.stats()?.play_time().is_none());

            conn.queue().add("song.mp3")?;
            conn.player().play()?;
            std::thread::sleep(std::time::Duration::from_secs(1));
            conn.player().pause(true)?;

            assert!(conn.stats()?.play_time().unwrap() >= 1);
            Ok(())
        },
    )
}

#[test]
fn db_play_time() -> eyre::Result<()> {
    setup_mpd(
        |setup| setup.song("song"),
        |conn| {
            conn.queue().add("song.mp3")?;
            conn.player().play()?;
            conn.player().pause(true)?;

            assert_eq!(conn.stats()?.db_play_time().unwrap(), 30);
            Ok(())
        },
    )
}