LayoutTestRoot.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. using Avalonia.Layout;
  3. using Avalonia.UnitTests;
  4. namespace Avalonia.Base.UnitTests.Layout
  5. {
  6. internal class LayoutTestRoot : TestRoot, ILayoutable
  7. {
  8. public bool Measured { get; set; }
  9. public bool Arranged { get; set; }
  10. public Func<ILayoutable, Size, Size> DoMeasureOverride { get; set; }
  11. public Func<ILayoutable, Size, Size> DoArrangeOverride { get; set; }
  12. void ILayoutable.Measure(Size availableSize)
  13. {
  14. Measured = true;
  15. Measure(availableSize);
  16. }
  17. void ILayoutable.Arrange(Rect rect)
  18. {
  19. Arranged = true;
  20. Arrange(rect);
  21. }
  22. protected override Size MeasureOverride(Size availableSize)
  23. {
  24. return DoMeasureOverride != null ?
  25. DoMeasureOverride(this, availableSize) :
  26. base.MeasureOverride(availableSize);
  27. }
  28. protected override Size ArrangeOverride(Size finalSize)
  29. {
  30. Arranged = true;
  31. return DoArrangeOverride != null ?
  32. DoArrangeOverride(this, finalSize) :
  33. base.ArrangeOverride(finalSize);
  34. }
  35. }
  36. }