3 changed files with 81 additions and 0 deletions
@ -0,0 +1,79 @@ |
|||||
|
// 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.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Reactive.Linq; |
||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.Data; |
||||
|
using Avalonia.Markup.Data; |
||||
|
using Avalonia.Markup.Xaml.Data; |
||||
|
using Moq; |
||||
|
using ReactiveUI; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Avalonia.Markup.Xaml.UnitTests.Data |
||||
|
{ |
||||
|
public class BindingTests_DataValidation |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Initiate_Should_Not_Enable_Data_Validation_With_BindingPriority_LocalValue() |
||||
|
{ |
||||
|
var textBlock = new TextBlock |
||||
|
{ |
||||
|
DataContext = new Class1(), |
||||
|
}; |
||||
|
|
||||
|
var target = new Binding(nameof(Class1.Foo)); |
||||
|
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: false); |
||||
|
var subject = (ExpressionSubject)instanced.Subject; |
||||
|
object result = null; |
||||
|
|
||||
|
subject.Subscribe(x => result = x); |
||||
|
|
||||
|
Assert.IsType<string>(result); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void Initiate_Should_Enable_Data_Validation_With_BindingPriority_LocalValue() |
||||
|
{ |
||||
|
var textBlock = new TextBlock |
||||
|
{ |
||||
|
DataContext = new Class1(), |
||||
|
}; |
||||
|
|
||||
|
var target = new Binding(nameof(Class1.Foo)); |
||||
|
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true); |
||||
|
var subject = (ExpressionSubject)instanced.Subject; |
||||
|
object result = null; |
||||
|
|
||||
|
subject.Subscribe(x => result = x); |
||||
|
|
||||
|
Assert.Equal(new BindingNotification("foo"), result); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void Initiate_Should_Not_Enable_Data_Validation_With_BindingPriority_TemplatedParent() |
||||
|
{ |
||||
|
var textBlock = new TextBlock |
||||
|
{ |
||||
|
DataContext = new Class1(), |
||||
|
}; |
||||
|
|
||||
|
var target = new Binding(nameof(Class1.Foo)) { Priority = BindingPriority.TemplatedParent }; |
||||
|
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true); |
||||
|
var subject = (ExpressionSubject)instanced.Subject; |
||||
|
object result = null; |
||||
|
|
||||
|
subject.Subscribe(x => result = x); |
||||
|
|
||||
|
Assert.IsType<string>(result); |
||||
|
} |
||||
|
|
||||
|
private class Class1 |
||||
|
{ |
||||
|
public string Foo { get; set; } = "foo"; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue