public void ShouldFinishAllTheTweensOnlyOnceRegardlessOfCalls() { var tween1FinishCallbacks = 0; var tween2FinishCallbacks = 0; var tween1 = new TweenSleep(new TimeSpan(100), () => tween1FinishCallbacks++); var tween2 = new TweenSleep(new TimeSpan(100), () => tween2FinishCallbacks++); var sequence = new TweenSequence(); sequence.Add(tween1); sequence.Add(tween2); sequence.Finish(); sequence.Finish(); sequence.Finish(); Assert.Equal(1, tween1FinishCallbacks); Assert.Equal(1, tween2FinishCallbacks); Assert.True(tween1.IsFinished); Assert.True(tween2.IsFinished); Assert.True(sequence.IsFinished); }