ExpressionObserverTests_Negation.cs 1022 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Reactive.Linq;
  3. using System.Threading.Tasks;
  4. using Avalonia.Data;
  5. using Avalonia.Data.Core;
  6. using Avalonia.Markup.Parsers;
  7. using Xunit;
  8. namespace Avalonia.Base.UnitTests.Data.Core
  9. {
  10. public class ExpressionObserverTests_Negation
  11. {
  12. [Fact]
  13. public async Task Should_Negate_Boolean_Value()
  14. {
  15. var data = new { Foo = true };
  16. var target = ExpressionObserver.Create(data, o => !o.Foo);
  17. var result = await target.Take(1);
  18. Assert.False((bool)result);
  19. GC.KeepAlive(data);
  20. }
  21. [Fact]
  22. public void Can_SetValue_For_Valid_Value()
  23. {
  24. var data = new Test { Foo = true };
  25. var target = ExpressionObserver.Create(data, o => !o.Foo);
  26. target.Subscribe(_ => { });
  27. Assert.True(target.SetValue(true));
  28. Assert.False(data.Foo);
  29. }
  30. private class Test
  31. {
  32. public bool Foo { get; set; }
  33. }
  34. }
  35. }