示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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)));
            }
        }