| 
					
				 | 
			
			
				@@ -1,126 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using System.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using System.Linq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using Avalonia.Controls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using Avalonia.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using Avalonia.Markup.Xaml.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using Avalonia.UnitTests; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using Xunit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-namespace Avalonia.Markup.Xaml.UnitTests.Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public class BindingTests_Validation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void Non_Validated_Property_Does_Not_Receive_BindingNotifications() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var source = new ValidationTestModel { MustBePositive = 5 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var target = new TestControl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DataContext = source, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                [!TestControl.NonValidatedProperty] = new Binding(nameof(source.MustBePositive)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Assert.Empty(target.Notifications); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        [Fact] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void Validated_Direct_Property_Receives_BindingNotifications() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var source = new ValidationTestModel { MustBePositive = 5 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var target = new TestControl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DataContext = source, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            target.Bind( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                TestControl.ValidatedDirectProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new Binding(nameof(source.MustBePositive), BindingMode.TwoWay)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            target.ValidatedDirect = 6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            target.ValidatedDirect = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            target.ValidatedDirect = 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Assert.Equal( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new[] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new BindingNotification(5), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new BindingNotification(6), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new BindingNotification(new ArgumentOutOfRangeException("value"), BindingErrorType.DataValidationError), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new BindingNotification(7), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                target.Notifications.AsEnumerable()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private class TestControl : Control 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public static readonly StyledProperty<int> NonValidatedProperty = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                AvaloniaProperty.Register<TestControl, int>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    nameof(Validated), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableDataValidation: false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public static readonly StyledProperty<int> ValidatedProperty = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                AvaloniaProperty.Register<TestControl, int>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    nameof(Validated), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableDataValidation: true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public static readonly DirectProperty<TestControl, int> ValidatedDirectProperty = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                AvaloniaProperty.RegisterDirect<TestControl, int>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    nameof(Validated), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    o => o.ValidatedDirect, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    (o, v) => o.ValidatedDirect = v, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    enableDataValidation: true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            private int _direct; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public int NonValidated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                get { return GetValue(NonValidatedProperty); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                set { SetValue(NonValidatedProperty, value); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public int Validated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                get { return GetValue(ValidatedProperty); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                set { SetValue(ValidatedProperty, value); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public int ValidatedDirect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                get { return _direct; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                set { SetAndRaise(ValidatedDirectProperty, ref _direct, value); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public IList<BindingNotification> Notifications { get; } = new List<BindingNotification>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            protected override void BindingNotificationReceived(AvaloniaProperty property, BindingNotification notification) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Notifications.Add(notification); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private class ValidationTestModel : NotifyingBase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            private int _mustBePositive; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public int MustBePositive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                get { return _mustBePositive; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                set 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (value <= 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        throw new ArgumentOutOfRangeException(nameof(value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (_mustBePositive != value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        _mustBePositive = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        RaisePropertyChanged(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 |