When_Awaiting_Already_Completed_Task_And_Using_SynchronizationContext_Then_Continuation_Does_Not_Run_In_SynchronizationContext()
        {
            var mockSynchronizationContext = new MockSynchronizationContext();

            using (var contextScope = new ScopedSynchronizationContext(mockSynchronizationContext))
            {
                When_Awaiting_Already_Completed_Task_And_Using_SynchronizationContext_Then_Synchronization_Context_Is_Not_Used_Impl(
                    mockSynchronizationContext).Wait();
            }
        }
        When_Awaiting_Running_Task_And_Using_SynchronizationContext_Then_Continuation_Run_In_Synchronization_Context()
        {
            var mockSynchronizationContext = new MockSynchronizationContext();

            using (var contextScope = new ScopedSynchronizationContext(mockSynchronizationContext))
            {
                When_Awaiting_Running_Task_And_Using_SynchronizationContext_Then_Continuation_Run_In_Synchronization_Context_impl(
                    mockSynchronizationContext).Wait();
            }
        }
        When_Awaiting_Many_Running_Tasks_And_Using_Using_CurrentThread_SynchronizationContext_Then_Only_First_Continuation_Run_In_Synchronization_Context(int numberOfAwaitedTasks)
        {
            var mockSynchronizationContext = new MockSynchronizationContext();

            using (var contextScope = new ScopedSynchronizationContext(mockSynchronizationContext))
            {
                When_Awaiting_Many_Running_Tasks_And_Using_CurrentThread_SynchronizationContext_Then_Only_First_Continuation_Run_In_Synchronization_Context(
                    numberOfAwaitedTasks,
                    mockSynchronizationContext).Wait();
            }
        }