RichTextBlockTests.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Avalonia.Controls.Documents;
  2. using Avalonia.Media;
  3. using Avalonia.UnitTests;
  4. using Xunit;
  5. namespace Avalonia.Controls.UnitTests
  6. {
  7. public class RichTextBlockTests
  8. {
  9. [Fact]
  10. public void Changing_InlinesCollection_Should_Invalidate_Measure()
  11. {
  12. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  13. {
  14. var target = new RichTextBlock();
  15. target.Measure(Size.Infinity);
  16. Assert.True(target.IsMeasureValid);
  17. target.Inlines.Add(new Run("Hello"));
  18. Assert.False(target.IsMeasureValid);
  19. target.Measure(Size.Infinity);
  20. Assert.True(target.IsMeasureValid);
  21. }
  22. }
  23. [Fact]
  24. public void Changing_Inlines_Properties_Should_Invalidate_Measure()
  25. {
  26. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  27. {
  28. var target = new RichTextBlock();
  29. var inline = new Run("Hello");
  30. target.Inlines.Add(inline);
  31. target.Measure(Size.Infinity);
  32. Assert.True(target.IsMeasureValid);
  33. inline.Foreground = Brushes.Green;
  34. Assert.False(target.IsMeasureValid);
  35. }
  36. }
  37. [Fact]
  38. public void Changing_Inlines_Should_Invalidate_Measure()
  39. {
  40. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  41. {
  42. var target = new RichTextBlock();
  43. var inlines = new InlineCollection { new Run("Hello") };
  44. target.Measure(Size.Infinity);
  45. Assert.True(target.IsMeasureValid);
  46. target.Inlines = inlines;
  47. Assert.False(target.IsMeasureValid);
  48. }
  49. }
  50. [Fact]
  51. public void Changing_Inlines_Should_Reset_Inlines_Parent()
  52. {
  53. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  54. {
  55. var target = new RichTextBlock();
  56. var run = new Run("Hello");
  57. target.Inlines.Add(run);
  58. target.Measure(Size.Infinity);
  59. Assert.True(target.IsMeasureValid);
  60. target.Inlines = null;
  61. Assert.Null(run.Parent);
  62. target.Inlines = new InlineCollection { run };
  63. Assert.Equal(target, run.Parent);
  64. }
  65. }
  66. }
  67. }