|
|
|
@ -14,6 +14,8 @@ using Avalonia.UnitTests; |
|
|
|
using Moq; |
|
|
|
using Xunit; |
|
|
|
using System.Collections.ObjectModel; |
|
|
|
using System.Reactive.Linq; |
|
|
|
using System.Reactive.Subjects; |
|
|
|
|
|
|
|
namespace Avalonia.Controls.UnitTests |
|
|
|
{ |
|
|
|
@ -396,6 +398,36 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
Assert.Equal(control.Text, control.ItemSelector(input, selectedItem)); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Text_Validation() |
|
|
|
{ |
|
|
|
RunTest((control, textbox) => |
|
|
|
{ |
|
|
|
var exception = new InvalidCastException("failed validation"); |
|
|
|
var textObservable = new BehaviorSubject<BindingNotification>(new BindingNotification(exception, BindingErrorType.DataValidationError)); |
|
|
|
control.Bind(AutoCompleteBox.TextProperty, textObservable); |
|
|
|
Dispatcher.UIThread.RunJobs(); |
|
|
|
|
|
|
|
Assert.Equal(DataValidationErrors.GetHasErrors(control), true); |
|
|
|
Assert.Equal(DataValidationErrors.GetErrors(control).SequenceEqual(new[] { exception }), true); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SelectedItem_Validation() |
|
|
|
{ |
|
|
|
RunTest((control, textbox) => |
|
|
|
{ |
|
|
|
var exception = new InvalidCastException("failed validation"); |
|
|
|
var itemObservable = new BehaviorSubject<BindingNotification>(new BindingNotification(exception, BindingErrorType.DataValidationError)); |
|
|
|
control.Bind(AutoCompleteBox.SelectedItemProperty, itemObservable); |
|
|
|
Dispatcher.UIThread.RunJobs(); |
|
|
|
|
|
|
|
Assert.Equal(DataValidationErrors.GetHasErrors(control), true); |
|
|
|
Assert.Equal(DataValidationErrors.GetErrors(control).SequenceEqual(new[] { exception }), true); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Retrieves a defined predicate filter through a new AutoCompleteBox
|
|
|
|
|