B
    v9aP;  ã               @   sp   d dl Z d dlZd dlZd dlZd dlmZmZ G dd„ deƒZdd„ Z	G dd„ de j
eƒZed	krle  ¡  dS )
é    N)ÚLoggingResultÚTestEqualityc               @   s   e Zd ZG dd„ dejƒZdS )ÚTestc               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
zTest.Fooc             C   s   d S )N© )Úselfr   r   ú /usr/lib/python3.7/test_suite.pyÚtest_1   ó    zTest.Foo.test_1c             C   s   d S )Nr   )r   r   r   r   Útest_2   r	   zTest.Foo.test_2c             C   s   d S )Nr   )r   r   r   r   Útest_3   r	   zTest.Foo.test_3c             C   s   d S )Nr   )r   r   r   r   ÚrunTest   r	   zTest.Foo.runTestN)Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   r   r   r   ÚFoo   s   r   N)r   r   r   ÚunittestÚTestCaser   r   r   r   r   r      s   r   c              G   s   t  dd„ | D ƒ¡S )Nc             s   s   | ]}t  |¡V  qd S )N)r   r   )Ú.0Únr   r   r   ú	<genexpr>   s    z _mk_TestSuite.<locals>.<genexpr>)r   Ú	TestSuite)Únamesr   r   r   Ú_mk_TestSuite   s    r   c               @   sV  e Zd Ze ¡ e ¡ fe ¡ e g ¡fedƒedƒfgZe ¡ edƒfe g ¡edƒfeddƒeddƒfedƒedƒfg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d0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:S );ÚTest_TestSuiter   r
   r   c             C   s:   t  ¡ }|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nr   )r   r   ÚassertEqualÚcountTestCasesÚrunÚ
TestResult)r   Úsuiter   r   r   Útest_init__tests_optional2   s    z(Test_TestSuite.test_init__tests_optionalc             C   s<   t  g ¡}|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nr   )r   r   r   r   r   r   )r   r   r   r   r   Útest_init__empty_testsA   s    
z%Test_TestSuite.test_init__empty_testsc             C   sº   dd„ }t  |ƒ ¡}|  | ¡ d¡ t  |¡}|  | ¡ d¡ t  t|ƒ¡}|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nc               s   s$   t  dd„ ¡V  t  dd„ ¡V  d S )Nc               S   s   d S )Nr   r   r   r   r   Ú<lambda>Q   r	   zRTest_TestSuite.test_init__tests_from_any_iterable.<locals>.tests.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r!   R   r	   )r   ÚFunctionTestCaser   r   r   r   ÚtestsP   s    z@Test_TestSuite.test_init__tests_from_any_iterable.<locals>.testsé   )r   r   r   r   Úsetr   r   )r   r#   Úsuite_1Úsuite_2Zsuite_3r   r   r   Ú"test_init__tests_from_any_iterableO   s    
z1Test_TestSuite.test_init__tests_from_any_iterablec             C   sF   dd„ }t  |ƒ ¡}|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nc              s   s0   t  dd„ ¡} t  | g¡V  t  dd„ ¡V  d S )Nc               S   s   d S )Nr   r   r   r   r   r!   n   r	   zWTest_TestSuite.test_init__TestSuite_instances_in_tests.<locals>.tests.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r!   p   r	   )r   r"   r   )Zftcr   r   r   r#   m   s    zETest_TestSuite.test_init__TestSuite_instances_in_tests.<locals>.testsr$   )r   r   r   r   r   r   )r   r#   r   r   r   r   Ú'test_init__TestSuite_instances_in_testsl   s
    z6Test_TestSuite.test_init__TestSuite_instances_in_testsc             C   sB   t  dd„ ¡}t  dd„ ¡}t  ||f¡}|  t|ƒ||g¡ d S )Nc               S   s   d S )Nr   r   r   r   r   r!   }   r	   z*Test_TestSuite.test_iter.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r!   ~   r	   )r   r"   r   r   Úlist)r   Útest1Útest2r   r   r   r   Ú	test_iter|   s    zTest_TestSuite.test_iterc             C   s   t  ¡ }|  | ¡ d¡ d S )Nr   )r   r   r   r   )r   r   r   r   r   Útest_countTestCases_zero_simpleˆ   s    z.Test_TestSuite.test_countTestCases_zero_simplec             C   s6   G dd„ dt jƒ}t  t  ¡ g¡}|  | ¡ d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z=Test_TestSuite.test_countTestCases_zero_nested.<locals>.Test1c             S   s   d S )Nr   )r   r   r   r   Útest•   s    zBTest_TestSuite.test_countTestCases_zero_nested.<locals>.Test1.testN)r   r   r   r/   r   r   r   r   ÚTest1”   s   r0   r   )r   r   r   r   r   )r   r0   r   r   r   r   Útest_countTestCases_zero_nested“   s    z.Test_TestSuite.test_countTestCases_zero_nestedc             C   s\   t  dd„ ¡}t  dd„ ¡}t  ||f¡}|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nc               S   s   d S )Nr   r   r   r   r   r!       r	   z;Test_TestSuite.test_countTestCases_simple.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r!   ¡   r	   r$   )r   r"   r   r   r   r   r   )r   r+   r,   r   r   r   r   Útest_countTestCases_simpleŸ   s    z)Test_TestSuite.test_countTestCases_simplec             C   s–   G dd„ dt jƒ}t  dd„ ¡}t  dd„ ¡}t  |dƒ|f¡}t  |||dƒf¡}|  | ¡ d¡ | t  ¡ ¡ |  | ¡ d¡ |  | ¡ d	¡ d S )
Nc               @   s   e Zd Zdd„ Zdd„ ZdS )z8Test_TestSuite.test_countTestCases_nested.<locals>.Test1c             S   s   d S )Nr   )r   r   r   r   r+   °   r	   z>Test_TestSuite.test_countTestCases_nested.<locals>.Test1.test1c             S   s   d S )Nr   )r   r   r   r   r,   ±   r	   z>Test_TestSuite.test_countTestCases_nested.<locals>.Test1.test2N)r   r   r   r+   r,   r   r   r   r   r0   ¯   s   r0   c               S   s   d S )Nr   r   r   r   r   r!   ³   r	   z;Test_TestSuite.test_countTestCases_nested.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r!   ´   r	   r,   r+   é   r$   )r   r   r"   r   r   r   r   r   )r   r0   r,   Ztest3ZchildÚparentr   r   r   Útest_countTestCases_nested®   s    z)Test_TestSuite.test_countTestCases_nestedc             C   s.   g }t |ƒ}t ¡ }| |¡ |  |g ¡ d S )N)r   r   r   r   r   )r   ÚeventsÚresultr   r   r   r   Útest_run__empty_suiteÂ   s
    
z$Test_TestSuite.test_run__empty_suitec             C   s8   t  ¡ }y| ¡  W n tk
r(   Y nX |  d¡ d S )NzFailed to raise TypeError)r   r   r   Ú	TypeErrorÚfail)r   r   r   r   r   Útest_run__requires_resultÎ   s    z(Test_TestSuite.test_run__requires_resultc                sV   g ‰ t ˆ ƒ}G ‡ fdd„dtjƒ}|dƒ|dƒg}t |¡ |¡ |  ˆ ddg¡ d S )Nc                   s(   e Zd Z‡ fdd„Zdd„ Zdd„ ZdS )z,Test_TestSuite.test_run.<locals>.LoggingCasec                s   ˆ   d| j ¡ d S )Nzrun %s)ÚappendZ_testMethodName)r   r7   )r6   r   r   r   ß   s    z0Test_TestSuite.test_run.<locals>.LoggingCase.runc             S   s   d S )Nr   )r   r   r   r   r+   â   r	   z2Test_TestSuite.test_run.<locals>.LoggingCase.test1c             S   s   d S )Nr   )r   r   r   r   r,   ã   r	   z2Test_TestSuite.test_run.<locals>.LoggingCase.test2N)r   r   r   r   r+   r,   r   )r6   r   r   ÚLoggingCaseÞ   s   r=   r+   r,   z	run test1z	run test2)r   r   r   r   r   r   )r   r7   r=   r#   r   )r6   r   Útest_runÚ   s    zTest_TestSuite.test_runc             C   sp   G dd„ dt jƒ}|dƒ}t  ¡ }| |¡ |  | ¡ d¡ |  t|ƒ|g¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z2Test_TestSuite.test_addTest__TestCase.<locals>.Fooc             S   s   d S )Nr   )r   r   r   r   r/   î   r	   z7Test_TestSuite.test_addTest__TestCase.<locals>.Foo.testN)r   r   r   r/   r   r   r   r   r   í   s   r   r/   é   )	r   r   r   ÚaddTestr   r   r*   r   r   )r   r   r/   r   r   r   r   Útest_addTest__TestCaseì   s    
z%Test_TestSuite.test_addTest__TestCasec             C   sx   G dd„ dt jƒ}t  |dƒg¡}t  ¡ }| |¡ |  | ¡ d¡ |  t|ƒ|g¡ | t  ¡ ¡ |  | ¡ d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z3Test_TestSuite.test_addTest__TestSuite.<locals>.Fooc             S   s   d S )Nr   )r   r   r   r   r/   þ   r	   z8Test_TestSuite.test_addTest__TestSuite.<locals>.Foo.testN)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_addTest__TestSuiteü   s    
z&Test_TestSuite.test_addTest__TestSuitec                sš   G dd„ dt jƒ}|dƒ‰|dƒ‰t  ˆg¡‰ ‡ ‡‡fdd„}t  ¡ }| |ƒ ¡ |  t|ƒt|ƒ ƒ¡ t  ¡ }x|ƒ D ]}| |¡ qxW |  ||¡ d S )Nc               @   s   e Zd Zdd„ Zdd„ ZdS )z)Test_TestSuite.test_addTests.<locals>.Fooc             S   s   d S )Nr   )r   r   r   r   r     r	   z0Test_TestSuite.test_addTests.<locals>.Foo.test_1c             S   s   d S )Nr   )r   r   r   r   r
     r	   z0Test_TestSuite.test_addTests.<locals>.Foo.test_2N)r   r   r   r   r
   r   r   r   r   r     s   r   r   r
   c               3   s   ˆV  ˆV  ˆ V  d S )Nr   r   )Úinner_suiter   r
   r   r   Úgen  s    z)Test_TestSuite.test_addTests.<locals>.gen)r   r   r   ÚaddTestsr   r*   r@   )r   r   rD   r&   r'   Útr   )rC   r   r
   r   Útest_addTests  s    zTest_TestSuite.test_addTestsc             C   s:   t  ¡ }y| d¡ W n tk
r*   Y nX |  d¡ d S )Né   zFailed to raise TypeError)r   r   rE   r9   r:   )r   r   r   r   r   Útest_addTest__noniterable/  s    z(Test_TestSuite.test_addTest__noniterablec             C   s   t  ¡ }|  t|jd¡ d S )NrH   )r   r   ÚassertRaisesr9   r@   )r   r   r   r   r   Útest_addTest__noncallable9  s    z(Test_TestSuite.test_addTest__noncallablec             C   s.   t  ¡ }|  t|jt¡ |  t|jt j¡ d S )N)r   r   rJ   r9   r@   r   )r   r   r   r   r   Útest_addTest__casesuiteclass=  s    z+Test_TestSuite.test_addTest__casesuiteclassc             C   s   t  ¡ }|  t|jd¡ d S )NZfoo)r   r   rJ   r9   rE   )r   r   r   r   r   Útest_addTests__stringB  s    z$Test_TestSuite.test_addTests__stringc             C   s,   dd„ }t  ¡ }| |¡ | t  ¡ ¡ d S )Nc             S   s   d S )Nr   )Ú_r   r   r   ÚfG  s    z0Test_TestSuite.test_function_in_suite.<locals>.f)r   r   r@   r   r   )r   rO   r   r   r   r   Útest_function_in_suiteF  s    
z%Test_TestSuite.test_function_in_suitec             C   sH   t jjst  d¡‚t  ¡ }dddg|_| d¡ |  dd dg|j¡ d S )NzSuite cleanup is disabledr?   r$   é   )r   ÚBaseTestSuiteÚ_cleanupÚSkipTestr   Ú_testsÚ_removeTestAtIndexr   )r   r   r   r   r   Útest_remove_test_at_indexO  s    

z(Test_TestSuite.test_remove_test_at_indexc             C   s.   t jjst  d¡‚t  ¡ }d |_| d¡ d S )NzSuite cleanup is disabledr$   )r   rR   rS   rT   r   rU   rV   )r   r   r   r   r   Ú'test_remove_test_at_index_not_indexableZ  s
    
z6Test_TestSuite.test_remove_test_at_index_not_indexablec             C   sz   t jjst  d¡‚G dd„ dt jƒ}|dƒ}t |¡}||ƒ gƒ}| t  ¡ ¡ ~t	 
¡  |  |jd g¡ |  |ƒ ¡ d S )NzSuite cleanup is disabledc               @   s   e Zd Zdd„ ZdS )zATest_TestSuite.assert_garbage_collect_test_after_run.<locals>.Fooc             S   s   d S )Nr   )r   r   r   r   Útest_nothingi  s    zNTest_TestSuite.assert_garbage_collect_test_after_run.<locals>.Foo.test_nothingN)r   r   r   rY   r   r   r   r   r   h  s   r   rY   )r   rR   rS   rT   r   ÚweakrefÚrefr   r   ÚgcZcollectr   rU   ZassertIsNone)r   ZTestSuiteClassr   r/   Zwrefr   r   r   r   Ú%assert_garbage_collect_test_after_rund  s    

