BindingTests_TemplatedParent.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright (c) The Perspex Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System;
  4. using System.Reactive.Linq;
  5. using System.Reactive.Subjects;
  6. using Moq;
  7. using Perspex.Controls;
  8. using Perspex.Data;
  9. using Perspex.Markup.Xaml.Data;
  10. using Perspex.Styling;
  11. using Xunit;
  12. namespace Perspex.Markup.Xaml.UnitTests.Data
  13. {
  14. public class BindingTests_TemplatedParent
  15. {
  16. [Fact]
  17. public void OneWay_Binding_Should_Be_Set_Up()
  18. {
  19. var target = CreateTarget();
  20. var binding = new Binding
  21. {
  22. Mode = BindingMode.OneWay,
  23. RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent),
  24. Priority = BindingPriority.TemplatedParent,
  25. Path = "Foo",
  26. };
  27. target.Object.Bind(TextBox.TextProperty, binding);
  28. target.Verify(x => x.Bind(
  29. TextBox.TextProperty,
  30. It.IsAny<IObservable<object>>(),
  31. BindingPriority.TemplatedParent));
  32. }
  33. [Fact]
  34. public void TwoWay_Binding_Should_Be_Set_Up()
  35. {
  36. var target = CreateTarget();
  37. var binding = new Binding
  38. {
  39. Mode = BindingMode.TwoWay,
  40. RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent),
  41. Priority = BindingPriority.TemplatedParent,
  42. Path = "Foo",
  43. };
  44. target.Object.Bind(TextBox.TextProperty, binding);
  45. target.Verify(x => x.Bind(
  46. TextBox.TextProperty,
  47. It.IsAny<ISubject<object>>(),
  48. BindingPriority.TemplatedParent));
  49. }
  50. private Mock<IControl> CreateTarget(
  51. ITemplatedControl templatedParent = null,
  52. string text = null)
  53. {
  54. var result = new Mock<IControl>();
  55. result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
  56. result.Setup(x => x.GetValue((PerspexProperty)Control.TemplatedParentProperty)).Returns(templatedParent);
  57. result.Setup(x => x.GetValue((PerspexProperty)TextBox.TextProperty)).Returns(text);
  58. return result;
  59. }
  60. }
  61. }