public void TestAutoUpdateLyrics()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();
            lfm.AutoUpdateLyrics = true;
            lfm.RegisterSource(new LyricsSourceLyrdb());
            lfm.RegisterSource(new LyricsSourceLyricsFly());

            List<Song> songs = this.GetSongs();

            foreach (Song s in songs)
                Assert.IsNull(s.Lyrics);

            Song song1 = new TestSong("Test Title 1", "Some Artist Name", "Beauty and the Beat", "Pop");
            song1.Lyrics = "Original Lyrics";
            songs.Add(song1);

            lfm.Queue(songs);

            lfm.Start();
            lfm.WaitUntilFinished();

            foreach (Song s in songs)
                Assert.AreNotEqual("", s.Lyrics);

            // This song cannot be found and its lyrics should not be changed
            Assert.AreEqual("Original Lyrics", song1.Lyrics);
        }
        public void TestCancelledStatusEvents()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();
            lfm.RegisterSource(new AlwaysFailLyricsSource());
            lfm.RegisterSource(new AlwaysSuccessLyricsSource());
            lfm.StatusEvent += new EventHandler<LyricsFetchStatusEventArgs>(this.HandleCancelledStatusEvent);

            cancelledEventCount = 0;

            lfm.Queue(s1);
            lfm.Queue(s2);
            lfm.CancelAll();

            Assert.AreEqual(cancelledEventCount, 2);
        }
        public void TestDoneStatusEvents()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();
            lfm.RegisterSource(new AlwaysFailLyricsSource());
            lfm.RegisterSource(new AlwaysSuccessLyricsSource());
            lfm.StatusEvent += new EventHandler<LyricsFetchStatusEventArgs>(this.HandleDoneStatusEvent);
            doneEventCount = 0;

            lfm.Start();
            lfm.Queue(s1);
            lfm.Queue(s2);
            lfm.WaitUntilFinished();

            Assert.AreEqual(2, doneEventCount);
        }
 private LyricsFetchManager CreateManager()
 {
     LyricsFetchManager lfm = new LyricsFetchManager();
     lfm.RegisterSource(new AlwaysFailLyricsSource());
     lfm.RegisterSource(new AlwaysSuccessLyricsSource());
     return lfm;
 }
        public void TestStatusEvents()
        {
            this.lfm = new LyricsFetchManager();
            this.lfm.RegisterSource(new AlwaysFailLyricsSource());
            this.lfm.RegisterSource(new AlwaysSuccessLyricsSource());

            this.lfm.StatusEvent += new EventHandler<LyricsFetchStatusEventArgs>(this.HandleStatusEvent);
            this.statusEventCount = 0;
            this.lastStatus = LyricsFetchStatus.Undefined;

            this.lfm.Queue(s1);
            this.lfm.Queue(s2);
            this.lfm.Start();
            this.lfm.WaitUntilFinished();

            // Each song should trigger: Waiting, (Fetching, SourceDone) x 2, Done
            Assert.AreEqual(12, this.statusEventCount);
            Assert.AreEqual(LyricsFetchStatus.Done, this.lastStatus);
        }
        public void TestRealLyricsFetch()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();
            lfm.StatusEvent += new EventHandler<LyricsFetchStatusEventArgs>(this.HandleDoneStatusEvent2);
            lfm.RegisterSource(new LyricsSourceLyrdb());
            lfm.RegisterSource(new LyricsSourceLyricsFly());

            List<Song> songs = this.GetSongs();

            foreach (Song s in songs)
                Assert.IsNull(s.Lyrics);

            lfm.Queue(songs);

            lfm.Start();
            lfm.WaitUntilFinished();

            foreach (Song s in songs)
                Assert.AreNotEqual("", s.Lyrics);
        }
 public void TestQueueAndCancelAll()
 {
     LyricsFetchManager lfm = new LyricsFetchManager();
     Assert.AreEqual(lfm.CountWaiting, 0);
     lfm.Queue(s1);
     lfm.Queue(s2);
     lfm.CancelAll();
     Assert.AreEqual(lfm.CountWaiting, 0);
 }
        public void TestGetStatus2()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();
            lfm.RegisterSource(new AlwaysFailLyricsSource());
            lfm.RegisterSource(new AlwaysSuccessLyricsSource());

            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s2));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s3));

            lfm.Queue(s1);
            lfm.Queue(s2);
            lfm.Queue(s3);
            Assert.AreEqual(LyricsFetchStatus.Waiting, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.Waiting, lfm.GetStatus(s2));
            Assert.AreEqual(LyricsFetchStatus.Waiting, lfm.GetStatus(s3));

            lfm.Start();
            lfm.WaitUntilFinished();

            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s2));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s3));
        }
        public void TestGetStatus()
        {
            LyricsFetchManager lfm = new LyricsFetchManager();

            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s2));

            lfm.Queue(s1);
            lfm.Queue(s2);
            Assert.AreEqual(LyricsFetchStatus.Waiting, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.Waiting, lfm.GetStatus(s2));

            lfm.CancelAll();
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s1));
            Assert.AreEqual(LyricsFetchStatus.NotFound, lfm.GetStatus(s2));
        }