ActivatedValueTests.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 Microsoft.Reactive.Testing;
  8. using Xunit;
  9. namespace Avalonia.Styling.UnitTests
  10. {
  11. public class ActivatedValueTests
  12. {
  13. [Fact]
  14. public void Should_Produce_Correct_Values()
  15. {
  16. var activator = new BehaviorSubject<bool>(false);
  17. var target = new ActivatedValue(activator, 1, string.Empty);
  18. var result = new List<object>();
  19. target.Subscribe(x => result.Add(x));
  20. activator.OnNext(true);
  21. activator.OnNext(false);
  22. Assert.Equal(new[] { AvaloniaProperty.UnsetValue, 1, AvaloniaProperty.UnsetValue }, result);
  23. }
  24. [Fact]
  25. public void Should_Complete_When_Activator_Completes()
  26. {
  27. var activator = new BehaviorSubject<bool>(false);
  28. var target = new ActivatedValue(activator, 1, string.Empty);
  29. var completed = false;
  30. target.Subscribe(_ => { }, () => completed = true);
  31. activator.OnCompleted();
  32. Assert.True(completed);
  33. }
  34. [Fact]
  35. public void Should_Unsubscribe_From_Activator_When_All_Subscriptions_Disposed()
  36. {
  37. var scheduler = new TestScheduler();
  38. var activator1 = scheduler.CreateColdObservable<bool>();
  39. var activator2 = scheduler.CreateColdObservable<bool>();
  40. var activator = StyleActivator.And(new[] { activator1, activator2 });
  41. var target = new ActivatedValue(activator, 1, string.Empty);
  42. var subscription = target.Subscribe(_ => { });
  43. Assert.Equal(1, activator1.Subscriptions.Count);
  44. Assert.Equal(Subscription.Infinite, activator1.Subscriptions[0].Unsubscribe);
  45. subscription.Dispose();
  46. Assert.Equal(1, activator1.Subscriptions.Count);
  47. Assert.Equal(0, activator1.Subscriptions[0].Unsubscribe);
  48. }
  49. }
  50. }