public void Pause_ShouldPauseTransitionAndStartAgainWithContinueToPlay()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            play.Stop();
            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, play.Volume);
            Assert.AreEqual(50, stop.Volume);

            Thread.Sleep(1000);
            transition.Pause();
            Assert.IsTrue(play.Position.TotalSeconds > 0.5 && play.Position.TotalSeconds < 1.5);

            Thread.Sleep(1000);
            Assert.IsTrue(play.Position.TotalSeconds > 0.5 && play.Position.TotalSeconds < 1.5);

            transition.ContinueToPlay();
            Thread.Sleep(1000);

            Assert.IsTrue(play.Position.TotalSeconds > 1.5 && play.Position.TotalSeconds < 2.5);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(100, play.Volume);
            Assert.AreEqual(0, stop.Volume);

            play.Dispose();
        }
        public void StartTransition_ShouldThrowExceptionIfDurationGreatherThanTrackToPlayTime()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(95);
        }
        public void StartTransition_ShouldDisposeTrackToStopWhenFinished()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);
            transition.DoStep();

            play.Dispose();
            stop.Dispose();
        }
        public void StartTransiton_ShouldDoTransitionWithOnlyTrackToStop()
        {
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(null, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, stop.Volume);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(0, stop.Volume);
        }
        public void StartTransition_ShouldDoTransitionWithBothTracks()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, play.Volume);
            Assert.AreEqual(50, stop.Volume);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(100, play.Volume);
            Assert.AreEqual(0, stop.Volume);

            play.Dispose();
        }