TestLogSink.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Reactive.Disposables;
  3. using Avalonia.Logging;
  4. namespace Avalonia.UnitTests
  5. {
  6. public delegate void LogCallback(
  7. LogEventLevel level,
  8. string area,
  9. object source,
  10. string messageTemplate,
  11. params object[] propertyValues);
  12. public class TestLogSink : ILogSink
  13. {
  14. private readonly LogCallback _callback;
  15. public TestLogSink(LogCallback callback)
  16. {
  17. _callback = callback;
  18. }
  19. public static IDisposable Start(LogCallback callback)
  20. {
  21. var sink = new TestLogSink(callback);
  22. Logger.Sink = sink;
  23. return Disposable.Create(() => Logger.Sink = null);
  24. }
  25. public bool IsEnabled(LogEventLevel level, string area)
  26. {
  27. return true;
  28. }
  29. public void Log(LogEventLevel level, string area, object source, string messageTemplate)
  30. {
  31. _callback(level, area, source, messageTemplate);
  32. }
  33. public void Log<T0>(LogEventLevel level, string area, object source, string messageTemplate, T0 propertyValue0)
  34. {
  35. _callback(level, area, source, messageTemplate, propertyValue0);
  36. }
  37. public void Log<T0, T1>(LogEventLevel level, string area, object source, string messageTemplate,
  38. T0 propertyValue0, T1 propertyValue1)
  39. {
  40. _callback(level, area, source, messageTemplate, propertyValue0, propertyValue1);
  41. }
  42. public void Log<T0, T1, T2>(LogEventLevel level, string area, object source, string messageTemplate,
  43. T0 propertyValue0, T1 propertyValue1, T2 propertyValue2)
  44. {
  45. _callback(level, area, source, messageTemplate, propertyValue0, propertyValue1, propertyValue2);
  46. }
  47. public void Log(LogEventLevel level, string area, object source, string messageTemplate,
  48. params object[] propertyValues)
  49. {
  50. _callback(level, area, source, messageTemplate, propertyValues);
  51. }
  52. }
  53. }