Browse Source

Added failing test for #1303

`TemplateBinding_With_Null_Path_Works` is a failing test for #1303, also added a passing test for the same thing with `Binding`: `Binding_With_Null_Path_Works`.
Steven Kirk 8 years ago
parent
commit
3243e0fd15

+ 23 - 0
tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs

@@ -13,6 +13,7 @@ using Moq;
 using Xunit;
 using System.ComponentModel;
 using System.Runtime.CompilerServices;
+using Avalonia.UnitTests;
 
 namespace Avalonia.Markup.Xaml.UnitTests.Data
 {
@@ -337,6 +338,28 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
             Assert.Equal("foo", target.Content);
         }
 
+        [Fact]
+        public void Binding_With_Null_Path_Works()
+        {
+            using (UnitTestApplication.Start(TestServices.StyledWindow))
+            {
+                var xaml = @"
+<Window xmlns='https://github.com/avaloniaui'
+        xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
+        xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Xaml;assembly=Avalonia.Markup.Xaml.UnitTests'>
+    <TextBlock Name='textBlock' Text='{Binding}'/>
+</Window>";
+                var loader = new AvaloniaXamlLoader();
+                var window = (Window)loader.Load(xaml);
+                var textBlock = window.FindControl<TextBlock>("textBlock");
+
+                window.DataContext = "foo";
+                window.ApplyTemplate();
+
+                Assert.Equal("foo", textBlock.Text);
+            }
+        }
+
         private class TwoWayBindingTest : Control
         {
             public static readonly StyledProperty<string> TwoWayProperty =

+ 32 - 0
tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_TemplatedParent.cs

@@ -11,6 +11,9 @@ using Avalonia.Markup.Xaml.Data;
 using Avalonia.Styling;
 using Xunit;
 using System.Reactive.Disposables;
+using Avalonia.UnitTests;
+using Avalonia.VisualTree;
+using System.Linq;
 
 namespace Avalonia.Markup.Xaml.UnitTests.Data
 {
@@ -56,6 +59,35 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
                 BindingPriority.TemplatedParent));
         }
 
+        [Fact]
+        public void TemplateBinding_With_Null_Path_Works()
+        {
+            using (UnitTestApplication.Start(TestServices.StyledWindow))
+            {
+                var xaml = @"
+<Window xmlns='https://github.com/avaloniaui'
+        xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
+        xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Xaml;assembly=Avalonia.Markup.Xaml.UnitTests'>
+    <Button Name='button'>
+       <Button.Template>
+         <ControlTemplate>
+           <TextBlock Text='{TemplateBinding}'/>
+         </ControlTemplate>
+       </Button.Template>
+    </Button>
+</Window>";
+                var loader = new AvaloniaXamlLoader();
+                var window = (Window)loader.Load(xaml);
+                var button = window.FindControl<Button>("button");
+
+                window.ApplyTemplate();
+                button.ApplyTemplate();
+
+                var textBlock = (TextBlock)button.GetVisualChildren().Single();
+                Assert.Equal("Avalonia.Controls.Button", textBlock.Text);
+            }
+        }
+
         private Mock<IControl> CreateTarget(
             ITemplatedControl templatedParent = null,
             string text = null)