LayoutTestRoot.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System;
  4. using Avalonia.UnitTests;
  5. namespace Avalonia.Layout.UnitTests
  6. {
  7. internal class LayoutTestRoot : TestRoot, ILayoutable
  8. {
  9. public bool Measured { get; set; }
  10. public bool Arranged { get; set; }
  11. public Func<ILayoutable, Size, Size> DoMeasureOverride { get; set; }
  12. public Func<ILayoutable, Size, Size> DoArrangeOverride { get; set; }
  13. void ILayoutable.Measure(Size availableSize)
  14. {
  15. Measured = true;
  16. Measure(availableSize);
  17. }
  18. void ILayoutable.Arrange(Rect rect)
  19. {
  20. Arranged = true;
  21. Arrange(rect);
  22. }
  23. protected override Size MeasureOverride(Size availableSize)
  24. {
  25. return DoMeasureOverride != null ?
  26. DoMeasureOverride(this, availableSize) :
  27. base.MeasureOverride(availableSize);
  28. }
  29. protected override Size ArrangeOverride(Size finalSize)
  30. {
  31. Arranged = true;
  32. return DoArrangeOverride != null ?
  33. DoArrangeOverride(this, finalSize) :
  34. base.ArrangeOverride(finalSize);
  35. }
  36. }
  37. }