126 lines
3.1 KiB
C#
126 lines
3.1 KiB
C#
using Harmonia.Core.Models;
|
|
using Shouldly;
|
|
using System.ComponentModel;
|
|
|
|
namespace Harmonia.Tests;
|
|
|
|
public class PlaylistTests
|
|
{
|
|
[Fact]
|
|
public void Add_Songs()
|
|
{
|
|
Playlist playlist = new("Test");
|
|
|
|
Song[] songs =
|
|
[
|
|
new Song() { FileName = "Song1.mp3" },
|
|
new Song() { FileName = "Song2.mp3" },
|
|
new Song() { FileName = "Song3.mp3" }
|
|
];
|
|
|
|
playlist.AddSongs(songs);
|
|
|
|
playlist.Songs.Count.ShouldBe(3);
|
|
|
|
Song song = new() { FileName = "Song4.mp3" };
|
|
playlist.AddSong(song);
|
|
|
|
playlist.Songs.Count.ShouldBe(4);
|
|
playlist.Songs[3].Song.FileName.ShouldBe("Song4.mp3");
|
|
|
|
Song song2 = new() { FileName = "Song5.mp3" };
|
|
playlist.AddSong(song2, 1);
|
|
|
|
playlist.Songs.Count.ShouldBe(5);
|
|
playlist.Songs[1].Song.FileName.ShouldBe("Song5.mp3");
|
|
}
|
|
|
|
[Fact]
|
|
public void Sort_Songs()
|
|
{
|
|
Playlist playlist = new("Test");
|
|
|
|
Song[] songs =
|
|
[
|
|
new Song() { FileName = "Song1.mp3", Album = "Album 2", TrackNumber = 2 },
|
|
new Song() { FileName = "Song2.mp3", Album = "Album 1", TrackNumber = 2 },
|
|
new Song() { FileName = "Song3.mp3", Album = "Album 2", TrackNumber = 1 },
|
|
new Song() { FileName = "Song4.mp3", Album = "Album 1", TrackNumber = 1 },
|
|
new Song() { FileName = "Song5.mp3", Album = "Album 2", TrackNumber = 3 },
|
|
];
|
|
|
|
playlist.AddSongs(songs);
|
|
|
|
SortOption[] sortOptions =
|
|
[
|
|
new("Album", ListSortDirection.Ascending),
|
|
new("TrackNumber", ListSortDirection.Ascending)
|
|
];
|
|
|
|
playlist.SortSongs([.. playlist.Songs], sortOptions);
|
|
|
|
string[] expectedSortedFileNames =
|
|
[
|
|
"Song4.mp3",
|
|
"Song2.mp3",
|
|
"Song3.mp3",
|
|
"Song1.mp3",
|
|
"Song5.mp3"
|
|
];
|
|
|
|
playlist.Songs.Select(x => x.Song.FileName).ToArray()
|
|
.ShouldBeEquivalentTo(expectedSortedFileNames);
|
|
}
|
|
|
|
[Fact]
|
|
public void Remove_Songs()
|
|
{
|
|
Playlist playlist = new("Test");
|
|
|
|
Song[] songs =
|
|
[
|
|
new Song() { FileName = "Song1.mp3" },
|
|
new Song() { FileName = "Song2.mp3" },
|
|
new Song() { FileName = "Song3.mp3" }
|
|
];
|
|
|
|
playlist.AddSongs(songs);
|
|
|
|
playlist.RemoveSong(1);
|
|
|
|
string[] expectedFileNames =
|
|
[
|
|
"Song1.mp3",
|
|
"Song3.mp3"
|
|
];
|
|
|
|
playlist.Songs.Select(x => x.Song.FileName).ToArray()
|
|
.ShouldBeEquivalentTo(expectedFileNames);
|
|
}
|
|
|
|
[Fact]
|
|
public void Lock_Playlist()
|
|
{
|
|
Playlist playlist = new("Test");
|
|
|
|
Song[] songs =
|
|
[
|
|
new Song() { FileName = "Song1.mp3" },
|
|
new Song() { FileName = "Song2.mp3" },
|
|
new Song() { FileName = "Song3.mp3" }
|
|
];
|
|
|
|
playlist.AddSongs(songs);
|
|
|
|
playlist.IsLocked = true;
|
|
|
|
Song song = new() { FileName = "Song4.mp3" };
|
|
playlist.AddSong(song);
|
|
|
|
playlist.Songs.Count.ShouldBe(3);
|
|
|
|
playlist.RemoveSong(0);
|
|
|
|
playlist.Songs.Count.ShouldBe(3);
|
|
}
|
|
} |