public SamplePlaylistViewModel() : base(new MockPlaylistView()) { var musicFiles = new[] { new SampleMusicFile(new MusicMetadata(new TimeSpan(0, 3, 45), 320000) { Artists = new[] { @"Culture Beat" }, Title = @"Serenity (Epilog)", }, @"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity"), new SampleMusicFile(new MusicMetadata(new TimeSpan(0, 2, 2), 320000) { Artists = new[] { "First artist", "Second artist" }, Title = "This track has a very long title. Let's see how the UI handles this.", }, ""), new SampleMusicFile(new MusicMetadata(new TimeSpan(1, 33, 0), 320000) { Artists = new string[0], Title = "", }, @"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity"), new MusicFile(x => { throw new InvalidOperationException("Sample exception."); }, @"C:\corruptfile.mp3") }; var playlistManager = new PlaylistManager(); playlistManager.AddItems(musicFiles.Select(x => new PlaylistItem(x))); PlaylistManager = playlistManager; playlistManager.CurrentItem = playlistManager.Items.First(); }
public void PreviousAndNextDuringAddRemoveItems() { var manager = new PlaylistManager(); manager.AddAndReplaceItems(threeItems); manager.CurrentItem = threeItems[0]; manager.NextItem(); Assert.IsTrue(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.RemoveItems(new[] { threeItems[2] })); Assert.IsFalse(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.AddItems(new[] { threeItems[2] })); Assert.IsTrue(manager.CanNextItem); manager.NextItem(); Assert.AreEqual(threeItems[2], manager.CurrentItem); manager.PreviousItem(); Assert.AreEqual(threeItems[1], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.RemoveItems(new[] { threeItems[0] })); Assert.IsFalse(manager.CanPreviousItem); }
public void TotalDurationWithMetadataLoading() { var manager = new PlaylistManager(); Assert.AreEqual(TimeSpan.Zero, manager.TotalDuration); var firstFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(10), 0), ""); manager.AddAndReplaceItems(new[] { new PlaylistItem(firstFile) }); var secondMetadata = new MusicMetadata(TimeSpan.FromSeconds(20), 0); var secondFile = new MusicFile(async x => { await Task.Delay(10); return secondMetadata; }, ""); manager.AddItems(new[] { new PlaylistItem(secondFile) }); Assert.IsTrue(manager.IsTotalDurationEstimated); Assert.AreEqual(TimeSpan.FromSeconds(20), manager.TotalDuration); AssertHelper.PropertyChangedEvent(manager, x => x.TotalDuration, () => secondFile.GetMetadataAsync().GetResult()); Assert.IsFalse(manager.IsTotalDurationEstimated); Assert.AreEqual(TimeSpan.FromSeconds(30), manager.TotalDuration); var thirdFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(30), 0), ""); AssertHelper.PropertyChangedEvent(manager, x => x.TotalDuration, () => manager.AddItems(new[] { new PlaylistItem(thirdFile) })); Assert.AreEqual(TimeSpan.FromSeconds(60), manager.TotalDuration); }
public void AddRemoveAndMoveItems() { var manager = new PlaylistManager(); Assert.AreEqual(0, manager.Items.Count); manager.AddItems(threeItems); Assert.AreEqual(3, manager.Items.Count); manager.RemoveItems(new[] { threeItems[2] }); Assert.AreEqual(2, manager.Items.Count); manager.AddAndReplaceItems(threeItems); Assert.AreEqual(3, manager.Items.Count); manager.MoveItems(2, new[] { manager.Items[0] }); Assert.IsTrue(manager.Items.SequenceEqual(new[] { threeItems[1], threeItems[2], threeItems[0] })); }