File: //lib/python3/dist-packages/twisted/internet/test/__pycache__/test_defer_yieldfrom.cpython-310.pyc
o
�b� � @ sP d Z ddlZddlmZmZmZmZ ddlmZ ddl m
Z
G dd� de
�ZdS )z/
Tests for C{yield from} support in Deferreds.
� N)�Deferred�ensureDeferred�fail�succeed)�Clock)�TestCasec @ sH e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dd� Z
dS )�YieldFromTestsz@
Tests for using Deferreds in conjunction with PEP-380.
c C sJ dd� }|� }| � |tj� t|�}| � |t� | �|�}| �|d� dS )zM
L{ensureDeferred} will turn a coroutine into a L{Deferred}.
c s � � t d�} | E d H }|S �N�foo�r ��d�res� r �L/usr/lib/python3/dist-packages/twisted/internet/test/test_defer_yieldfrom.py�run � �
z/YieldFromTests.test_ensureDeferred.<locals>.runr N)�assertIsInstance�types�
GeneratorTyper r �successResultOf�assertEqual��selfr �rr r r r r �test_ensureDeferred s
z"YieldFromTests.test_ensureDeferredc sX � fdd�}dd� � |� }| � |tj� t�|�}| � |t� | �|�}| �|d� dS )zU
L{Deferred.fromCoroutine} will turn a coroutine into a L{Deferred}.
c 3 s$ � t d�} | E d H � � E d H }|S )N�barr r
��run2r r r 0 s
�
z6YieldFromTests.test_DeferredfromCoroutine.<locals>.runc s r r
r r
r r r r 6 r z7YieldFromTests.test_DeferredfromCoroutine.<locals>.run2r N)r r r r �
fromCoroutiner r r r r r �test_DeferredfromCoroutine+ s
z)YieldFromTests.test_DeferredfromCoroutinec C s. dd� }t �|� �}| �|�}| �|d� dS )ze
L{Deferred.fromCoroutine} allows a function to C{yield from} a
L{Deferred}.
c s r r
r r
r r r r M r z&YieldFromTests.test_basic.<locals>.runr N)r r r r �r r r r r r r �
test_basicG s
zYieldFromTests.test_basicc C sD dd� }t �|� �}| �|�}| �t|j�t� | �|jjd� dS )��
An exception in a generator scheduled with L{Deferred.fromCoroutine}
will cause the returned L{Deferred} to fire with a failure.
c s s � t d�} | E d H td��)Nr �Oh no!)r �
ValueError�r r r r r \ s �
z*YieldFromTests.test_exception.<locals>.run)r% N)r r �failureResultOfr �type�valuer&