a
    åzeP;  ã                   @   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.9/unittest/test/test_suite.pyÚtest_1   ó    zTest.Foo.test_1c                 C   s   d S r   r   r   r   r   r	   Útest_2   r   zTest.Foo.test_2c                 C   s   d S r   r   r   r   r   r	   Útest_3   r   zTest.Foo.test_3c                 C   s   d S r   r   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 r   )r   r   )Ú.0Únr   r   r	   Ú	<genexpr>   r   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 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 r   r   r   r   r   r	   Ú<lambda>Q   r   zRTest_TestSuite.test_init__tests_from_any_iterable.<locals>.tests.<locals>.<lambda>c                   S   s   d S r   r   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 r   r   r   r   r   r	   r&   n   r   zWTest_TestSuite.test_init__TestSuite_instances_in_tests.<locals>.tests.<locals>.<lambda>c                   S   s   d S r   r   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	   Ú'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 r   r   r   r   r   r	   r&   }   r   z*Test_TestSuite.test_iter.<locals>.<lambda>c                   S   s   d S r   r   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 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 r   r   r   r   r   r	   Útest•   s    zBTest_TestSuite.test_countTestCases_zero_nested.<locals>.Test1.testN©r   r   r   r5   r   r   r   r	   ÚTest1”   s   r7   r   )r   r   r   r   r   )r   r7   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 r   r   r   r   r   r	   r&       r   z;Test_TestSuite.test_countTestCases_simple.<locals>.<lambda>c                   S   s   d S r   r   r   r   r   r	   r&   ¡   r   r)   )r   r'   r   r   r   r    r!   r0   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 r   r   r   r   r   r	   r1   °   r   z>Test_TestSuite.test_countTestCases_nested.<locals>.Test1.test1c                 S   s   d S r   r   r   r   r   r	   r2   ±   r   z>Test_TestSuite.test_countTestCases_nested.<locals>.Test1.test2N)r   r   r   r1   r2   r   r   r   r	   r7   ¯   s   r7   c                   S   s   d S r   r   r   r   r   r	   r&   ³   r   z;Test_TestSuite.test_countTestCases_nested.<locals>.<lambda>c                   S   s   d S r   r   r   r   r   r	   r&   ´   r   r2   r1   é   r)   )r   r   r'   r   r   r   r    r!   )r   r7   r2   Ztest3ÚchildÚparentr   r   r	   Útest_countTestCases_nested®   s    z)Test_TestSuite.test_countTestCases_nestedc                 C   s.   g }t |ƒ}t ¡ }| |¡ |  |g ¡ d S r   )r   r   r   r    r   )r   ÚeventsÚresultr#   r   r   r	   Útest_run__empty_suiteÂ   s
    
z$Test_TestSuite.test_run__empty_suitec                 C   s6   t  ¡ }z| ¡  W n ty&   Y n0 |  d¡ d S )NúFailed to raise TypeError)r   r   r    Ú	TypeErrorÚfailr"   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   r?   ©r>   r   r	   r    ß   s    z0Test_TestSuite.test_run.<locals>.LoggingCase.runc                 S   s   d S r   r   r   r   r   r	   r1   â   r   z2Test_TestSuite.test_run.<locals>.LoggingCase.test1c                 S   s   d S r   r   r   r   r   r	   r2   ã   r   z2Test_TestSuite.test_run.<locals>.LoggingCase.test2N)r   r   r   r    r1   r2   r   rF   r   r	   ÚLoggingCaseÞ   s   rG   r1   r2   z	run test1z	run test2)r   r   r   r   r    r   )r   r?   rG   r(   r   rF   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 r   r   r   r   r   r	   r5   î   r   z7Test_TestSuite.test_addTest__TestCase.<locals>.Foo.testNr6   r   r   r   r	   r   í   s   r   r5   é   ©	r   r   r   ÚaddTestr   r   r/   r    r!   )r   r   r5   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 r   r   r   r   r   r	   r5   þ   r   z8Test_TestSuite.test_addTest__TestSuite.<locals>.Foo.testNr6   r   r   r   r	   r   ý   s   r   r5   rI   rJ   )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  ¡ }|ƒ D ]}| |¡ qv|  ||¡ 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 r   r   r   r   r   r	   r
     r   z0Test_TestSuite.test_addTests.<locals>.Foo.test_1c                 S   s   d S r   r   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 r   r   r   ©Zinner_suiter
   r   r   r	   Úgen  s    z)Test_TestSuite.test_addTests.<locals>.gen)r   r   r   ÚaddTestsr   r/   rK   )r   r   rO   r+   r,   Útr   rN   r	   Útest_addTests  s    
