Browse Source
* feat: x:Shared * test: Add x:Shared test * fix: Address review * fix: Address review * fix: Address reviewpull/16712/head
committed by
GitHub
4 changed files with 114 additions and 5 deletions
@ -0,0 +1,54 @@ |
|||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.UnitTests; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Avalonia.Markup.Xaml.UnitTests.Xaml; |
||||
|
|
||||
|
public class XSharedDirectiveTests : XamlTestBase |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Should_Create_New_Instance_Where_x_Share_Is_False() |
||||
|
{ |
||||
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
||||
|
{ |
||||
|
const string xaml = $$"""
|
||||
|
<Window xmlns="https://github.com/avaloniaui" |
||||
|
xmlns:sys="clr-namespace:System;assembly=netstandard" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> |
||||
|
<Window.Resources> |
||||
|
<ColumnDefinitions x:Key="InplicitSharedResource"> |
||||
|
<ColumnDefinition Width="150" /> |
||||
|
<ColumnDefinition Width="10" /> |
||||
|
<ColumnDefinition Width="Auto" /> |
||||
|
</ColumnDefinitions> |
||||
|
<ColumnDefinitions x:Key="NotSharedResource" |
||||
|
x:Shared="false"> |
||||
|
<ColumnDefinition Width="150" /> |
||||
|
<ColumnDefinition Width="10" /> |
||||
|
<ColumnDefinition Width="Auto" /> |
||||
|
</ColumnDefinitions> |
||||
|
</Window.Resources> |
||||
|
</Window> |
||||
|
""";
|
||||
|
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml); |
||||
|
window.ApplyTemplate(); |
||||
|
|
||||
|
var implicitSharedInstance1 = window.FindResource("ImplicitSharedResource"); |
||||
|
Assert.NotNull(implicitSharedInstance1); |
||||
|
var implicitSharedInstance2 = window.FindResource("ImplicitSharedResource"); |
||||
|
Assert.NotNull(implicitSharedInstance2); |
||||
|
|
||||
|
Assert.Same(implicitSharedInstance1, implicitSharedInstance2); |
||||
|
|
||||
|
var notSharedResource1 = window.FindResource("NotSharedResource"); |
||||
|
Assert.NotNull(notSharedResource1); |
||||
|
|
||||
|
var notSharedResource2 = window.FindResource("NotSharedResource"); |
||||
|
Assert.NotNull(notSharedResource2); |
||||
|
|
||||
|
Assert.NotSame(notSharedResource1, notSharedResource2); |
||||
|
|
||||
|
Assert.Equal(notSharedResource1.ToString(), notSharedResource2.ToString()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue