public void PlaybackCompletedToEnd()
        {
            var  vt = new VirtualMidiPlayerTimeManager();
            var  music = TestHelper.GetMidiMusic();
            var  qmsec = MidiMusic.GetPlayTimeMillisecondsAtTick(music.Tracks [0].Messages, 4998, 192);
            var  player = TestHelper.GetMidiPlayer(vt, music);
            bool completed = false, finished = false;

            player.PlaybackCompletedToEnd += () => completed = true;
            player.Finished += () => finished = true;
            Assert.IsTrue(!completed, "1 PlaybackCompletedToEnd already fired");
            Assert.IsTrue(!finished, "2 Finished already fired");
            player.Play();
            vt.ProceedBy(100);
            Assert.IsTrue(!completed, "3 PlaybackCompletedToEnd already fired");
            Assert.IsTrue(!finished, "4 Finished already fired");
            vt.ProceedBy(qmsec);
            Assert.AreEqual(12989, qmsec, "qmsec");
            // FIXME: this is ugly
            while (player.PlayDeltaTime < 4988)
            {
                Task.Delay(100);
            }
            Assert.AreEqual(4988, player.PlayDeltaTime, "PlayDeltaTime");
            player.Pause();
            player.Dispose();
            Assert.IsTrue(completed, "5 PlaybackCompletedToEnd not fired");
            Assert.IsTrue(finished, "6 Finished not fired");
        }
示例#2
0
        public void GetTimePositionInMillisecondsForTick()
        {
            var vt     = new VirtualMidiPlayerTimeManager();
            var player = TestHelper.GetMidiPlayer(vt);

            player.Play();
            vt.ProceedBy(100);
            player.Seek(5000);
            Task.Delay(200);
            Assert.AreEqual(5000, player.PlayDeltaTime, "1 PlayDeltaTime");
            Assert.AreEqual(12, (int)player.PositionInTime.TotalSeconds, "1 PositionInTime");
            vt.ProceedBy(100);
            // FIXME: this is ugly.
            Task.Delay(100);
            // FIXME: not working
            //Assert.AreEqual (5100, player.PlayDeltaTime, "2 PlayDeltaTime");
            Assert.AreEqual(12, (int)player.PositionInTime.TotalSeconds, "2 PositionInTime");
            player.Seek(2000);
            Assert.AreEqual(2000, player.PlayDeltaTime, "3 PlayDeltaTime");
            Assert.AreEqual(5, (int)player.PositionInTime.TotalSeconds, "3 PositionInTime");
            vt.ProceedBy(100);
            // FIXME: this is ugly.
            Task.Delay(100);
            // FIXME: not working
            //Assert.AreEqual (2100, player.PlayDeltaTime, "4 PlayDeltaTime");
            Assert.AreEqual(5, (int)player.PositionInTime.TotalSeconds, "4 PositionInTime");
        }
        public void PlaySimple()
        {
            var vt     = new VirtualMidiPlayerTimeManager();
            var player = TestHelper.GetMidiPlayer(vt);

            player.Play();
            vt.ProceedBy(200000);
            player.Pause();
            player.Dispose();
        }
        public void PlaybackCompletedToEndAbort()
        {
            var  vt = new VirtualMidiPlayerTimeManager();
            var  player = TestHelper.GetMidiPlayer(vt);
            bool completed = false, finished = false;

            player.PlaybackCompletedToEnd += () => completed = true;
            player.Finished += () => finished = true;
            player.Play();
            vt.ProceedBy(1000);
            // FIXME: this is ugly
            while (player.PlayDeltaTime == 0)
            {
                Task.Delay(100);
            }
            player.Pause();
            player.Dispose();              // abort in the middle
            Assert.IsFalse(completed, "1 PlaybackCompletedToEnd unexpectedly fired");
            Assert.IsTrue(finished, "2 Finished not fired");
        }