diff --git a/src/Avalonia.Base/Input/IAsyncDataTransferItem.cs b/src/Avalonia.Base/Input/IAsyncDataTransferItem.cs index 8ed053ac35..46bac36cf1 100644 --- a/src/Avalonia.Base/Input/IAsyncDataTransferItem.cs +++ b/src/Avalonia.Base/Input/IAsyncDataTransferItem.cs @@ -26,7 +26,7 @@ public interface IAsyncDataTransferItem /// of the generic argument of the underlying . /// /// - /// To retrieve a typed value, use . + /// To retrieve a typed value, use . /// /// /// diff --git a/src/Avalonia.Base/Input/Platform/PlatformDataTransferItem.cs b/src/Avalonia.Base/Input/Platform/PlatformDataTransferItem.cs index da653985ba..b6721b80ec 100644 --- a/src/Avalonia.Base/Input/Platform/PlatformDataTransferItem.cs +++ b/src/Avalonia.Base/Input/Platform/PlatformDataTransferItem.cs @@ -27,7 +27,7 @@ internal abstract class PlatformDataTransferItem : IDataTransferItem, IAsyncData => Array.IndexOf(Formats, format) >= 0; public object? TryGetRaw(DataFormat format) - => Contains(format) ? TryGetRawCore(format) : Task.FromResult(null); + => Contains(format) ? TryGetRawCore(format) : null; public Task TryGetRawAsync(DataFormat format) { diff --git a/tests/Avalonia.Base.UnitTests/Input/PlatformDataTransferItemTests.cs b/tests/Avalonia.Base.UnitTests/Input/PlatformDataTransferItemTests.cs new file mode 100644 index 0000000000..f68ef336a7 --- /dev/null +++ b/tests/Avalonia.Base.UnitTests/Input/PlatformDataTransferItemTests.cs @@ -0,0 +1,62 @@ +using System.Threading.Tasks; +using Avalonia.Input; +using Avalonia.Input.Platform; +using Xunit; + +namespace Avalonia.Base.UnitTests.Input; + +public sealed class PlatformDataTransferItemTests +{ + [Fact] + public void TryGetRaw_Should_Return_Null_When_Format_Is_Unknown() + { + var format = DataFormat.CreateBytesApplicationFormat("test-format"); + var item = new TestPlatformDataTransferItem([]); + + var value = item.TryGetRaw(format); + + Assert.Null(value); + } + + [Fact] + public void TryGetRaw_Should_Return_Expected_Value_When_Format_Is_Known() + { + var format = DataFormat.CreateBytesApplicationFormat("test-format"); + var item = new TestPlatformDataTransferItem([format]); + + var value = item.TryGetRaw(format); + + Assert.Same(format, value); + } + + [Fact] + public async Task TryGetRawAsync_Should_Return_Null_When_Format_Is_Unknown() + { + var format = DataFormat.CreateBytesApplicationFormat("test-format"); + var item = new TestPlatformDataTransferItem([]); + + var value = await item.TryGetRawAsync(format); + + Assert.Null(value); + } + + [Fact] + public async Task TryGetRawAsync_Should_Return_Expected_Value_When_Format_Is_Known() + { + var format = DataFormat.CreateBytesApplicationFormat("test-format"); + var item = new TestPlatformDataTransferItem([format]); + + var value = await item.TryGetRawAsync(format); + + Assert.Same(format, value); + } + + private sealed class TestPlatformDataTransferItem(DataFormat[] dataFormats) : PlatformDataTransferItem + { + protected override DataFormat[] ProvideFormats() + => dataFormats; + + protected override object TryGetRawCore(DataFormat format) + => format; + } +}