Browse Source

some simple tests for bindind, tempaltebinding and control template

donandren 8 years ago
parent
commit
1ec99deaf6
1 changed files with 88 additions and 0 deletions
  1. 88 0
      tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs

+ 88 - 0
tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs

@@ -3,7 +3,10 @@
 
 using System.Linq;
 using Avalonia.Controls;
+using Avalonia.Controls.Presenters;
+using Avalonia.Markup.Xaml.Data;
 using Avalonia.Markup.Xaml.Styling;
+using Avalonia.Markup.Xaml.Templates;
 using Avalonia.Media;
 using Avalonia.Styling;
 using Avalonia.UnitTests;
@@ -188,6 +191,91 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
             }
         }
 
+        [Fact]
+        public void Simple_Xaml_Binding_Is_Operational()
+        {
+            using (UnitTestApplication.Start(TestServices.MockPlatformWrapper
+                                    .With(windowingPlatform: new MockWindowingPlatform())))
+            {
+                var xaml =
+@"<Window xmlns='https://github.com/avaloniaui' Content='{Binding}'/>";
+
+                var target = AvaloniaXamlLoader.Parse<ContentControl>(xaml);
+
+                Assert.Null(target.Content);
+
+                target.DataContext = "Foo";
+
+                Assert.Equal("Foo", target.Content);
+            }
+        }
+
+        [Fact]
+        public void Control_Template_Is_Operational()
+        {
+            var xaml = @"
+<ContentControl xmlns='https://github.com/avaloniaui' 
+                xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
+    <ContentControl.Template>
+        <ControlTemplate>
+            <ContentPresenter Name='PART_ContentPresenter' 
+                        Content='{TemplateBinding Content}'/>
+        </ControlTemplate>
+    </ContentControl.Template>
+</ContentControl>";
+
+            var target = AvaloniaXamlLoader.Parse<ContentControl>(xaml);
+
+            Assert.NotNull(target.Template);
+
+            Assert.Null(target.Presenter);
+
+            target.ApplyTemplate();
+
+            Assert.NotNull(target.Presenter);
+
+            target.Content = "Foo";
+
+            Assert.Equal("Foo", target.Presenter.Content);
+        }
+
+        [Fact]
+        public void Style_ControlTemplate_Is_Build()
+        {
+                var xaml = @"
+<Style xmlns='https://github.com/avaloniaui' Selector='ContentControl'>
+  <Setter Property='Template'>
+     <ControlTemplate>
+        <ContentPresenter Name='PART_ContentPresenter'
+                       Background='{TemplateBinding Background}'
+                       BorderBrush='{TemplateBinding BorderBrush}'
+                       BorderThickness='{TemplateBinding BorderThickness}'
+                       Content='{TemplateBinding Content}'
+                       ContentTemplate='{TemplateBinding ContentTemplate}'
+                       Padding='{TemplateBinding Padding}' />
+      </ControlTemplate>
+  </Setter>
+</Style> ";
+
+                var style = AvaloniaXamlLoader.Parse<Style>(xaml);
+
+                Assert.Equal(1, style.Setters.Count());
+
+                var setter = (Setter)style.Setters.First();
+
+                Assert.Equal(ContentControl.TemplateProperty, setter.Property);
+
+                Assert.IsType<ControlTemplate>(setter.Value);
+
+                var template = (ControlTemplate)setter.Value;
+
+                var control = new ContentControl();
+
+                var result = (ContentPresenter)template.Build(control);
+
+                Assert.NotNull(result);
+        }
+
         [Fact]
         public void Named_Control_Is_Added_To_NameScope()
         {