ó {G_Tc@sëddlmZddlZddlZdejfd„ƒYZdefd„ƒYZdefd„ƒYZd efd „ƒYZd efd „ƒYZ d efd„ƒYZ dejfd„ƒYZ d„Z e dkrçe ƒndS(iÿÿÿÿ(t test_supportNt FuncAttrsTestcBseZd„Zd„ZRS(cCs>ddd„ƒY}d„}||_|ƒ|_||_dS(NtFcBseZd„ZRS(cSsdS(N((tself((s//usr/local/lib/python2.7/test/test_funcattrs.pytas(t__name__t __module__R(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRscSsdS(Ni((((s//usr/local/lib/python2.7/test/test_funcattrs.pytb s((tftfiR(RRR((s//usr/local/lib/python2.7/test/test_funcattrs.pytsetUps    cCsyyt|||ƒWn|k r'nX|jd||fƒyt||ƒWn|k rcnX|jd|ƒdS(Ns!shouldn't be able to set %s to %rsshouldn't be able to del %s(tsetattrtfailtdelattr(Rtobjtnametvaluet exceptions((s//usr/local/lib/python2.7/test/test_funcattrs.pytcannot_set_attrs  (RRR R(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRs tFunctionPropertiesTestcBskeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( cCs|j|jjtƒdS(N(t assertEqualRRR(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_module"scCs|d|j_|jdt|jƒdƒd|jjj_|jdt|jjƒdƒ|jdt|jjƒdƒdS(Nit known_attrs+set attributes not in dir listing of methodsBset attribute on unbound method implementation in class not in dirsKset attribute on unbound method implementations, should show up in next dir(RRtassertIntdirRRtim_funcR (R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_dir_includes_correct_attrs%s cCs d„}|j|j|ƒdS(NcSsdS(s my docstringi((((s//usr/local/lib/python2.7/test/test_funcattrs.pyt duplicate4s(tassertNotEqualR(RR((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_duplicate_function_equality2s cCsBd„}|j|ƒdƒ|jj|_|j|ƒdƒdS(NcSsdS(N((((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest:si(RtNoneRt func_code(RR((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_copying_func_code9s cCs6|j|jjtƒƒ|j|jddtƒdS(Nt func_globalsi(tassertIsRR"tglobalsRt TypeError(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_globals?scsxd‰‡fd†}|j}|j|tƒ|jt|ƒdƒ|j|djjdƒ|j|d|tƒdS(Ni cs ˆGHdS(N(((R(s//usr/local/lib/python2.7/test/test_funcattrs.pyREsiitcellt func_closure( R(tassertIsInstancettupleRtlent __class__RRR%(RRtc((Rs//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_closureCs csL‡fd†}y|jdjWntk r4nX|jdƒd‰dS(Ncs ˆGHdS(N(((R(s//usr/local/lib/python2.7/test/test_funcattrs.pyRNsis'shouldn't be able to read an empty celli (R(t cell_contentst ValueErrorR (RR((Rs//usr/local/lib/python2.7/test/test_funcattrs.pyttest_empty_cellMs  cBsQ|j|jjdƒ|j|jjdƒd|j_|j|jjdƒ|j|jjdƒd|j_|j|jjdƒ|j|jjdƒ|j|jddeƒ|j|jddeƒd}|iid6U|j|jjjd ƒ|j|jjjd ƒ|j|jjdd e ƒ|j|jjdd e ƒdS( NRR-tdRit func_namesdef f(): pass f.__name__t __builtins__R( RRRR3RR%RRR tAttributeError(Rts((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_nameWs   csKd \‰‰d„}d„}‡fd†}‡fd†}‡‡fd†}x9|||||gD]"}|jt|jƒtjƒqdW|j|ƒdƒ|j|ƒdƒ|j|_|j|j|jƒ|j|ƒdƒy|j|_Wntk rnX|jdƒy|j|_Wntk r9nX|jdƒdS( NiicSsdS(N((((s//usr/local/lib/python2.7/test/test_funcattrs.pyRoscSsdS(Ni ((((s//usr/local/lib/python2.7/test/test_funcattrs.pyRpscsˆS(N(((tnum_one(s//usr/local/lib/python2.7/test/test_funcattrs.pyR-qscsˆS(N(((tnum_two(s//usr/local/lib/python2.7/test/test_funcattrs.pyR2rscs ˆˆfS(N(((R8R9(s//usr/local/lib/python2.7/test/test_funcattrs.pytesssDfunc_code with different numbers of free vars should not be possible(ii(RttypeR ttypestCodeTypeR0R (RRRR-R2R:tfunc((R8R9s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_codems.        cCs9|j|jjdƒ|j`|j|jjdƒdS(N(RRt func_defaultsR(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_blank_func_defaults‹s cCsåd„}ddd„}|j|jdƒ|j|jd ƒd |_|j|jd ƒ|j|ƒdƒ|j|dƒdƒ|j|ddƒdƒ|`|j|jdƒy |ƒWntk rÓnX|jdƒdS( NcSs||S(N((RR((s//usr/local/lib/python2.7/test/test_funcattrs.pyt first_func‘siicSs||S(N((RR((s//usr/local/lib/python2.7/test/test_funcattrs.pyt second_func“siiisFfunc_defaults does not update; deleting it does not remove requirement(ii(ii(ii(RR@RR%R (RRBRC((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_default_argss     ( RRRRRR!R&R.R1R7R?RARD(((s//usr/local/lib/python2.7/test/test_funcattrs.pyR s       tInstancemethodAttrTestcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCsz|j|jjj|jƒ|j|jjj|jƒ|j|jjd|jtƒ|j|jjd|jtƒdS(Ntim_class(RRRRFR RR%(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_im_class¨scCs‰|j|j_|j|jjj|jƒ|j|jjj|jƒ|j|jjd|jtƒ|j|jjd|jtƒdS(NR(RRRRR RR%(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_im_func®s cCst|j|jjjdƒ|j|jjj|jƒ|j|jjddtƒ|j|jjd|jtƒdS(Ntim_self(RRRRIRR RR%(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_im_selfµscCsÐtjtd|jƒ|j_|j|jjƒt|jƒƒ|j|jjƒt|jƒƒy|jjjWnt k r†nX|j dƒ|j |jjddt ƒ|j |jjddt ƒdS(Ns4using unknown attributes should raise AttributeErrort unknown_attri( R<t MethodTypetidRRRR RRKR5R R(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_im_func_non_method»s""  cCsHd|jjj_|j|jjjdƒ|j|jjjdƒdS(Ni(RRRRRR (R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_implicit_method_propertiesÌs(RRRGRHRJRNRO(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRE§s     tArbitraryFunctionAttrTestcBs,eZd„Zd„Zd„Zd„ZRS(cCswd|j_|j|jjdƒxN|jj|jjgD]4}y d|_Wntk raq;X|jdƒq;WdS(Nis0setting attributes on methods should raise error(RRRRRR R5R (RR>((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_set_attrÓs   cCs2y |j`Wntk r nX|jdƒdS(Ns1deleting unknown attribute should raise TypeError(RRKR5R (R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_delete_unknown_attrßs   cCs•y|j|jj_Wntk r)nX|jdƒ|j|jjj_xB|jj|jj|jjjgD]}|j|j|jƒqqWdS(NsLsetting arbitrary attribute in unbound function should raise AttributeError(RRtklassR5R RR R(Rtmethod((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_setting_attrs_duplicatesçs  +cCsYxR|j|jj|jjgD]2}y |jWntk rCqX|jdƒqWdS(Ns4using unknown attributes should raise AttributeError(RRRR tnon_existent_attrR5R (RR>((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_unset_attrós %  (RRRQRRRURW(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRPÒs  tFunctionDictsTestcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs—|j|jddtƒ|j|jddtƒddlm}|idd6ƒ}|j|jjjd|tƒ|j|jjjd|tƒdS(Nt__dict__t func_dictiÿÿÿÿ(tUserDictiR( RRRR%R[RRRR (RR[R2((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_setting_dict_to_invalidÿs cCsyidd6}||j_||jjj_|j||jjƒ|j||jjƒ|j||jjjjƒ|j||jjjƒ|j||jjjjƒ|j||jjjƒ|j|jj dƒ|j|jjddƒ|j|jjddƒ|j|jjjj dƒ|j|jjj dƒ|j|jjjj dƒ|j|jjj dƒdS(NiR( RRYRRRR#RZR RR(RR2((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_setting_dict_to_valids   cCs`y |j`Wntk r nX|jdƒy |j`Wntk rNnX|jdƒdS(Ns3deleting function dictionary should raise TypeError(RRYR%R RZ(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_delete_func_dicts     cCs|j|jjiƒdS(N(RRRY(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_unassigned_dict,scCs4d}i}|||j<|j||j|ƒdS(Ns Some string(RR(RRR2((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_as_dict_key/s (RRR\R]R^R_R`(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRXþs     tFunctionDocstringTestcBseZd„Zd„ZRS(cCsè|j|jjdƒ|j|jjdƒd}||j_|jjj_|j|jj|ƒ|j|jj|ƒ|j|jjj|ƒ|j|jjj|ƒ|j |jjd|t ƒ|j |jjd|t ƒdS(NsA test method that does nothingt__doc__( RRRbRtfunc_docRRRR RR5(Rtdocstr((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_set_docstring_attr7scCs†d|j_|j`|j|jjdƒ|j|jjdƒd|j_|j`|j|jjdƒ|j|jjdƒdS(Ns The docstring(RRbRRRc(R((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_delete_docstringCs    (RRReRf(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRa6s tStaticMethodAttrsTestcBseZd„ZRS(cCsQd„}t|ƒ}|j|j|kƒt|ƒ}|j|j|kƒdS(NcSsdS(N((((s//usr/local/lib/python2.7/test/test_funcattrs.pyRPs(t classmethodt assertTruet__func__t staticmethod(RRR-R6((s//usr/local/lib/python2.7/test/test_funcattrs.pyttest_func_attributeOs    (RRRl(((s//usr/local/lib/python2.7/test/test_funcattrs.pyRgNscCs tjttttttƒdS(N(Rt run_unittestRRERPRXRaRg(((s//usr/local/lib/python2.7/test/test_funcattrs.pyt test_mainZs t__main__(RRR<tunittesttTestCaseRRRERPRXRaRgRnR(((s//usr/local/lib/python2.7/test/test_funcattrs.pyts  ‡+,8