ActivatedObservableTests.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 System.Collections.Generic;
  5. using System.Reactive.Linq;
  6. using System.Reactive.Subjects;
  7. using Xunit;
  8. namespace Avalonia.Styling.UnitTests
  9. {
  10. public class ActivatedObservableTests
  11. {
  12. [Fact]
  13. public void Should_Produce_Correct_Values()
  14. {
  15. var activator = new BehaviorSubject<bool>(false);
  16. var source = new BehaviorSubject<object>(1);
  17. var target = new ActivatedObservable(activator, source, string.Empty);
  18. var result = new List<object>();
  19. target.Subscribe(x => result.Add(x));
  20. activator.OnNext(true);
  21. source.OnNext(2);
  22. activator.OnNext(false);
  23. source.OnNext(3);
  24. activator.OnNext(true);
  25. Assert.Equal(
  26. new[]
  27. {
  28. AvaloniaProperty.UnsetValue,
  29. 1,
  30. 2,
  31. AvaloniaProperty.UnsetValue,
  32. 3,
  33. },
  34. result);
  35. }
  36. [Fact]
  37. public void Should_Complete_When_Source_Completes()
  38. {
  39. var activator = new BehaviorSubject<bool>(false);
  40. var source = new BehaviorSubject<object>(1);
  41. var target = new ActivatedObservable(activator, source, string.Empty);
  42. var completed = false;
  43. target.Subscribe(_ => { }, () => completed = true);
  44. source.OnCompleted();
  45. Assert.True(completed);
  46. }
  47. [Fact]
  48. public void Should_Error_When_Source_Errors()
  49. {
  50. var activator = new BehaviorSubject<bool>(false);
  51. var source = new BehaviorSubject<object>(1);
  52. var target = new ActivatedObservable(activator, source, string.Empty);
  53. var error = new Exception();
  54. var completed = false;
  55. target.Subscribe(_ => { }, x => completed = true);
  56. source.OnError(error);
  57. Assert.True(completed);
  58. }
  59. }
  60. }