File: //usr/local/lib/python3.7/test/__pycache__/test_yield_from.cpython-37.pyc
B
��g�w � @ sN d Z ddlZddlZddlmZmZmZ G dd� dej�Ze dkrJe�
� dS )z�
Test suite for PEP 380 implementation
adapted from original tests written by Greg Ewing
see <http://www.cosc.canterbury.ac.nz/greg.ewing/python/yield-from/YieldFrom-Python3.1.2-rev5.zip>
� N)�captured_stderr�
disable_gc�
gc_collectc @ s e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zd0d1� Zd2d3� Zd4d5� Zd6d7� Zd8d9� Zd:d;� Z d<d=� Z!d>d?� Z"d@dA� Z#dBdC� Z$dDS )E�TestPEP380Operationz
Test semantics.
c sX g �� �fdd�}�fdd�� x|� D ]}�� d|f � q&W | ��dddd d
g� dS )zH
Test delegation of initial next() call to subgenerator
c 3 s$ �� d� � � E d H �� d� d S )NzStarting g1zFinishing g1)�append� )�g2�tracer �0/usr/local/lib/python3.7/test/test_yield_from.py�g1 s
zOTestPEP380Operation.test_delegation_of_initial_next_to_subgenerator.<locals>.g1c 3 s � � d� dV � � d� d S )NzStarting g2�* zFinishing g2)r r )r r r
r s
zOTestPEP380Operation.test_delegation_of_initial_next_to_subgenerator.<locals>.g2z
Yielded %szStarting g1zStarting g2z
Yielded 42zFinishing g2zFinishing g1N)r �assertEqual)�selfr �xr )r r r
�/test_delegation_of_initial_next_to_subgenerator s zCTestPEP380Operation.test_delegation_of_initial_next_to_subgeneratorc
s� g �� �fdd�}�fdd�� y$x|� D ]}�� d|f � q(W W n4 tk
rv } z| �|jd d� W dd}~X Y nX | �d � | ��d
ddd
g� dS )z?
Test raising exception in initial next() call
c 3 s, z�� d� � � E d H W d �� d� X d S )NzStarting g1zFinishing g1)r r )r r r r
r 0 s
zKTestPEP380Operation.test_raising_exception_in_initial_next_call.<locals>.g1c s( z� � d� td��W d � � d� X d S )NzStarting g2zspanish inquisition occurredzFinishing g2)r �
ValueErrorr )r r r
r 6 s
zKTestPEP380Operation.test_raising_exception_in_initial_next_call.<locals>.g2z
Yielded %sr zspanish inquisition occurredNz'subgenerator failed to raise ValueErrorzStarting g1zStarting g2zFinishing g2zFinishing g1)r r r
�args�fail)r r r �er )r r r
�+test_raising_exception_in_initial_next_call+ s $
z?TestPEP380Operation.test_raising_exception_in_initial_next_callc s^ g �� �fdd�}�fdd�� x|� D ]}�� d|f � q&W | ��dddd d
ddd
g� dS )z@
Test delegation of next() call to subgenerator
c 3 s0 �� d� dV � � E d H dV �� d� d S )NzStarting g1zg1 hamzg1 eggszFinishing g1)r r )r r r r
r O s
zLTestPEP380Operation.test_delegation_of_next_call_to_subgenerator.<locals>.g1c 3 s$ � � d� dV dV � � d� d S )NzStarting g2zg2 spamzg2 more spamzFinishing g2)r r )r r r
r U s
zLTestPEP380Operation.test_delegation_of_next_call_to_subgenerator.<locals>.g2z
Yielded %szStarting g1zYielded g1 hamzStarting g2zYielded g2 spamzYielded g2 more spamzFinishing g2zYielded g1 eggszFinishing g1N)r r
)r r r r )r r r
�,test_delegation_of_next_call_to_subgeneratorJ s z@TestPEP380Operation.test_delegation_of_next_call_to_subgeneratorc
s� g �� �fdd�}�fdd�� y$x|� D ]}�� d|f � q(W W n4 tk
rv } z| �|jd d� W dd}~X Y nX | �d � | ��d
ddd
ddg� dS )zA
Test raising exception in delegated next() call
c 3 s8 z&�� d� dV � � E d H dV W d �� d� X d S )NzStarting g1zg1 hamzg1 eggszFinishing g1)r r )r r r r
r l s
zMTestPEP380Operation.test_raising_exception_in_delegated_next_call.<locals>.g1c 3 s4 z"� � d� dV td��dV W d � � d� X d S )NzStarting g2zg2 spamzhovercraft is full of eelszg2 more spamzFinishing g2)r r r )r r r
r t s
zMTestPEP380Operation.test_raising_exception_in_delegated_next_call.<locals>.g2z
Yielded %sr zhovercraft is full of eelsNz'subgenerator failed to raise ValueErrorzStarting g1zYielded g1 hamzStarting g2zYielded g2 spamzFinishing g2zFinishing g1)r r r
r r )r r r r r )r r r
�-test_raising_exception_in_delegated_next_callg s $
zATestPEP380Operation.test_raising_exception_in_delegated_next_callc s� g �� �fdd�}�fdd�� |� }t |�}d}y,x&|�|�}��d|f � |d7 }q4W W n tk
rp Y nX | ��ddd d
ddd
ddddg� dS )z+
Test delegation of send()
c 3 sP �� d� dV } �� d| f � � � E d H dV } �� d| f � �� d� d S )NzStarting g1zg1 hamzg1 received %szg1 eggszFinishing g1)r )r )r r r r
r � s
z7TestPEP380Operation.test_delegation_of_send.<locals>.g1c 3 sD � � d� dV } � � d| f � dV } � � d| f � � � d� d S )NzStarting g2zg2 spamzg2 received %szg2 more spamzFinishing g2)r )r )r r r
r � s
z7TestPEP380Operation.test_delegation_of_send.<locals>.g2� z
Yielded %szStarting g1z
g1 received 1zStarting g2zYielded g2 spamz
g2 received 2zYielded g2 more spamz
g2 received 3zFinishing g2zYielded g1 eggsz
g1 received 4zFinishing g1N)�next�sendr �
StopIterationr
)r r �g�yr r )r r r
�test_delegation_of_send� s2
z+TestPEP380Operation.test_delegation_of_sendc sR g ���fdd�� �fdd��� �fdd�}| � t|� | ��ddd d
dg� dS )
zA
Test handling exception while delegating 'send'
c 3 sP �� d� dV } �� d| f � � � E d H dV } �� d| f � �� d� d S )NzStarting g1zg1 hamzg1 received %szg1 eggszFinishing g1)r )r )r r r r
r � s
zMTestPEP380Operation.test_handling_exception_while_delegating_send.<locals>.g1c 3 sL � � d� dV } � � d| f � td��dV } � � d| f � � � d� d S )NzStarting g2zg2 spamzg2 received %szhovercraft is full of eelszg2 more spamzFinishing g2)r r )r )r r r
r � s
zMTestPEP380Operation.test_handling_exception_while_delegating_send.<locals>.g2c sb � � } t | �}d}y,x&| �|�}��d|f � |d7 }qW W n tk
r\ ��d� Y nX d S )Nr z
Yielded %sr )r r r r )r r r )r r r r
�run� s
zNTestPEP380Operation.test_handling_exception_while_delegating_send.<locals>.runzStarting g1z
g1 received 1zStarting g2zYielded g2 spamz
g2 received 2N)�assertRaisesr r
)r r r )r r r r
�-test_handling_exception_while_delegating_send� s zATestPEP380Operation.test_handling_exception_while_delegating_sendc sr g �� �fdd�}�fdd�� |� }x(t d�D ]}t|�}��d|f � q.W |�� | ��ddd d
ddg� d
S )z)
Test delegating 'close'
c 3 s8 z&�� d� dV � � E d H dV W d �� d� X d S )NzStarting g1zg1 hamzg1 eggszFinishing g1)r r )r r r r
r � s
z5TestPEP380Operation.test_delegating_close.<locals>.g1c 3 s, z� � d� dV dV W d � � d� X d S )NzStarting g2zg2 spamzg2 more spamzFinishing g2)r r )r r r
r � s
z5TestPEP380Operation.test_delegating_close.<locals>.g2� z
Yielded %szStarting g1zYielded g1 hamzStarting g2zYielded g2 spamzFinishing g2zFinishing g1N)�ranger r �closer
)r r r �ir r )r r r
�test_delegating_close� s z)TestPEP380Operation.test_delegating_closec
s� g �� �fdd�}�fdd�� y<|� }x(t d�D ]}t|�}��d|f � q0W |�� W nB tk
r� } z$| �|jd d� | �|jt � W d d }~X Y nX | �
d
� | ��ddd
dddg� d S )zB
Test handling exception while delegating 'close'
c 3 s8 z&�� d� dV � � E d H dV W d �� d� X d S )NzStarting g1zg1 hamzg1 eggszFinishing g1)r r )r r r r
r s
zMTestPEP380Operation.test_handing_exception_while_delegating_close.<locals>.g1c 3 s4 z� � d� dV dV W d � � d� td��X d S )NzStarting g2zg2 spamzg2 more spamzFinishing g2z"nybbles have exploded with delight)r r r )r r r
r s
zMTestPEP380Operation.test_handing_exception_while_delegating_close.<locals>.g2r"