LoggingTests.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Avalonia.Controls;
  2. using Avalonia.Controls.Shapes;
  3. using Avalonia.Markup.Xaml;
  4. using Avalonia.UnitTests;
  5. using Xunit;
  6. namespace Avalonia.Base.UnitTests.Logging
  7. {
  8. public class LoggingTests
  9. {
  10. [Fact]
  11. public void Control_Should_Not_Log_Binding_Errors_When_Detached_From_Visual_Tree()
  12. {
  13. using (UnitTestApplication.Start(TestServices.StyledWindow))
  14. {
  15. var xaml = @"
  16. <Window xmlns='https://github.com/avaloniaui'
  17. xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
  18. xmlns:local='clr-namespace:Avalonia.Base.UnitTests.Logging;assembly=Avalonia.UnitTests'>
  19. <Panel Name='panel'>
  20. <Rectangle Name='rect' Fill='{Binding $parent[Window].Background}'/>
  21. </Panel>
  22. </Window>";
  23. var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
  24. var calledTimes = 0;
  25. using var logSink = TestLogSink.Start((l, a, s, m, d) =>
  26. {
  27. if (l >= Avalonia.Logging.LogEventLevel.Warning)
  28. {
  29. calledTimes++;
  30. }
  31. });
  32. var panel = window.FindControl<Panel>("panel");
  33. var rect = window.FindControl<Rectangle>("rect");
  34. window.ApplyTemplate();
  35. window.Presenter.ApplyTemplate();
  36. panel.Children.Remove(rect);
  37. Assert.Equal(0, calledTimes);
  38. }
  39. }
  40. }
  41. }