@ -14,7 +14,7 @@ namespace Avalonia.Base.UnitTests.Layout
public class LayoutableTests_EffectiveViewportChanged
public class LayoutableTests_EffectiveViewportChanged
{
{
[Fact]
[Fact]
public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree ( )
public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree_And_Layout_Pass_Has_Not_Run ( )
{
{
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
await RunOnUIThread . Execute ( async ( ) = >
await RunOnUIThread . Execute ( async ( ) = >
@ -34,6 +34,60 @@ namespace Avalonia.Base.UnitTests.Layout
Assert . Equal ( 0 , raised ) ;
Assert . Equal ( 0 , raised ) ;
} ) ;
} ) ;
}
}
[Fact]
public async Task EffectiveViewportChanged_Raised_When_Control_Added_To_Tree_And_Layout_Pass_Has_Run ( )
{
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
await RunOnUIThread . Execute ( async ( ) = >
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
var root = CreateRoot ( ) ;
var target = new Canvas ( ) ;
var raised = 0 ;
target . EffectiveViewportChanged + = ( s , e ) = >
{
+ + raised ;
} ;
root . Child = target ;
Assert . Equal ( 0 , raised ) ;
await ExecuteInitialLayoutPass ( root ) ;
Assert . Equal ( 1 , raised ) ;
} ) ;
}
[Fact]
public async Task EffectiveViewportChanged_Raised_When_Root_LayedOut_And_Then_Control_Added_To_Tree_And_Layout_Pass_Runs ( )
{
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
await RunOnUIThread . Execute ( async ( ) = >
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
var root = CreateRoot ( ) ;
var target = new Canvas ( ) ;
var raised = 0 ;
target . EffectiveViewportChanged + = ( s , e ) = >
{
+ + raised ;
} ;
await ExecuteInitialLayoutPass ( root ) ;
root . Child = target ;
Assert . Equal ( 0 , raised ) ;
await ExecuteInitialLayoutPass ( root ) ;
Assert . Equal ( 1 , raised ) ;
} ) ;
}
[Fact]
[Fact]
public async Task EffectiveViewportChanged_Raised_Before_LayoutUpdated ( )
public async Task EffectiveViewportChanged_Raised_Before_LayoutUpdated ( )
@ -268,8 +322,11 @@ namespace Avalonia.Base.UnitTests.Layout
root . Child = parent ;
root . Child = parent ;
await ExecuteInitialLayoutPass ( root ) ;
target . EffectiveViewportChanged + = ( s , e ) = > + + raised ;
target . EffectiveViewportChanged + = ( s , e ) = > + + raised ;
await ExecuteInitialLayoutPass ( root ) ;
raised = 0 ; // The initial layout pass is expected to raise.
target . RenderTransform = new TranslateTransform { X = 8 } ;
target . RenderTransform = new TranslateTransform { X = 8 } ;
target . InvalidateMeasure ( ) ;
target . InvalidateMeasure ( ) ;
await ExecuteLayoutPass ( root ) ;
await ExecuteLayoutPass ( root ) ;