public void FinishOne_ExhaustiveTest()
        {
            var tween1FinishCallbacks   = 0;
            var tween2FinishCallbacks   = 0;
            var sequenceFinishCallbacks = 0;
            var tween1   = new TweenSleep(new TimeSpan(100), () => tween1FinishCallbacks++);
            var tween2   = new TweenSleep(new TimeSpan(100), () => tween2FinishCallbacks++);
            var sequence = new TweenSequence(() => sequenceFinishCallbacks++);

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

            sequence.FinishOne();
            Assert.Equal(1, sequence.TweenCount);
            Assert.Equal(1, tween1FinishCallbacks);
            Assert.Equal(0, tween2FinishCallbacks);
            Assert.Equal(0, sequenceFinishCallbacks);
            Assert.True(tween1.IsFinished);
            Assert.False(tween2.IsFinished);
            Assert.False(sequence.IsFinished);

            sequence.FinishOne();
            Assert.Equal(0, sequence.TweenCount);
            Assert.Equal(1, tween1FinishCallbacks);
            Assert.Equal(1, tween2FinishCallbacks);
            Assert.Equal(1, sequenceFinishCallbacks);
            Assert.True(tween1.IsFinished);
            Assert.True(tween2.IsFinished);
            Assert.True(sequence.IsFinished);
        }