diff --git a/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs b/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs index 9c7d0347a6..b8717e88ce 100644 --- a/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs +++ b/tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs @@ -25,6 +25,36 @@ namespace Avalonia.Markup.UnitTests.Data Assert.Equal("bar", result); } + [Fact] + public async void Should_Get_UnsetValue_For_Invalid_Array_Index() + { + var data = new { Foo = new[] { "foo", "bar" } }; + var target = new ExpressionObserver(data, "Foo[invalid]"); + var result = await target.Take(1); + + Assert.Equal(AvaloniaProperty.UnsetValue, result); + } + + [Fact] + public async void Should_Get_UnsetValue_For_Invalid_Dictionary_Index() + { + var data = new { Foo = new Dictionary { { 1, "foo" } } }; + var target = new ExpressionObserver(data, "Foo[invalid]"); + var result = await target.Take(1); + + Assert.Equal(AvaloniaProperty.UnsetValue, result); + } + + [Fact] + public async void Should_Get_UnsetValue_For_Object_Without_Indexer() + { + var data = new { Foo = 5 }; + var target = new ExpressionObserver(data, "Foo[noindexer]"); + var result = await target.Take(1); + + Assert.Equal(AvaloniaProperty.UnsetValue, result); + } + [Fact] public async void Should_Get_MultiDimensional_Array_Value() {