| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // Copyright (c) The Avalonia Project. All rights reserved.
- // Licensed under the MIT license. See licence.md file in the project root for full license information.
- using System;
- using System.Reactive.Linq;
- using System.Threading.Tasks;
- using Avalonia.Data;
- using Avalonia.Markup.Data;
- using Xunit;
- namespace Avalonia.Markup.UnitTests.Data
- {
- public class ExpressionObserverTests_Negation
- {
- [Fact]
- public async Task Should_Negate_Boolean_Value()
- {
- var data = new { Foo = true };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(false, result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Negate_0()
- {
- var data = new { Foo = 0 };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(true, result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Negate_1()
- {
- var data = new { Foo = 1 };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(false, result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Negate_False_String()
- {
- var data = new { Foo = "false" };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(true, result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Negate_True_String()
- {
- var data = new { Foo = "True" };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(false, result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Return_BindingNotification_For_String_Not_Convertible_To_Boolean()
- {
- var data = new { Foo = "foo" };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(
- new BindingNotification(
- new InvalidCastException($"Unable to convert 'foo' to bool."),
- BindingErrorType.Error),
- result);
- GC.KeepAlive(data);
- }
- [Fact]
- public async Task Should_Return_BindingNotification_For_Value_Not_Convertible_To_Boolean()
- {
- var data = new { Foo = new object() };
- var target = new ExpressionObserver(data, "!Foo");
- var result = await target.Take(1);
- Assert.Equal(
- new BindingNotification(
- new InvalidCastException($"Unable to convert 'System.Object' to bool."),
- BindingErrorType.Error),
- result);
- GC.KeepAlive(data);
- }
- [Fact]
- public void SetValue_Should_Return_False()
- {
- var data = new { Foo = "foo" };
- var target = new ExpressionObserver(data, "!Foo");
- Assert.False(target.SetValue("bar"));
- GC.KeepAlive(data);
- }
- }
- }
|