Browse Source
Merge pull request #3198 from mstr2/transitioninstance
TransitionInstance with zero duration is now completed on first tick
pull/3213/head
Jumar Macato
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
23 additions and
8 deletions
-
src/Avalonia.Animation/Properties/AssemblyInfo.cs
-
src/Avalonia.Animation/TransitionInstance.cs
-
tests/Avalonia.Animation.UnitTests/TransitionsTests.cs
|
|
|
@ -10,3 +10,4 @@ using System.Runtime.CompilerServices; |
|
|
|
[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Animation.Animators")] |
|
|
|
|
|
|
|
[assembly: InternalsVisibleTo("Avalonia.LeakTests")] |
|
|
|
[assembly: InternalsVisibleTo("Avalonia.Animation.UnitTests")] |
|
|
|
|
|
|
|
@ -28,7 +28,7 @@ namespace Avalonia.Animation |
|
|
|
|
|
|
|
private void TimerTick(TimeSpan t) |
|
|
|
{ |
|
|
|
var interpVal = (double)t.Ticks / _duration.Ticks; |
|
|
|
var interpVal = _duration.Ticks == 0 ? 1d : (double)t.Ticks / _duration.Ticks; |
|
|
|
|
|
|
|
// Clamp interpolation value.
|
|
|
|
if (interpVal >= 1d | interpVal < 0d) |
|
|
|
|
|
|
|
@ -1,14 +1,7 @@ |
|
|
|
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 |
|
|
|
{ |
|
|
|
@ -69,5 +62,26 @@ namespace Avalonia.Animation.UnitTests |
|
|
|
Assert.Equal(0, border.Opacity); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void TransitionInstance_With_Zero_Duration_Is_Completed_On_First_Tick() |
|
|
|
{ |
|
|
|
var clock = new MockGlobalClock(); |
|
|
|
|
|
|
|
using (UnitTestApplication.Start(new TestServices(globalClock: clock))) |
|
|
|
{ |
|
|
|
int i = 0; |
|
|
|
var inst = new TransitionInstance(clock, TimeSpan.Zero).Subscribe(nextValue => |
|
|
|
{ |
|
|
|
switch (i++) |
|
|
|
{ |
|
|
|
case 0: Assert.Equal(0, nextValue); break; |
|
|
|
case 1: Assert.Equal(1d, nextValue); break; |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
clock.Pulse(TimeSpan.FromMilliseconds(10)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|