From e92ef0e28b266cad47337357ab2e25134fa9f1c9 Mon Sep 17 00:00:00 2001 From: Brian Bicknell Date: Wed, 9 Sep 2026 09:34:22 -0400 Subject: [PATCH] Added more playlist tests. --- Harmonia.Tests/PlaylistTests.cs | 146 ++++++++++++++++++++++++++++++-- 1 file changed, 139 insertions(+), 7 deletions(-) diff --git a/Harmonia.Tests/PlaylistTests.cs b/Harmonia.Tests/PlaylistTests.cs index dd6f773..ea8ed09 100644 --- a/Harmonia.Tests/PlaylistTests.cs +++ b/Harmonia.Tests/PlaylistTests.cs @@ -8,6 +8,32 @@ namespace Harmonia.Tests; public class PlaylistTests { + [Fact] + public void Create_Playlist() + { + Playlist playlist = new(); + playlist.Name.ShouldBeNull(); + playlist.Songs.ShouldBeEmpty(); + } + + [Fact] + public void Create_Playlist_With_Name() + { + Playlist playlist = new("My Playlist"); + playlist.Name.ShouldBe("My Playlist"); + playlist.Songs.ShouldBeEmpty(); + } + + [Fact] + public void Set_Playlist_Name() + { + Playlist playlist = new(); + playlist.Name.ShouldBeNull(); + + playlist.SetName("My Playlist"); + playlist.Name.ShouldBe("My Playlist"); + } + [Fact] public void Add_Songs() { @@ -37,6 +63,70 @@ public class PlaylistTests playlist.Songs[1].Song.FileName.ShouldBe("Song5.mp3"); } + [Fact] + public void Move_Songs() + { + Playlist playlist = new(); + + Song[] songs = + [ + new Song() { FileName = "Song1.mp3" }, + new Song() { FileName = "Song2.mp3" }, + new Song() { FileName = "Song3.mp3" }, + new Song() { FileName = "Song4.mp3" }, + new Song() { FileName = "Song5.mp3" }, + ]; + + playlist.AddSongs(songs); + + playlist.MoveSong(2, 3); + + string[] expectedFileNames = + [ + "Song1.mp3", + "Song2.mp3", + "Song4.mp3", + "Song3.mp3", + "Song5.mp3" + ]; + + playlist.Songs.Select(x => x.Song.FileName).ToArray() + .ShouldBeEquivalentTo(expectedFileNames); + } + + [Fact] + public void Remove_Duplicate_Songs() + { + Playlist playlist = new(); + + Song[] songs = + [ + new Song() { FileName = "Song1.mp3" }, + new Song() { FileName = "Song2.mp3" }, + new Song() { FileName = "Song3.mp3" }, + new Song() { FileName = "Song4.mp3" }, + new Song() { FileName = "Song5.mp3" }, + new Song() { FileName = "Song2.mp3" }, + new Song() { FileName = "Song3.mp3" }, + ]; + + playlist.AddSongs(songs); + + playlist.RemoveDuplicateSongs(); + + string[] expectedFileNames = + [ + "Song1.mp3", + "Song2.mp3", + "Song3.mp3", + "Song4.mp3", + "Song5.mp3" + ]; + + playlist.Songs.Select(x => x.Song.FileName).ToArray() + .ShouldBeEquivalentTo(expectedFileNames); + } + [Fact] public void Sort_Songs() { @@ -74,6 +164,34 @@ public class PlaylistTests .ShouldBeEquivalentTo(expectedSortedFileNames); } + [Fact] + public void Reverse_Songs() + { + Playlist playlist = new(); + + Song[] songs = + [ + new Song() { FileName = "Song1.mp3" }, + new Song() { FileName = "Song2.mp3" }, + new Song() { FileName = "Song3.mp3" } + ]; + + playlist.AddSongs(songs); + + PlaylistSong[] playlistSongs = [.. playlist.Songs]; + + playlist.Reverse(playlistSongs); + + string[] expectedReversedFileNames = + [ + "Song3.mp3", + "Song2.mp3", + "Song1.mp3" + ]; + playlist.Songs.Select(x => x.Song.FileName).ToArray() + .ShouldBeEquivalentTo(expectedReversedFileNames); + } + [Fact] public void Remove_Songs() { @@ -101,7 +219,7 @@ public class PlaylistTests } [Fact] - public void Lock_Playlist() + public void Lock_And_Unlock_Playlist() { Playlist playlist = new(); @@ -114,8 +232,12 @@ public class PlaylistTests playlist.AddSongs(songs); + playlist.IsLocked.ShouldBeFalse(); + playlist.Lock(); + playlist.IsLocked.ShouldBeTrue(); + Song song = new() { FileName = "Song4.mp3" }; playlist.AddSong(song); @@ -124,11 +246,21 @@ public class PlaylistTests playlist.RemoveSong(0); playlist.Songs.Count.ShouldBe(3); - } - //public void Get_Playlists() - //{ - // //PlaylistRepository playlistRepository = new(); - // //playlistRepository.Get().Returns() - //} + playlist.MoveSong(0, 2); + + string[] expectedMovedFileNamesOnLockedPlaylist = + [ + "Song1.mp3", + "Song2.mp3", + "Song3.mp3" + ]; + + playlist.Songs.Select(x => x.Song.FileName).ToArray() + .ShouldBeEquivalentTo(expectedMovedFileNamesOnLockedPlaylist); + + playlist.Unlock(); + + playlist.IsLocked.ShouldBeFalse(); + } } \ No newline at end of file