ActivatedObservableTests.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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_Complete_When_Activator_Completes()
  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 completed = false;
  54. target.Subscribe(_ => { }, () => completed = true);
  55. activator.OnCompleted();
  56. Assert.True(completed);
  57. }
  58. }
  59. }