mpdclient 0.2.0

Rust interface to MPD using libmpdclient
Documentation
use mpdclient::Entity;

use crate::common::setup_mpd;

mod common;

#[test]
fn path() -> eyre::Result<()> {
    setup_mpd(
        |setup| {
            setup.directory()?;
            setup.song("dir/song.mp3")
        },
        |conn| {
            let db = conn.database();
            let mut list = db.list_all(None)?;
            let Entity::Directory(dir) = list
                .find(|e| matches!(e.as_ref().unwrap(), Entity::Directory(_)))
                .unwrap()?
            else {
                unreachable!();
            };
            assert_eq!(dir.path().to_string_lossy().to_string(), "dir");
            Ok(())
        },
    )
}

#[test]
fn last_modified() -> eyre::Result<()> {
    setup_mpd(
        |setup| {
            setup.directory()?;
            setup.song("dir/song.mp3")
        },
        |conn| {
            let db = conn.database();
            let mut list = db.list_all(None)?;
            let Entity::Directory(dir) = list
                .find(|e| matches!(e.as_ref().unwrap(), Entity::Directory(_)))
                .unwrap()?
            else {
                unreachable!();
            };
            assert!(dir.last_modified().is_none());

            Ok(())
        },
    )
}