File: System\Windows\Threading\DispatcherPriorityAwaitableTests..cs
Web Access
Project: src\src\Microsoft.DotNet.Wpf\tests\UnitTests\WindowsBase.Tests\WindowsBase.Tests.csproj (WindowsBase.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Windows.Threading.Tests;
 
public class DispatcherPriorityAwaitableTests
{
    [Theory]
    [InlineData(DispatcherPriority.ApplicationIdle)]
    [InlineData(DispatcherPriority.Background)]
    [InlineData(DispatcherPriority.ContextIdle)]
    [InlineData(DispatcherPriority.DataBind)]
    [InlineData(DispatcherPriority.Inactive)]
    [InlineData(DispatcherPriority.Input)]
    [InlineData(DispatcherPriority.Loaded)]
    [InlineData(DispatcherPriority.Normal)]
    [InlineData(DispatcherPriority.Render)]
    [InlineData(DispatcherPriority.Send)]
    [InlineData(DispatcherPriority.SystemIdle)]
    public void GetAwaiter_InvokeWithDispatcher_ReturnsExpected(DispatcherPriority priority)
    {
        DispatcherPriorityAwaitable awaitable;
        try
        {
            awaitable = Dispatcher.Yield(priority);
        }
        catch (InvalidOperationException)
        {
            // Yield throws if there is no dispatcher.
            return;
        }
 
        DispatcherPriorityAwaiter awaiter = awaitable.GetAwaiter();
        Assert.False(awaiter.IsCompleted);
        Assert.Equal(awaiter, awaitable.GetAwaiter());
    }
    
    [Fact]
    public void GetAwaiter_InvokeDefault_ReturnsExpected()
    {
        var awaitable = new DispatcherPriorityAwaitable();
        DispatcherPriorityAwaiter awaiter = awaitable.GetAwaiter();
        Assert.False(awaiter.IsCompleted);
        Assert.Equal(awaiter, awaitable.GetAwaiter());
    }
}