| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- // Copyright (c) The Perspex Project. All rights reserved.
- // Licensed under the MIT license. See licence.md file in the project root for full license information.
- using System.Reactive.Linq;
- using Perspex.Markup.Data;
- using Xunit;
- namespace Perspex.Markup.UnitTests.Binding
- {
- public class ExpressionSubjectTests
- {
- [Fact]
- public async void Should_Get_Simple_Property_Value()
- {
- var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(string));
- var result = await target.Take(1);
- Assert.Equal("foo", result);
- }
- [Fact]
- public void Should_Set_Simple_Property_Value()
- {
- var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(string));
- target.OnNext("bar");
- Assert.Equal("bar", data.StringValue);
- }
- [Fact]
- public async void Should_Convert_Get_String_To_Double()
- {
- var data = new Class1 { StringValue = "5.6" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
- var result = await target.Take(1);
- Assert.Equal(5.6, result);
- }
- [Fact]
- public async void Should_Convert_Get_Invalid_Double_String_To_UnsetValue()
- {
- var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
- var result = await target.Take(1);
- Assert.Equal(PerspexProperty.UnsetValue, result);
- }
- [Fact]
- public async void Should_Coerce_Get_Null_Double_String_To_UnsetValue()
- {
- var data = new Class1 { StringValue = null };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
- var result = await target.Take(1);
- Assert.Equal(PerspexProperty.UnsetValue, result);
- }
- [Fact]
- public void Should_Convert_Set_String_To_Double()
- {
- var data = new Class1 { StringValue = "5.6" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
- target.OnNext(6.7);
- Assert.Equal("6.7", data.StringValue);
- }
- [Fact]
- public async void Should_Convert_Get_Double_To_String()
- {
- var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
- var result = await target.Take(1);
- Assert.Equal("5.6", result);
- }
- [Fact]
- public void Should_Convert_Set_Double_To_String()
- {
- var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
- target.OnNext("6.7");
- Assert.Equal(6.7, data.DoubleValue);
- }
- [Fact]
- public void Should_Coerce_Set_Invalid_Double_String_To_Default_Value()
- {
- var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
- target.OnNext("foo");
- Assert.Equal(0, data.DoubleValue);
- }
- [Fact]
- public void Should_Coerce_Setting_Null_Double_To_Default_Value()
- {
- var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
- target.OnNext(null);
- Assert.Equal(0, data.DoubleValue);
- }
- [Fact]
- public void Should_Coerce_Setting_UnsetValue_Double_To_Default_Value()
- {
- var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
- target.OnNext(PerspexProperty.UnsetValue);
- Assert.Equal(0, data.DoubleValue);
- }
- private class Class1
- {
- public string StringValue { get; set; }
- public double DoubleValue { get; set; }
- }
- }
- }
|