ExpressionObserverTests_Negation.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Copyright (c) The Perspex 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.Reactive.Linq;
  5. using Perspex.Markup.Binding;
  6. using Xunit;
  7. namespace Perspex.Markup.UnitTests.Binding
  8. {
  9. public class ExpressionObserverTests_Negation
  10. {
  11. [Fact]
  12. public async void Should_Negate_Boolean_Value()
  13. {
  14. var data = new { Foo = true };
  15. var target = new ExpressionObserver(data, "!Foo");
  16. var result = await target.Take(1);
  17. Assert.Equal(false, result);
  18. }
  19. [Fact]
  20. public async void Should_Negate_0()
  21. {
  22. var data = new { Foo = 0 };
  23. var target = new ExpressionObserver(data, "!Foo");
  24. var result = await target.Take(1);
  25. Assert.Equal(true, result);
  26. }
  27. [Fact]
  28. public async void Should_Negate_1()
  29. {
  30. var data = new { Foo = 1 };
  31. var target = new ExpressionObserver(data, "!Foo");
  32. var result = await target.Take(1);
  33. Assert.Equal(false, result);
  34. }
  35. [Fact]
  36. public async void Should_Negate_False_String()
  37. {
  38. var data = new { Foo = "false" };
  39. var target = new ExpressionObserver(data, "!Foo");
  40. var result = await target.Take(1);
  41. Assert.Equal(true, result);
  42. }
  43. [Fact]
  44. public async void Should_Negate_True_String()
  45. {
  46. var data = new { Foo = "True" };
  47. var target = new ExpressionObserver(data, "!Foo");
  48. var result = await target.Take(1);
  49. Assert.Equal(false, result);
  50. }
  51. [Fact]
  52. public async void Should_Return_Empty_For_String_Not_Convertible_To_Boolean()
  53. {
  54. var data = new { Foo = "foo" };
  55. var target = new ExpressionObserver(data, "!Foo");
  56. var result = await target.Take(1);
  57. Assert.Equal(PerspexProperty.UnsetValue, result);
  58. }
  59. [Fact]
  60. public async void Should_Return_Empty_For_Value_Not_Convertible_To_Boolean()
  61. {
  62. var data = new { Foo = new object() };
  63. var target = new ExpressionObserver(data, "!Foo");
  64. var result = await target.Take(1);
  65. Assert.Equal(PerspexProperty.UnsetValue, result);
  66. }
  67. [Fact]
  68. public void SetValue_Should_Throw()
  69. {
  70. var data = new { Foo = "foo" };
  71. var target = new ExpressionObserver(data, "!Foo");
  72. Assert.Throws<NotSupportedException>(() => target.SetValue("bar"));
  73. }
  74. }
  75. }