1
0
mirror of https://github.com/ZetaKebab/MpcNET.git synced 2024-09-16 05:30:09 +00:00

ListPlaylistInfo command and UnitTest.

This commit is contained in:
glucaci 2017-01-30 11:52:35 +01:00
parent 5ea5d24b7a
commit 679748b207
2 changed files with 49 additions and 0 deletions

View File

@ -40,6 +40,37 @@ namespace LibMpc
}
}
public class ListPlaylistInfo : IMpcCommand<IEnumerable<IMpdFile>>
{
private readonly string _playlistName;
public ListPlaylistInfo(string playlistName)
{
_playlistName = playlistName;
}
public string Value => string.Join(" ", "listplaylistinfo", $"\"{_playlistName}\"");
public IEnumerable<IMpdFile> FormatResponse(IList<KeyValuePair<string, string>> response)
{
var results = new List<MpdFile>();
foreach (var line in response)
{
if (line.Key.Equals("file"))
{
results.Add(new MpdFile(line.Value));
}
else
{
results.Last().AddTag(line.Key, line.Value);
}
}
return results;
}
}
/// <summary>
/// Prints a list of the playlist directory.
/// </summary>

View File

@ -3,6 +3,7 @@ using Newtonsoft.Json;
using Xunit;
using LibMpc;
using System.Linq;
using Xunit.Abstractions;
namespace LibMpcTest
{
@ -22,6 +23,23 @@ namespace LibMpcTest
Assert.True(response.Response.Body.Count().Equals(numberOfFiles));
}
[Theory]
[InlineData("Playlist One", 5)]
[InlineData("Playlist Two", 3)]
[InlineData("_My Playlist", 5)]
public async Task ListPlaylistInfoTest(string playlistName, int numberOfFiles)
{
var response = await Mpc.SendAsync(new Commands.Playlists.Stored.ListPlaylistInfo(playlistName));
TestOutput.WriteLine($"ListPlaylistTest (playlistName: {playlistName}) Result:");
TestOutput.WriteLine(JsonConvert.SerializeObject(response, Formatting.Indented));
Assert.True(response.Response.Body.Count().Equals(numberOfFiles));
Assert.True(response.Response.Body.All(item => !string.IsNullOrEmpty(item.Artist)));
Assert.True(response.Response.Body.All(item => !string.IsNullOrEmpty(item.Title)));
Assert.True(response.Response.Body.All(item => !string.IsNullOrEmpty(item.Date)));
}
[Fact]
public async Task ListPlaylistsTest()
{