zTest_TestSuite.test_addTestsc                 C   s8   t  ¡ }z| d¡ W n ty(   Y n0 |  d¡ d S )Né   rA   )r   r   rP   rB   rC   r"   r   r   r	   Útest_addTest__noniterable/  s    z(Test_TestSuite.test_addTest__noniterablec                 C   s   t  ¡ }|  t|jd¡ d S )NrS   )r   r   ÚassertRaisesrB   rK   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 r   )r   r   rU   rB   rK   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   rU   rB   rP   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 r   r   )Ú_r   r   r	   ÚfG  s    z0Test_TestSuite.test_function_in_suite.<locals>.f)r   r   rK   r    r!   )r   rZ   r#   r   r   r	   Útest_function_in_suiteF  s    
z%Test_TestSuite.test_function_in_suitec                 C   sD   t jjst  d¡‚t  ¡ }g d¢|_| d¡ |  g d¢|j¡ d S )NúSuite cleanup is disabled)rI   r)   é   rI   )rI   Nr]   )r   ÚBaseTestSuiteÚ_cleanupÚSkipTestr   Ú_testsÚ_removeTestAtIndexr   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 )Nr\   r)   )r   r^   r_   r`   r   ra   rb   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 )Nr\   c                   @   s   e Zd Zdd„ ZdS )zATest_TestSuite.assert_garbage_collect_test_after_run.<locals>.Fooc                 S   s   d S r   r   r   r   r   r	   Útest_nothingi  s    zNTest_TestSuite.assert_garbage_collect_test_after_run.<locals>.Foo.test_nothingN)r   r   r   re   r   r   r   r	   r   h  s   r   re   )r   r^   r_   r`   r   ÚweakrefÚrefr    r!   ÚgcZcollectr   ra   ZassertIsNone)r   ZTestSuiteClassr   r5   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 r   )ri   r   r^   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 r   )ri   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 rl   ©ÚwasTornDownro   r   r   r	   ÚtearDownClass‡  s    z=Test_TestSuite.test_basetestsuite.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r	   ÚtestPassŠ  s    z8Test_TestSuite.test_basetestsuite.<locals>.Test.testPassc                 S   s   t  d S r   )rC   r   r   r   r	   ÚtestFailŒ  s    z8Test_TestSuite.test_basetestsuite.<locals>.Test.testFailN)
r   r   r   rn   rs   Úclassmethodrq   rt   ru   rv   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 rl   rm   r   ©ÚModuler   r	   ÚsetUpModule‘  s    z=Test_TestSuite.test_basetestsuite.<locals>.Module.setUpModulec                      s
   dˆ _ d S rl   rr   r   rx   r   r	   ÚtearDownModule”  s    z@Test_TestSuite.test_basetestsuite.<locals>.Module.tearDownModuleN)r   r   r   rn   rs   Ústaticmethodrz   r{   r   rx   r   r	   ry   Ž  s   ry   ru   rv   r)   rI   r   )r   r   Úobjectr   ÚsysÚmodulesZ
addCleanupÚpopr^   rP   r   r   r!   r    ÚassertFalsern   rs   ÚlenÚerrorsZfailuresZtestsRun)r   r   r#   r?   r   rx   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| g|¢R i |¤Ž d S rl   )Úcalledr   r   Ú__call__)r   ÚargsÚkwr   r   r	   r†   ¯  s    z=Test_TestSuite.test_overriding_call.<locals>.MySuite.__call__N)r   r   r   r…   r†   r   r   r   r	   ÚMySuite­  s   r‰   )r   r   r!   rK   Z
assertTruer…   r   Z_testRunEntered)r   r‰   r#   r?   Ú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.   r3   r4   r8   r9   r=   r@   rD   rH   rL   rM   rR   rT   rV   rW   rX   r[   rc   rd   ri   rj   rk   r„   r‹   r   r   r   r	   r      sH   þý
	
,r   Ú__main__)r   rh   r~   rf   Zunittest.test.supportr   r   r}   r   r   r   r   r   Úmainr   r   r   r	   Ú<module>   s      (