3 changed files with 68 additions and 0 deletions
@ -0,0 +1,63 @@ |
|||||
|
// 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 Moq; |
||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.Data; |
||||
|
using Avalonia.Markup.Xaml.Data; |
||||
|
using Avalonia.Styling; |
||||
|
using Xunit; |
||||
|
using System.Reactive.Disposables; |
||||
|
|
||||
|
namespace Avalonia.Markup.Xaml.UnitTests.Data |
||||
|
{ |
||||
|
public class BindingTests_Self |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Binding_To_Property_On_Self_Should_Work() |
||||
|
{ |
||||
|
var target = new TextBlock |
||||
|
{ |
||||
|
Tag = "Hello World!", |
||||
|
[!TextBlock.TextProperty] = new Binding("Tag") |
||||
|
{ |
||||
|
RelativeSource = new RelativeSource(RelativeSourceMode.Self) |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
Assert.Equal("Hello World!", target.Text); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void TwoWay_Binding_To_Property_On_Self_Should_Work() |
||||
|
{ |
||||
|
var target = new TextBlock |
||||
|
{ |
||||
|
Tag = "Hello World!", |
||||
|
[!TextBlock.TextProperty] = new Binding("Tag", BindingMode.TwoWay) |
||||
|
{ |
||||
|
RelativeSource = new RelativeSource(RelativeSourceMode.Self) |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
Assert.Equal("Hello World!", target.Text); |
||||
|
target.Text = "Goodbye cruel world :("; |
||||
|
Assert.Equal("Goodbye cruel world :(", target.Text); |
||||
|
} |
||||
|
|
||||
|
private Mock<IControl> CreateTarget( |
||||
|
ITemplatedControl templatedParent = null, |
||||
|
string text = null) |
||||
|
{ |
||||
|
var result = new Mock<IControl>(); |
||||
|
|
||||
|
result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent); |
||||
|
result.Setup(x => x.GetValue((AvaloniaProperty)Control.TemplatedParentProperty)).Returns(templatedParent); |
||||
|
result.Setup(x => x.GetValue((AvaloniaProperty)TextBox.TextProperty)).Returns(text); |
||||
|
result.Setup(x => x.Bind(It.IsAny<AvaloniaProperty>(), It.IsAny<IObservable<object>>(), It.IsAny<BindingPriority>())) |
||||
|
.Returns(Disposable.Empty); |
||||
|
return result; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue