Browse Source

Added failing tests for #10110.

pull/10189/head
Steven Kirk 3 years ago
parent
commit
1e926dac72
  1. 18
      tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs
  2. 25
      tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs

18
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Binding.cs

@ -1285,6 +1285,24 @@ namespace Avalonia.Base.UnitTests
subscription.Dispose();
}
[Theory]
[InlineData(BindingPriority.LocalValue)]
[InlineData(BindingPriority.Style)]
public void Binding_Producing_UnsetValue_Does_Not_Cause_Unsubscribe(BindingPriority priority)
{
var target = new Class1();
var source = new Subject<BindingValue<string>>();
target.Bind(Class1.FooProperty, source, priority);
source.OnNext("foo");
Assert.Equal("foo", target.GetValue(Class1.FooProperty));
source.OnNext(BindingValue<string>.Unset);
Assert.Equal("foodefault", target.GetValue(Class1.FooProperty));
source.OnNext("bar");
Assert.Equal("bar", target.GetValue(Class1.FooProperty));
}
[Fact]
public void Produces_Correct_Values_And_Base_Values_With_Multiple_Animation_Bindings()
{

25
tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs

@ -307,7 +307,30 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
Assert.True(buttonResources.ContainsDeferredKey("Red"));
}
}
[Fact]
public void Dynamically_Changing_Referenced_Resources_Works_With_DynamicResource()
{
var xaml = @"
<UserControl xmlns='https://github.com/avaloniaui'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<UserControl.Resources>
<Color x:Key='color'>Red</Color>
<SolidColorBrush x:Key='brush' Color='{DynamicResource color}' />
</UserControl.Resources>
</UserControl>";
var userControl = (UserControl)AvaloniaRuntimeXamlLoader.Load(xaml);
Assert.Equal(Colors.Red, ((ISolidColorBrush)userControl.FindResource("brush")!).Color);
userControl.Resources.Remove("color");
Assert.Equal(default, ((ISolidColorBrush)userControl.FindResource("brush")!).Color);
userControl.Resources.Add("color", Colors.Blue);
Assert.Equal(Colors.Blue, ((ISolidColorBrush)userControl.FindResource("brush")!).Color);
}
private IDisposable StyledWindow(params (string, string)[] assets)
{
var services = TestServices.StyledWindow.With(

Loading…
Cancel
Save