5 changed files with 82 additions and 1 deletions
@ -0,0 +1,60 @@ |
|||
using System; |
|||
using Avalonia.Animation; |
|||
using Avalonia.Controls; |
|||
using Avalonia.UnitTests; |
|||
using JetBrains.dotMemoryUnit; |
|||
using Xunit; |
|||
using Xunit.Abstractions; |
|||
|
|||
namespace Avalonia.LeakTests |
|||
{ |
|||
[DotMemoryUnit(FailIfRunWithoutSupport = false)] |
|||
public class TransitionTests |
|||
{ |
|||
public TransitionTests(ITestOutputHelper atr) |
|||
{ |
|||
DotMemoryUnitTestOutput.SetOutputMethod(atr.WriteLine); |
|||
} |
|||
|
|||
[Fact(Skip = "TODO: Fix this leak")] |
|||
public void Transition_On_StyledProperty_Is_Freed() |
|||
{ |
|||
var clock = new MockGlobalClock(); |
|||
|
|||
using (UnitTestApplication.Start(new TestServices(globalClock: clock))) |
|||
{ |
|||
Func<Border> run = () => |
|||
{ |
|||
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.5, border.Opacity); |
|||
|
|||
clock.Pulse(TimeSpan.FromSeconds(1)); |
|||
|
|||
Assert.Equal(0, border.Opacity); |
|||
return border; |
|||
}; |
|||
|
|||
var result = run(); |
|||
|
|||
dotMemory.Check(memory => |
|||
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<TransitionInstance>()).ObjectsCount)); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
using System; |
|||
using Avalonia.Animation; |
|||
|
|||
namespace Avalonia.UnitTests |
|||
{ |
|||
public class MockGlobalClock : ClockBase, IGlobalClock |
|||
{ |
|||
public new void Pulse(TimeSpan systemTime) => base.Pulse(systemTime); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue