a
    zepN                     @   s:   d dl Z d dlmZ G dd de jZedkr6e   dS )    NLoggingResultc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4Test_TestSkippingc                    sN  G  fdddt j}g  t }|d}| ||| |  g d | |j|dfg g  | }|  g d | |j|dfg | |jd G  fdddt j}g  t }|d	}| ||| |  g d | |j|d
fg | |jd g  | }|  g d | |j|d
fg | |jd d S )Nc                       s    e Zd Z fddZdd ZdS ),Test_TestSkipping.test_skipping.<locals>.Fooc                    s   t  S Nr   selfevents 1/usr/lib/python3.9/unittest/test/test_skipping.pydefaultTestResult
   s    >Test_TestSkipping.test_skipping.<locals>.Foo.defaultTestResultc                 S   s   |  d d S NskipskipTestr   r   r   r   test_skip_me   s    z9Test_TestSkipping.test_skipping.<locals>.Foo.test_skip_meN__name__
__module____qualname__r   r   r   r	   r   r   Foo	   s   r   r   	startTestaddSkipstopTestr   startTestRunr   r   r   stopTestRun   c                       s(   e Zd Z fddZdd Zdd ZdS )r   c                    s   t  S r   r   r   r	   r   r   r      s    r   c                 S   s   |  d d S )Ntestingr   r   r   r   r   setUp    s    z2Test_TestSkipping.test_skipping.<locals>.Foo.setUpc                 S   s   d S r   r   r   r   r   r   test_nothing"       z9Test_TestSkipping.test_skipping.<locals>.Foo.test_nothingN)r   r   r   r   r"   r#   r   r	   r   r   r      s   r#   r!   )unittestTestCaser   assertIsrunassertEqualskippedtestsRun)r   r   resulttestr   r	   r   test_skipping   s2    zTest_TestSkipping.test_skippingc                    s  G  fdddt j}g  t }|d}| ||| |  g d | t|jd |jd \}}| |d | |t j | 	|| |jd \}}| |d	 | |t j | 	|| | |jd
 |df g  | }|  g d | dd |jD g d d S )Nc                       s    e Zd Z fddZdd ZdS )z5Test_TestSkipping.test_skipping_subtests.<locals>.Fooc                    s   t  S r   r   r   r	   r   r   r   4   s    zGTest_TestSkipping.test_skipping_subtests.<locals>.Foo.defaultTestResultc              	   S   sz   | j ddP | j dd | d W d    n1 s:0    Y  | d W d    n1 sb0    Y  | d d S )Nr    a   )bskip 1skip 2skip 3)subTestr   r   r   r   r   r   6   s
    ((zBTest_TestSkipping.test_skipping_subtests.<locals>.Foo.test_skip_meNr   r   r	   r   r   r   3   s   r   r   )r   r   r   r   r      r   r3   r    r4   r1   r5   )r   r   r   r   r   r   r   c                 S   s   g | ]\}}|qS r   r   ).0subtestmsgr   r   r   
<listcomp>R   r$   z<Test_TestSkipping.test_skipping_subtests.<locals>.<listcomp>)r3   r4   r5   )
r%   r&   r   r'   r(   r)   lenr*   ZassertIsInstanceZassertIsNot)r   r   r,   r-   r9   r:   r   r	   r   test_skipping_subtests2   s0    	z(Test_TestSkipping.test_skipping_subtestsc                    s6  t jddft jddff}|D ]\ G  fdddt j}|d}|d}t ||g}g t}| ||| | t	|j
d g d}| | | |jd	 | |j
|d
fg | |  g | }| g d | |j
|d
fg g | }| g d | |j
g  qd S )NFTc                       s<   e Zd ZfddZ ddd Z ddd ZdS )	z7Test_TestSkipping.test_skipping_decorators.<locals>.Fooc                    s   t  S r   r   r   r	   r   r   r   Z   s    zITest_TestSkipping.test_skipping_decorators.<locals>.Foo.defaultTestResultr!   c                 S   s   d S r   r   r   r   r   r   	test_skip]   s    zATest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_skipc                 S   s   d S r   r   r   r   r   r   test_dont_skip`   s    zFTest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_dont_skipN)r   r   r   r   r>   r?   r   ZdecoZdo_skipZ	dont_skipr
   r   r   r   Y   s
   
r   r>   r?   r    )r   r   r   r   
addSuccessr   r1   r!   r   )r   r   rA   r   r   )r%   Z
skipUnlessZskipIfr&   	TestSuiter   r'   r(   r)   r<   r*   r+   
assertTruewasSuccessful)r   Zop_tabler   Ztest_do_skipr?   suiter,   Zexpectedr   r@   r   test_skipping_decoratorsU   s2    

	z*Test_TestSkipping.test_skipping_decoratorsc                    s   t dG  fdddt j}g  g t }|d}t |g}| ||| |  g d | |j|dfg | g  g  | }|  g d | |j|dfg | g  d S )Nr!   c                       s$   e Zd Z fddZfddZdS )z.Test_TestSkipping.test_skip_class.<locals>.Fooc                    s   t  S r   r   r   r	   r   r   r      s    z@Test_TestSkipping.test_skip_class.<locals>.Foo.defaultTestResultc                    s     d d S Nr    appendr   recordr   r   test_1   s    z5Test_TestSkipping.test_skip_class.<locals>.Foo.test_1N)r   r   r   r   rL   r   r
   rK   r   r   r   ~   s   r   rL   r   r   )	r%   r   r&   r   rB   r'   r(   r)   r*   r   r   r,   r-   rE   r   rM   r   test_skip_class}   s     z!Test_TestSkipping.test_skip_classc                    s   t dG  fddd}G dd d|t j}g  t  }|d}t |g}| ||| | |j|dfg |  g  d S )Nr!   c                       s   e Zd Z fddZdS )z=Test_TestSkipping.test_skip_non_unittest_class.<locals>.Mixinc                    s     d d S rG   rH   r   rJ   r   r   rL      s    zDTest_TestSkipping.test_skip_non_unittest_class.<locals>.Mixin.test_1Nr   r   r   rL   r   rJ   r   r   Mixin   s   rQ   c                   @   s   e Zd ZdS )z;Test_TestSkipping.test_skip_non_unittest_class.<locals>.FooNr   r   r   r   r   r   r   r      s   r   rL   )	r%   r   r&   
TestResultrB   r'   r(   r)   r*   )r   rQ   r   r,   r-   rE   r   rJ   r   test_skip_non_unittest_class   s    z.Test_TestSkipping.test_skip_non_unittest_classc                 C   s`   G dd dt j}g }t|}|d}| ||| | |g d | |j|dfg d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z1Test_TestSkipping.test_skip_in_setup.<locals>.Fooc                 S   s   |  d d S r   r   r   r   r   r   r"      s    z7Test_TestSkipping.test_skip_in_setup.<locals>.Foo.setUpc                 S   s   |  d d S )Nshouldn't come herefailr   r   r   r   r      s    z>Test_TestSkipping.test_skip_in_setup.<locals>.Foo.test_skip_meN)r   r   r   r"   r   r   r   r   r   r      s   r   r   r   r   r%   r&   r   r'   r(   r)   r*   r   r   r
   r,   r-   r   r   r   test_skip_in_setup   s    z$Test_TestSkipping.test_skip_in_setupc                 C   s`   G dd dt j}g }t|}|d}| ||| | |g d | |j|dfg d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z3Test_TestSkipping.test_skip_in_cleanup.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   r      s    z@Test_TestSkipping.test_skip_in_cleanup.<locals>.Foo.test_skip_mec                 S   s   |  d d S r   r   r   r   r   r   tearDown   s    z<Test_TestSkipping.test_skip_in_cleanup.<locals>.Foo.tearDownNr   r   r   r   r[   r   r   r   r   r      s   r   r   r   r   rX   rY   r   r   r   test_skip_in_cleanup   s    z&Test_TestSkipping.test_skip_in_cleanupc                 C   s`   G dd dt j}g }t|}|d}| ||| | |g d | |j|dfg d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z?Test_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Fooc                 S   s   |  d d S NrW   rV   r   r   r   r   r      s    zLTest_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Foo.test_skip_mec                 S   s   |  d d S r   r   r   r   r   r   r[      s    zHTest_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Foo.tearDownNr\   r   r   r   r   r      s   r   r   r   r   
addFailurer   r   rX   rY   r   r   r    test_failure_and_skip_in_cleanup   s    z2Test_TestSkipping.test_failure_and_skip_in_cleanupc                 C   s`   G dd dt j}g }t|}|d}| ||| | |g d | |j|dfg d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z@Test_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Fooc                 S   s   |  d d S r   r   r   r   r   r   r      s    zMTest_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Foo.test_skip_mec                 S   s   |  d d S r^   rV   r   r   r   r   r[      s    zITest_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Foo.tearDownNr\   r   r   r   r   r      s   r   r   r_   r   rX   rY   r   r   r   !test_skipping_and_fail_in_cleanup   s    z3Test_TestSkipping.test_skipping_and_fail_in_cleanupc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |jd d | | |j	 | 
|  d S )Nc                   @   s   e Zd Zejdd ZdS )z4Test_TestSkipping.test_expected_failure.<locals>.Fooc                 S   s   |  d d S Nhelp me!rV   r   r   r   r   test_die   s    z=Test_TestSkipping.test_expected_failure.<locals>.Foo.test_dieNr   r   r   r%   expectedFailurere   r   r   r   r   r      s   r   re   r   addExpectedFailurer   r   )r%   r&   r   r'   r(   r)   assertFalsefailuresexpectedFailuresunexpectedSuccessesrC   rD   rY   r   r   r   test_expected_failure   s    z'Test_TestSkipping.test_expected_failurec                 C   s   t jG dd dt j}g }t|}|d}| ||| | |g d | |j | |j	d d | | |j
 | |  d S )Nc                   @   s   e Zd Zdd ZdS )zGTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Fooc                 S   s   |  d d S NFrC   r   r   r   r   rL      s    zNTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Foo.test_1NrP   r   r   r   r   r      s   r   rL   rh   r   )r%   rg   r&   r   r'   r(   r)   rj   rk   rl   rm   rC   rD   rY   r   r   r   (test_expected_failure_with_wrapped_class   s    z:Test_TestSkipping.test_expected_failure_with_wrapped_classc                 C   s   G dd dt j}t jG dd d|}g }t|}|d}| ||| | |g d | |j | |j	d d | | |j
 | |  d S )Nc                   @   s   e Zd Zdd ZdS )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Fooc                 S   s   |  d d S ro   rp   r   r   r   r   rL      s    zQTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Foo.test_1NrP   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.BarNrR   r   r   r   r   Bar   s   rr   rL   rh   r   )r%   r&   rg   r   r'   r(   r)   rj   rk   rl   rm   rC   rD   )r   r   rr   r
   r,   r-   r   r   r   +test_expected_failure_with_wrapped_subclass   s    z=Test_TestSkipping.test_expected_failure_with_wrapped_subclassc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | t|j	d | |j	d d | | |j
 | |  d S )Nc                   @   s   e Zd Zejdd ZdS )z=Test_TestSkipping.test_expected_failure_subtests.<locals>.Fooc                 S   s   |    W d    n1 s0    Y  |    | d W d    n1 sP0    Y  |    | d W d    n1 s0    Y  d S )Nrd   rU   )r6   rW   r   r   r   r   re     s    

(
zFTest_TestSkipping.test_expected_failure_subtests.<locals>.Foo.test_dieNrf   r   r   r   r   r     s   r   re   )r   addSubTestSuccessri   r   r    r   )r%   r&   r   r'   r(   r)   rj   rk   r<   rl   rm   rC   rD   rY   r   r   r   test_expected_failure_subtests  s    z0Test_TestSkipping.test_expected_failure_subtestsc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | t|jd | d|jd d  | 	|j
 | 	|j | 	|  d S )Nc                   @   s"   e Zd Zejdd Zdd ZdS )zHTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Fooc                 S   s   |  d d S rc   rV   r   r   r   r   re   *  s    zQTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Foo.test_diec                 S   s   |  d d S Nzbad tearDownrV   r   r   r   r   r[   -  s    zQTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Foo.tearDownNr   r   r   r%   rg   re   r[   r   r   r   r   r   )  s   
r   re   r   r`   r   r    AssertionError: bad tearDownr   r%   r&   r   r'   r(   r)   r<   rk   assertInrj   rl   rm   rD   rY   r   r   r   )test_expected_failure_and_fail_in_cleanup(  s    z;Test_TestSkipping.test_expected_failure_and_fail_in_cleanupc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	 | |j
|dfg | |  d S )Nc                   @   s"   e Zd Zejdd Zdd ZdS )zHTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Fooc                 S   s   |  d d S rc   rV   r   r   r   r   re   =  s    zQTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Foo.test_diec                 S   s   |  d d S r   r   r   r   r   r   r[   @  s    zQTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Foo.tearDownNrw   r   r   r   r   r   <  s   
r   re   r   r   r%   r&   r   r'   r(   r)   rj   rk   rl   rm   r*   rC   rD   rY   r   r   r   )test_expected_failure_and_skip_in_cleanup;  s    z;Test_TestSkipping.test_expected_failure_and_skip_in_cleanupc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	|g | |
  d S )Nc                   @   s   e Zd Zejdd ZdS )z6Test_TestSkipping.test_unexpected_success.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   re   P  s    z?Test_TestSkipping.test_unexpected_success.<locals>.Foo.test_dieNrf   r   r   r   r   r   O  s   r   re   )r   addUnexpectedSuccessr   r%   r&   r   r'   r(   r)   rj   rk   rl   rm   rD   rY   r   r   r   test_unexpected_successN  s    z)Test_TestSkipping.test_unexpected_successc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	|g | |
  d S )Nc                   @   s   e Zd Zejdd ZdS )z?Test_TestSkipping.test_unexpected_success_subtests.<locals>.Fooc                 S   sT   |    W d    n1 s0    Y  |    W d    n1 sF0    Y  d S r   )r6   r   r   r   r   re   b  s    

zHTest_TestSkipping.test_unexpected_success_subtests.<locals>.Foo.test_dieNrf   r   r   r   r   r   a  s   r   re   )r   rt   rt   r   r   r   rY   r   r   r    test_unexpected_success_subtests^  s    	z2Test_TestSkipping.test_unexpected_success_subtestsc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | t|jd | d|jd d  | 	|j
 | 	|j | 	|  d S )Nc                   @   s"   e Zd Zejdd Zdd ZdS )zJTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   re   y  s    zSTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Foo.test_diec                 S   s   |  d d S rv   rV   r   r   r   r   r[   |  s    zSTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Foo.tearDownNrw   r   r   r   r   r   x  s   
r   re   rx   r    ry   r   rz   rY   r   r   r   +test_unexpected_success_and_fail_in_cleanupw  s    z=Test_TestSkipping.test_unexpected_success_and_fail_in_cleanupc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	 | |j
|dfg | |  d S )Nc                   @   s"   e Zd Zejdd Zdd ZdS )zJTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   re     s    zSTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Foo.test_diec                 S   s   |  d d S r   r   r   r   r   r   r[     s    zSTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Foo.tearDownNrw   r   r   r   r   r     s   
r   re   r   r   r}   rY   r   r   r   +test_unexpected_success_and_skip_in_cleanup  s    z=Test_TestSkipping.test_unexpected_success_and_skip_in_cleanupc                    st   G  fdddt j t  } d}t |g}| ||| | |j|dfg |  j	 |  j
 d S )Nc                       s>   e Zd ZdZdZ fddZ fddZeddd Z	d	S )
z9Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.FooFc                    s
   d _ d S NT)wasSetUpr   r   r   r   r"     s    z?Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.setUpc                    s
   d _ d S r   )wasTornDownr   r   r   r   tornDown  s    zBTest_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.tornDownr!   c                 S   s   d S r   r   r   r   r   r   rL     s    z@Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.test_1N)
r   r   r   r   r   r"   r   r%   r   rL   r   r   r   r   r     s   r   rL   r!   )r%   r&   rS   rB   r'   r(   r)   r*   rj   r   r   )r   r,   r-   rE   r   r   r   test_skip_doesnt_run_setup  s    z,Test_TestSkipping.test_skip_doesnt_run_setupc                    sd   dd  G  fdddt j}t  }|d}t |g}| ||| | |j|dfg d S )Nc                    s    fdd}|S )Nc                     s    |  S r   r   r/   funcr   r   inner  s    zGTest_TestSkipping.test_decorated_skip.<locals>.decorator.<locals>.innerr   )r   r   r   r   r   	decorator  s    z8Test_TestSkipping.test_decorated_skip.<locals>.decoratorc                       s"   e Zd Z eddd ZdS )z2Test_TestSkipping.test_decorated_skip.<locals>.Foor!   c                 S   s   d S r   r   r   r   r   r   rL     s    z9Test_TestSkipping.test_decorated_skip.<locals>.Foo.test_1Nr   r   r   r%   r   rL   r   r   r   r   r     s   r   rL   r!   r%   r&   rS   rB   r'   r(   r)   r*   rN   r   r   r   test_decorated_skip  s    z%Test_TestSkipping.test_decorated_skipc                 C   sX   G dd dt j}t  }|d}t |g}| ||| | |j|dfg d S )Nc                   @   s   e Zd Zejdd ZdS )z7Test_TestSkipping.test_skip_without_reason.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   rL     s    z>Test_TestSkipping.test_skip_without_reason.<locals>.Foo.test_1Nr   r   r   r   r   r     s   r   rL    r   rN   r   r   r   test_skip_without_reason  s    z*Test_TestSkipping.test_skip_without_reasonc                    s   G  fdddt j}g  |d}| t j}|  W d    n1 sL0    Y  | dt|j |  dg g  |d}| t j}|  W d    n1 s0    Y  | dt|j |  g  d S )Nc                       sF   e Zd Z fddZ fddZ fddZed fdd	Zd
S )z2Test_TestSkipping.test_debug_skipping.<locals>.Fooc                    s     d d S Nr"   rH   r   r	   r   r   r"     s    z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.setUpc                    s     d d S Nr[   rH   r   r	   r   r   r[     s    z;Test_TestSkipping.test_debug_skipping.<locals>.Foo.tearDownc                    s   |  d  d d S )Nskipping exceptiontest1)r   rI   r   r	   r   r   r     s    
z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.test1skipping decoratorc                    s     d d S )Ntest2rH   r   r	   r   r   r     s    z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.test2N)	r   r   r   r"   r[   r   r%   r   r   r   r	   r   r   r     s
   r   r   r   r"   r   r   )	r%   r&   assertRaisesSkipTestdebugr{   str	exceptionr)   r   r   r-   cmr   r	   r   test_debug_skipping  s    &&z%Test_TestSkipping.test_debug_skippingc                    s   t dG  fdddt j}g  |d}| t j}|  W d    n1 sV0    Y  | dt|j | 	 g  d S )Nr!   c                       s0   e Zd Z fddZ fddZ fddZdS )z8Test_TestSkipping.test_debug_skipping_class.<locals>.Fooc                    s     d d S r   rH   r   r	   r   r   r"     s    z>Test_TestSkipping.test_debug_skipping_class.<locals>.Foo.setUpc                    s     d d S r   rH   r   r	   r   r   r[     s    zATest_TestSkipping.test_debug_skipping_class.<locals>.Foo.tearDownc                    s     d d S )Nr-   rH   r   r	   r   r   r-     s    z=Test_TestSkipping.test_debug_skipping_class.<locals>.Foo.testNr   r   r   r"   r[   r-   r   r	   r   r   r     s   r   r-   )
r%   r   r&   r   r   r   r{   r   r   r)   r   r   r	   r   test_debug_skipping_class  s    &z+Test_TestSkipping.test_debug_skipping_classc                    s   G  fdddt j}g  t }|d}| t j}|  W d    n1 sT0    Y  | dt|j | 	 ddg d S )Nc                       s0   e Zd Z fddZ fddZ fddZdS )z;Test_TestSkipping.test_debug_skipping_subtests.<locals>.Fooc                    s     d d S r   rH   r   r	   r   r   r"     s    zATest_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.setUpc                    s     d d S r   rH   r   r	   r   r   r[     s    zDTest_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.tearDownc                    sX   | j dd.  d | d  d W d    n1 s@0    Y   d d S )Nr    r/   r9   skip subtestzend subtestzend test)r6   rI   r   r   r	   r   r   r-     s
    

(z@Test_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.testNr   r   r	   r   r   r     s   r   r-   r   r"   r9   )
r%   r&   r   r   r   r   r{   r   r   r)   )r   r   r,   r-   r   r   r	   r   test_debug_skipping_subtests  s    &z.Test_TestSkipping.test_debug_skipping_subtestsN)r   r   r   r.   r=   rF   rO   rT   rZ   r]   ra   rb   rn   rq   rs   ru   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s2   *#(r   __main__)r%   Zunittest.test.supportr   r&   r   r   mainr   r   r   r   <module>   s       