mpdclient 0.2.0

Rust interface to MPD using libmpdclient
Documentation
use mpdclient::connection::ProtoVerCmp;

use crate::common::setup_mpd;

mod common;

pub static MPD_PROTO_VER: (u32, u32, u32) = (0, 24, 0);

#[test]
fn version() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert_eq!(conn.version()?, MPD_PROTO_VER);
            Ok(())
        },
    )
}

#[test]
fn cmp_version() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert_eq!(conn.cmp_version(MPD_PROTO_VER)?, ProtoVerCmp::Equal);
            assert_eq!(conn.cmp_version((0, 23, 0))?, ProtoVerCmp::Newer);
            assert_eq!(conn.cmp_version((1, 30, 0))?, ProtoVerCmp::Older);
            Ok(())
        },
    )
}

#[test]
fn keepalive() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.set_keepalive(true).is_ok());
            Ok(())
        },
    )
}

#[test]
fn keepalive_disable() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.set_keepalive(true).is_ok());
            assert!(conn.set_keepalive(false).is_ok());
            Ok(())
        },
    )
}

#[test]
fn change_timeout() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.set_timeout(2001).is_ok());
            Ok(())
        },
    )
}

#[test]
fn change_timeout_zero() -> eyre::Result<()> {
    setup_mpd(
        |_| Ok(()),
        |conn| {
            assert!(conn.set_timeout(0).is_err());
            Ok(())
        },
    )
}

#[test]
fn playlists() -> eyre::Result<()> {
    setup_mpd(
        |setup| {
            setup.playlist()?;
            Ok(())
        },
        |conn| {
            assert_eq!(conn.stored_playlists()?.receive_all()?.len(), 1);
            Ok(())
        },
    )
}