z4Test_TestSuite.assert_garbage_collect_test_after_runc             C   s   |   tj¡ d S )N)r]   r   rR   )r   r   r   r   Ú1test_garbage_collect_test_after_run_BaseTestSuitez  s    z@Test_TestSuite.test_garbage_collect_test_after_run_BaseTestSuitec             C   s   |   tj¡ d S )N)r]   r   r   )r   r   r   r   Ú-test_garbage_collect_test_after_run_TestSuite}  s    z<Test_TestSuite.test_garbage_collect_test_after_run_TestSuitec                sü   G dd„ dt jƒ}G ‡ fdd„dtƒ‰ d|_ˆ tjd< |  tjjd¡ t  ¡ }| 	|dƒ|dƒg¡ |  
| ¡ d¡ t  ¡ }| |¡ |  ˆ j¡ |  ˆ j¡ |  |j¡ |  |j¡ |  
t|jƒd¡ |  
t|jƒd	¡ |  
|jd¡ |  
| ¡ d¡ d S )
Nc               @   s<   e Zd ZdZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Z	d
S )z/Test_TestSuite.test_basetestsuite.<locals>.TestFc             S   s
   d| _ d S )NT)ÚwasSetUp)Úclsr   r   r   Ú
setUpClass„  s    z:Test_TestSuite.test_basetestsuite.<locals>.Test.setUpClassc             S   s
   d| _ d S )NT)ÚwasTornDown)ra   r   r   r   ÚtearDownClass‡  s    z=Test_TestSuite.test_basetestsuite.<locals>.Test.tearDownClassc             S   s   d S )Nr   )r   r   r   r   ÚtestPassŠ  s    z8Test_TestSuite.test_basetestsuite.<locals>.Test.testPassc             S   s   t  d S )N)r:   )r   r   r   r   ÚtestFailŒ  s    z8Test_TestSuite.test_basetestsuite.<locals>.Test.testFailN)
r   r   r   r`   rc   Úclassmethodrb   rd   re   rf   r   r   r   r   r     s   r   c                   s4   e Zd ZdZdZe‡ fdd„ƒZe‡ fdd„ƒZdS )z1Test_TestSuite.test_basetestsuite.<locals>.ModuleFc                  s
   dˆ _ d S )NT)r`   r   )ÚModuler   r   ÚsetUpModule‘  s    z=Test_TestSuite.test_basetestsuite.<locals>.Module.setUpModulec                  s
   dˆ _ d S )NT)rc   r   )rh   r   r   ÚtearDownModule”  s    z@Test_TestSuite.test_basetestsuite.<locals>.Module.tearDownModuleN)r   r   r   r`   rc   Ústaticmethodri   rj   r   )rh   r   r   rh   Ž  s   rh   re   rf   r$   r?   r   )r   r   Úobjectr   ÚsysÚmodulesZ
addCleanupÚpoprR   rE   r   r   r   r   ÚassertFalser`   rc   ÚlenÚerrorsZfailuresZtestsRun)r   r   r   r7   r   )rh   r   Útest_basetestsuite€  s$    


z!Test_TestSuite.test_basetestsuitec             C   sV   G dd„ dt jƒ}|ƒ }t  ¡ }t  ¡ }| |¡ ||ƒ |  |j¡ |  |j¡ d S )Nc               @   s   e Zd ZdZdd„ ZdS )z4Test_TestSuite.test_overriding_call.<locals>.MySuiteFc             _   s   d| _ tjj| f|ž|Ž d S )NT)Úcalledr   r   Ú__call__)r   ÚargsÚkwr   r   r   ru   ¯  s    z=Test_TestSuite.test_overriding_call.<locals>.MySuite.__call__N)r   r   r   rt   ru   r   r   r   r   ÚMySuite­  s   rx   )r   r   r   r@   Z
assertTruert   rp   Z_testRunEntered)r   rx   r   r7   Úwrapperr   r   r   Útest_overriding_call¬  s    
z#Test_TestSuite.test_overriding_callN)#r   r   r   r   r   r   Zeq_pairsZne_pairsr   r    r(   r)   r-   r.   r1   r2   r5   r8   r;   r>   rA   rB   rG   rI   rK   rL   rM   rP   rW   rX   r]   r^   r_   rs   rz   r   r   r   r   r      sD   
	
,r   Ú__main__)r   r\   rm   rZ   Zunittest.test.supportr   r   rl   r   r   r   r   r   Úmainr   r   r   r   Ú<module>   s      (