From 26b8fd6a056a44b2c69e9a463c45e1971eae4782 Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Tue, 14 May 2019 21:31:08 +0800 Subject: [PATCH] Add transitions unit test. --- src/Avalonia.Animation/TransitionInstance.cs | 2 +- .../AnimationTransitionsTest.cs | 73 +++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 tests/Avalonia.Animation.UnitTests/AnimationTransitionsTest.cs diff --git a/src/Avalonia.Animation/TransitionInstance.cs b/src/Avalonia.Animation/TransitionInstance.cs index ebb6e2ca68..10ea6bf523 100644 --- a/src/Avalonia.Animation/TransitionInstance.cs +++ b/src/Avalonia.Animation/TransitionInstance.cs @@ -31,7 +31,7 @@ namespace Avalonia.Animation var interpVal = (double)t.Ticks / _duration.Ticks; // Clamp interpolation value. - if (interpVal >= 1d | (interpVal < 0d)) + if (interpVal >= 1d | interpVal < 0d) { PublishNext(1d); PublishCompleted(); diff --git a/tests/Avalonia.Animation.UnitTests/AnimationTransitionsTest.cs b/tests/Avalonia.Animation.UnitTests/AnimationTransitionsTest.cs new file mode 100644 index 0000000000..9014c40299 --- /dev/null +++ b/tests/Avalonia.Animation.UnitTests/AnimationTransitionsTest.cs @@ -0,0 +1,73 @@ +using System; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Avalonia.Animation; +using Avalonia.Controls; +using Avalonia.Styling; +using Avalonia.UnitTests; +using Avalonia.Data; +using Xunit; +using Avalonia.Animation.Easings; + +namespace Avalonia.Animation.UnitTests +{ + public class AnimationTransitionsTests + { + [Fact] + public void Check_Transitions_Interpolation_Negative_Bounds_Clamp() + { + var clock = new MockGlobalClock(); + + using (UnitTestApplication.Start(new TestServices(globalClock: clock))) + { + var border = new Border + { + Transitions = + { + new DoubleTransition + { + Duration = TimeSpan.FromSeconds(1), + Property = Border.OpacityProperty, + } + } + }; + + border.Opacity = 0; + + clock.Pulse(TimeSpan.FromSeconds(0)); + clock.Pulse(TimeSpan.FromSeconds(-0.5)); + + Assert.Equal(0, border.Opacity); + } + } + + [Fact] + public void Check_Transitions_Interpolation_Positive_Bounds_Clamp() + { + var clock = new MockGlobalClock(); + + using (UnitTestApplication.Start(new TestServices(globalClock: clock))) + { + var border = new Border + { + Transitions = + { + new DoubleTransition + { + Duration = TimeSpan.FromSeconds(1), + Property = Border.OpacityProperty, + } + } + }; + + border.Opacity = 0; + + clock.Pulse(TimeSpan.FromSeconds(0)); + clock.Pulse(TimeSpan.FromMilliseconds(1001)); + + Assert.Equal(0, border.Opacity); + } + } + } +}