ArrangeTests.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright (c) The Perspex Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using Perspex.Controls;
  4. using Xunit;
  5. namespace Perspex.Layout.UnitTests
  6. {
  7. public class ArrangeTests
  8. {
  9. [Fact]
  10. public void Arrange_With_IsMeasureValid_False_Calls_Measure()
  11. {
  12. var target = new TestControl();
  13. Assert.False(target.IsMeasureValid);
  14. target.Arrange(new Rect(0, 0, 120, 120));
  15. Assert.True(target.IsMeasureValid);
  16. Assert.Equal(new Size(120, 120), target.MeasureConstraint);
  17. }
  18. [Fact]
  19. public void Arrange_With_IsMeasureValid_False_Calls_Measure_With_Previous_Size_If_Available()
  20. {
  21. var target = new TestControl();
  22. Assert.False(target.IsMeasureValid);
  23. target.Arrange(new Rect(0, 0, 120, 120));
  24. target.InvalidateMeasure();
  25. target.Arrange(new Rect(0, 0, 100, 100));
  26. Assert.True(target.IsMeasureValid);
  27. Assert.Equal(new Size(120, 120), target.MeasureConstraint);
  28. }
  29. private class TestControl : Border
  30. {
  31. public Size MeasureConstraint { get; private set; }
  32. protected override Size MeasureOverride(Size constraint)
  33. {
  34. MeasureConstraint = constraint;
  35. return base.MeasureOverride(constraint);
  36. }
  37. }
  38. }
  39. }