a ze@sddlZddlZddlmZddlmZddlZddlZddlZddl Z ddl Z Gddde Z ddZ Gdd d ZGd d d ejeZGd d d ejeZddZedkredS)N) DocTestSuite)supportc@s eZdZdS)WeakN__name__ __module__ __qualname__r r M/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_threading_local.pyrsrcCs t}||_|t|dSN)rweakappendweakrefref)localweaklistr r r r targetsrc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) BaseLocalTestcCs"|d|d|ddS)N2d) _local_refsselfr r r test_local_refss  zBaseLocalTest.test_local_refscCs|}g}t|D]&}tjt||fd}||q~t| t ||dd|D}| t ||d|fd|_ tdd|D}| t ||d|f|t |fdS)NrargscSsg|]}|dur|qSr r .0r r r r +z-BaseLocalTest._local_refs..cSsg|]}|dur|qSr r rr r r r1r ) _localrange threadingThreadrstartjoinr gc_collect assertEquallenZassertInZ someothervar)rnrritZdeadlistr r r rs  zBaseLocalTest._local_refscsrddlGfdddj}|fddtfddtdDWdn1sd0YdS) NrcseZdZfddZdS)z)BaseLocalTest.test_derived..LocalcsddS)Ng{Gz?)sleeprtimer r __init__;sz2BaseLocalTest.test_derived..Local.__init__Nrrrr1r r/r r Local:sr3cs|_j|dSr )xr))r,)rrr r f?sz%BaseLocalTest.test_derived..fc3s|]}tj|fdVqdS)rN)r$r%rr,)r5r r Dsz-BaseLocalTest.test_derived.. )r0r"rZ start_threadsr#)rr3r )r5rrr0r test_derived4s zBaseLocalTest.test_derivedcsGddd|jddttfdd}tj|d}|fddtd D|| dS) Nc@s eZdZdS)z7BaseLocalTest.test_derived_cycle_dealloc..LocalNrr r r r r3Jsr3FcsLg}||d|d_~ttddDdS)Nbarrcss|]}t|d VqdS)fooN)hasattr)rrr r r r7`r zFBaseLocalTest.test_derived_cycle_dealloc..f..)r r;rr(setwaitall)cycler3e1e2localsZpassedr r r5Qs  z3BaseLocalTest.test_derived_cycle_dealloc..frcsg|] }qSr r r6)r3r r rir z.r8) r"r$Eventr%r&r>r#r=r'Z assertTrue)rr5r-r rAr test_derived_cycle_deallocHs z(BaseLocalTest.test_derived_cycle_dealloccCsJGddd|j}|dd|d|jt|jdd|t|jddS)Nc@seZdZddZdS)z-BaseLocalTest.test_arguments..MyLocalc_sdSr r )rrkwargsr r r r1rsz6BaseLocalTest.test_arguments..MyLocal.__init__Nr2r r r r MyLocalqsrIr!)a)r" assertRaises TypeError)rrIr r r test_argumentsos  zBaseLocalTest.test_argumentscsd_ttfdd}fdd}tj|d}|tj|d}|||jjdS)Nz No error message set or cleared.cs$d_d_`dS)Nr;r:)r4yr=r>r )rBrCobjr r f1s z)BaseLocalTest._test_one_class..f1csDz j}Wnty"d_Yn0d|f_tjjdS)Nz'Incorrectly got value %r from class %r )r4AttributeError_failedsysstderrwrite)r;)crOrr r f2s   z)BaseLocalTest._test_one_class..f2rE) rSr$rFr%r&r>r'r=Z assertFalse)rrWrPrXt1t2r )rWrBrCrOrr _test_one_classzs  zBaseLocalTest._test_one_classcCs||jdSr )r[r"rr r r test_threading_localsz"BaseLocalTest.test_threading_localcCs Gddd|j}||dS)Nc@seZdZdZdS)zBBaseLocalTest.test_threading_local_subclass..LocalSubclass(To test that subclasses behave properly.Nrrr__doc__r r r r LocalSubclasssr`)r"r[rr`r r r test_threading_local_subclasssz+BaseLocalTest.test_threading_local_subclasscCs|}d|_||jddi|ti|_Wdn1sD0Y|t|`Wdn1sr0YdS)Nr4)r4r)__dict__rKrR)rclsrOr r r _test_dict_attributes $ z"BaseLocalTest._test_dict_attributecCs||jdSr )rfr"rr r r test_dict_attributesz!BaseLocalTest.test_dict_attributecCs Gddd|j}||dS)Nc@seZdZdZdS)zABaseLocalTest.test_dict_attribute_subclass..LocalSubclassr]Nr^r r r r r`sr`)r"rfrar r r test_dict_attribute_subclasssz*BaseLocalTest.test_dict_attribute_subclasscCsJGddd}|}||_||j_t|}~t||dS)Nc@s eZdZdS)z.BaseLocalTest.test_cycle_collection..XNrr r r r Xsri)r"rr4rrrr(Z assertIsNone)rrir4wrr r r test_cycle_collections  z#BaseLocalTest.test_cycle_collectionN)rrrrrr9rGrMr[r\rbrfrgrhrkr r r r rs' $ rc@seZdZejZdS)ThreadLocalTestN)rrr_threadr"r r r r rlsrlc@seZdZejZdS)PyThreadingLocalTestN)rrr_threading_localrr"r r r r rnsrncsrt}|td|tt|tttjdd}fdd}|td||dt |dS)NrocSs tjt_dSr )rmr"rortestr r r setUpsztest_main..setUpcs t_dSr )rorrpZ local_origr r tearDownsztest_main..tearDown)rrrt) unittestZ TestSuiteZaddTestrZ makeSuiterlrnrorrZ run_unittest)Zsuiterrrtr rsr test_mains rv__main__)rTrudoctestrrqrrgcrmr$roobjectrrrZTestCaserlrnrvrr r r r s"  .