public void ShouldTriggerFinishCallbackOnlyWhenLastTweenFinishes()
        {
            var sequenceFinishCallbackCount = 0;
            var tween1   = new TweenSleep(new TimeSpan(100));
            var tween2   = new TweenSleep(new TimeSpan(100));
            var sequence = new TweenSequence(() => sequenceFinishCallbackCount++);

            sequence.Add(tween1);
            sequence.Add(tween2);

            sequence.Advance(new TimeSpan(50));
            Assert.Equal(0, sequenceFinishCallbackCount);
            sequence.Advance(new TimeSpan(50));
            Assert.Equal(0, sequenceFinishCallbackCount);
            sequence.Advance(new TimeSpan(50));
            Assert.Equal(0, sequenceFinishCallbackCount);
            sequence.Advance(new TimeSpan(50));
            Assert.Equal(1, sequenceFinishCallbackCount);
            sequence.Advance(new TimeSpan(50));
            Assert.Equal(1, sequenceFinishCallbackCount);
            Assert.True(sequence.IsFinished);
        }
        public void ShouldAdvanceTheSecondTweenByWhatIsLeft()
        {
            var tween1   = new TweenSleep(new TimeSpan(100));
            var tween2   = new TweenSleep(new TimeSpan(100));
            var sequence = new TweenSequence();

            sequence.Add(tween1);
            sequence.Add(tween2);

            sequence.Advance(new TimeSpan(150));

            Assert.Equal(0, tween1.RemainingDuration.Ticks);
            Assert.Equal(50, tween2.RemainingDuration.Ticks);
            Assert.True(tween1.IsFinished);
            Assert.False(tween2.IsFinished);
        }
        public void ShouldAdvanceTheFirstTween()
        {
            var tween1   = new TweenSleep(new TimeSpan(100));
            var tween2   = new TweenSleep(new TimeSpan(100));
            var sequence = new TweenSequence();

            sequence.Add(tween1);
            sequence.Add(tween2);

            sequence.Advance(new TimeSpan(50));

            Assert.Equal(50, tween1.RemainingDuration.Ticks);
            Assert.Equal(100, tween2.RemainingDuration.Ticks);
            Assert.False(tween1.IsFinished);
            Assert.False(tween2.IsFinished);
        }