private static void TestSongAnalyzerExpectErrorMessage(QueueItem queueItem, ILoaderContext loaderContext, string message) { var volumeDetector = new VolumeDetectorMock(); var task = new SongAnalyzerTask(queueItem, loaderContext, volumeDetector); var t = Task.Run(() => task.Run(CancellationToken.None)); var res = t.Result; Assert.IsFalse(res.Ok); Assert.AreSame(res.Error.Str, message); }
private static SongAnalyzerResult TestSongAnalyzerExpectOk(QueueItem queueItem) { var loaderContext = new LoaderContextMock(); var volumeDetector = new VolumeDetectorMock(); var task = new SongAnalyzerTask(queueItem, loaderContext, volumeDetector); var t = Task.Run(() => task.Run(CancellationToken.None)); var res = t.Result; Assert.IsTrue(res.Ok); return(res.Value); }
public void RunSongAnalyzerTaskTest() { var queueItem = new QueueItem(Constants.Resource1AYoutube, new MetaData(null)); var queueItemGain = new QueueItem(Constants.Resource1AYoutubeGain, new MetaData(null)); { // Item without gain gets the gain set var res = TestSongAnalyzerExpectOk(queueItem); var resource = res.Resource.BaseData; var gain = resource.Gain; Assert.IsTrue(gain.HasValue); Assert.AreEqual(gain.Value, VolumeDetectorMock.VolumeSet); } { // Item with gain set should not be changed var res = TestSongAnalyzerExpectOk(queueItemGain); var resource = res.Resource.BaseData; Assert.AreSame(queueItemGain.AudioResource, resource); } { // Failing load gets propagated var loaderContext = new LoaderContextMock { ShouldFailLoad = true }; TestSongAnalyzerExpectErrorMessage(queueItem, loaderContext, LoaderContextMock.LoadFailedMessage); } { // No restored link gets propagated var loaderContext = new LoaderContextMock { ShouldReturnNoRestoredLink = true }; TestSongAnalyzerExpectErrorMessage(queueItem, loaderContext, LoaderContextMock.NoRestoredLinkMessage); } { // Cancelling throws cancelled exception of volume detector var loaderContext = new LoaderContextMock(); var volumeDetector = new VolumeDetectorMock(); var task = new SongAnalyzerTask(queueItem, loaderContext, volumeDetector); Assert.Throws <TaskCanceledException>(() => task.Run(new CancellationToken(true))); } }