Updated playlist model class. Added playlist tests.

This commit is contained in:
2025-02-17 23:22:28 -05:00
parent cccf0b57a5
commit 8cf4bb2804
4 changed files with 187 additions and 30 deletions

View File

@@ -0,0 +1,126 @@
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);
}
}