// 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 Avalonia.Collections; using Avalonia.Controls; using Avalonia.Controls.Presenters; using Avalonia.Data; using Avalonia.Data.Converters; using Avalonia.Markup.Data; using Avalonia.Markup.Xaml.Styling; using Avalonia.Markup.Xaml.Templates; using Avalonia.Media; using Avalonia.Media.Immutable; using Avalonia.Styling; using Avalonia.UnitTests; using Portable.Xaml; using System.Collections; using System.ComponentModel; using System.Linq; using Xunit; namespace Avalonia.Markup.Xaml.UnitTests.Xaml { public class BasicTests { [Fact] public void Simple_Property_Is_Set() { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); Assert.NotNull(target); Assert.Equal("Foo", target.Content); } [Fact] public void Default_Content_Property_Is_Set() { var xaml = @"Foo"; var target = AvaloniaXamlLoader.Parse(xaml); Assert.NotNull(target); Assert.Equal("Foo", target.Content); } [Fact] public void AvaloniaProperty_Without_Getter_And_Setter_Is_Set() { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); Assert.Equal(55, target.GetValue(NonControl.FooProperty)); } [Fact] public void AvaloniaProperty_With_Getter_And_No_Setter_Is_Set() { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); Assert.Equal("bar", target.Bar); } [Fact] public void Attached_Property_Is_Set() { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); Assert.NotNull(target); Assert.Equal(21.0, TextBlock.GetFontSize(target)); } [Fact] public void Attached_Property_Is_Set_On_Control_Outside_Avalonia_Namspace() { // Test for issue #1548 var xaml = @" "; var target = AvaloniaXamlLoader.Parse(xaml); Assert.Equal(2, Grid.GetColumn((TestControl)target.Content)); } [Fact] public void Attached_Property_With_Namespace_Is_Set() { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); Assert.NotNull(target); Assert.Equal("Bar", BasicTestsAttachedPropertyHolder.GetFoo(target)); } [Fact] public void Attached_Property_Supports_Binding() { using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) { var xaml = @""; var target = AvaloniaXamlLoader.Parse(xaml); target.DataContext = 21.0; Assert.Equal(21.0, TextBlock.GetFontSize(target)); } } [Fact] public void Attached_Property_In_Panel_Is_Set() { var xaml = @" Foo "; var target = AvaloniaXamlLoader.Parse(xaml); Assert.Empty(target.Children); Assert.Equal("Foo", ToolTip.GetTip(target)); } [Fact] public void NonExistent_Property_Throws() { var xaml = @""; Assert.Throws(() => AvaloniaXamlLoader.Parse(xaml)); } [Fact] public void Non_Attached_Property_With_Attached_Property_Syntax_Throws() { var xaml = @""; Assert.Throws(() => AvaloniaXamlLoader.Parse(xaml)); } [Fact] public void ContentControl_ContentTemplate_Is_Functional() { var xaml = @" "; var contentControl = AvaloniaXamlLoader.Parse(xaml); var target = contentControl.ContentTemplate; Assert.NotNull(target); var txt = (TextBlock)target.Build(null); Assert.Equal("Foo", txt.Text); } [Fact] public void Named_Control_Is_Added_To_NameScope_Simple() { var xaml = @" "; var control = AvaloniaXamlLoader.Parse(xaml); var button = control.FindControl "; var control = AvaloniaXamlLoader.Parse(xaml); var button = control.FindControl