BindingTests_DataValidation.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Reactive.Linq;
  3. using Avalonia.Controls;
  4. using Avalonia.Data;
  5. using Avalonia.Data.Core;
  6. using Avalonia.Markup.Data;
  7. using Xunit;
  8. namespace Avalonia.Markup.UnitTests.Data
  9. {
  10. public class BindingTests_DataValidation
  11. {
  12. [Fact]
  13. public void Initiate_Should_Not_Enable_Data_Validation_With_BindingPriority_LocalValue()
  14. {
  15. var textBlock = new TextBlock
  16. {
  17. DataContext = new Class1(),
  18. };
  19. var target = new Binding(nameof(Class1.Foo));
  20. var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: false);
  21. var subject = (BindingExpression)instanced.Subject;
  22. object result = null;
  23. subject.Subscribe(x => result = x);
  24. Assert.IsType<string>(result);
  25. }
  26. [Fact]
  27. public void Initiate_Should_Enable_Data_Validation_With_BindingPriority_LocalValue()
  28. {
  29. var textBlock = new TextBlock
  30. {
  31. DataContext = new Class1(),
  32. };
  33. var target = new Binding(nameof(Class1.Foo));
  34. var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true);
  35. var subject = (BindingExpression)instanced.Subject;
  36. object result = null;
  37. subject.Subscribe(x => result = x);
  38. Assert.Equal(new BindingNotification("foo"), result);
  39. }
  40. [Fact]
  41. public void Initiate_Should_Not_Enable_Data_Validation_With_BindingPriority_TemplatedParent()
  42. {
  43. var textBlock = new TextBlock
  44. {
  45. DataContext = new Class1(),
  46. };
  47. var target = new Binding(nameof(Class1.Foo)) { Priority = BindingPriority.Template };
  48. var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true);
  49. var subject = (BindingExpression)instanced.Subject;
  50. object result = null;
  51. subject.Subscribe(x => result = x);
  52. Assert.IsType<string>(result);
  53. }
  54. private class Class1
  55. {
  56. public string Foo { get; set; } = "foo";
  57. }
  58. }
  59. }