a ze0O@spddlZddlZddlmZGdddejZGdddZGdddZGd d d ejZed krle dS) N)Templatec@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) ModuleTestcCs|tjd|tjd|tjd|tjtjtj|tjd|tjtjd|tjd|tj d|tj tjtjtjtj tjdS)Nz abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789Z abcdefABCDEF01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) assertEqualstring whitespaceascii_lowercaseascii_uppercase ascii_lettersdigits hexdigits octdigits punctuation printableselfrD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_string.py test_attrsszModuleTest.test_attrscCs|tdd|tdd|tdd|tdd|tddd|td d |td d |td d |td dddS)Nz abc def ghiz Abc Def Ghiz abc def ghizabc def ghiz ABC DEF GHIz ABC-DEF-GHI-z Abc-Def-GhizABC-def DEF-ghi GHIzAbc-def Def-ghi Ghiz aBc DeF zAbc Defz aBc DeF  z Abc Def )rr capwordsrrrr test_capwordsszModuleTest.test_capwordscCsft}||dd||ddd||dddd|t|j|ttjjdS)Nfoozfoo{0}barZfoobarz foo{1}{0}-{1}z foo6bar-6)r Formatterrformat assertRaises TypeErrorrfmtrrrtest_basic_formatter"s zModuleTest.test_basic_formattercCst}||jdddd|t|jd||jdddd|t|jd||jdddd|t|jd|td |jddd Wdn1s0YdS) Nz-{arg}-testargz-test-z-{self}-rz-{format_string}-) format_stringr))r)r()r rrr r!KeyErrorZassertRaisesRegexr"r#rrrtest_format_keyword_arguments*sz(ModuleTest.test_format_keyword_argumentscCs(t}||dddddd||jddddddjdddd||dddddd||dddddddd||jd d ddd d jd ddd |t|d ddWdn1s0Y|t|d ddWdn1s0YdS)Nzfoo{}{}rrzfoo{1}{num}{1})numz{:^{}}z {:^{}} {}Xz {:^{pad}}{}r)Zpadzfoo{1}{}zfoo{}{1}r rrr r! ValueErrorr#rrrtest_auto_numbering6s(    , zModuleTest.test_auto_numberingcCst}||jdddd||ddd|t|jdd||ddd ||dtjd ||dtd d ||dtd ddS)Nz -{arg!r}-r&r'z-'test'-z{0!s}z{0!h}z{0!a}*Z42z6'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'z'\xff'z'\u0100')r rrr r!r/r chrr#rrrtest_conversion_specifiersIsz%ModuleTest.test_conversion_specifierscCsjt}Gddd}|}||d|d|t|ddWdn1s\0YdS)Nc@seZdZddZdS)z,ModuleTest.test_name_lookup..AnyAttrcSs|SNr)rattrrrr __getattr__Xsz8ModuleTest.test_name_lookup..AnyAttr.__getattr__N)__name__ __module__ __qualname__r8rrrrAnyAttrWsr<z{0.lumber}{0.jack}Z lumberjack)r rrr r!AttributeError)rr$r<xrrrtest_name_lookupUs  zModuleTest.test_name_lookupcCst}gd}||d|d|t|dgWdn1sP0Y|t|diWdn1s0YdS)N)ZeggsandZspamz {0[2]}{0[0]}Zspameggs)r rrr r! IndexErrorr*)rr$lookuprrrtest_index_lookup_s * zModuleTest.test_index_lookupcCs4Gdddtj}|ddi}||dddS)Nc@s eZdZifddZddZdS)z>ModuleTest.test_override_get_value..NamespaceFormattercSstj|||_dSr6)r r__init__ namespace)rrFrrrrEjs zGModuleTest.test_override_get_value..NamespaceFormatter.__init__cSsHt|tr4z ||WSty0|j|YS0ntj|||dSr6) isinstancestrr*rFr r get_value)rkeyargskwdsrrrrIns    zHModuleTest.test_override_get_value..NamespaceFormatter.get_valueN)r9r:r;rErIrrrrNamespaceFormatteris rMZgreetingZhelloz{greeting}, world!z hello, world!r rrr )rrMr$rrrtest_override_get_valuehs z"ModuleTest.test_override_get_valuecCs4Gdddtj}|}||dddddS)Nc@seZdZddZdS)z.CallFormattercSs t||Sr6)r )rvalue format_specrrr format_field~szIModuleTest.test_override_format_field..CallFormatter.format_fieldN)r9r:r;rRrrrr CallFormatter}srSz*{0}*cSsdS)Nresultrrrrrz7ModuleTest.test_override_format_field..z*result*rN)rrSr$rrrtest_override_format_field|sz%ModuleTest.test_override_format_fieldcCs2Gdddtj}|}||dddddS)NcseZdZfddZZS)z:ModuleTest.test_override_convert_field..XFormattercs|dkr dSt||S)Nr?)super convert_field)rrP conversion __class__rrrYszHModuleTest.test_override_convert_field..XFormatter.convert_field)r9r:r;rY __classcell__rrr[r XFormattersr^z {0!r}:{0!x}rz 'foo':NonerN)rr^r$rrrtest_override_convert_fieldsz&ModuleTest.test_override_convert_fieldcCs0Gdddtj}|}||ddddS)Nc@seZdZddZdS)z4ModuleTest.test_override_parse..BarFormattercssV|dD]F}|ddkrB|ddd\}}}d||dfVq |dddfVq dS)N|r+:r=)split partition)rr)Zfield field_name_rQrrrparses  z:ModuleTest.test_override_parse..BarFormatter.parseN)r9r:r;rhrrrr BarFormattersriz *|+0:^10s|*rz * foo *rN)rrir$rrrtest_override_parses zModuleTest.test_override_parsec CsGdddtj}|}||ddd||jddddd ||jd dd ddd |jt|jd dd dd d|t|jddd |jt|jddd dd|jt|jddd dddS)Nc@seZdZddZdS)z@ModuleTest.test_check_unused_args..CheckAllUsedFormattercSsDt|}|tdt||D]}||q$|r@tddS)Nrzunused arguments)setkeysupdaterangelenremover/)r used_argsrKkwargsZ unused_argsr(rrrcheck_unused_argss   zRModuleTest.test_check_unused_args..CheckAllUsedFormatter.check_unused_argsN)r9r:r;rsrrrrCheckAllUsedFormattersrtz{0} Z10z{0}{i}diZ10100z {0}{i}{1}Z1010020r)rxj{i}r.)rrtr$rrrtest_check_unused_argss z!ModuleTest.test_check_unused_argscCsjt}d}tdd}|t$}|d||tdWdn1sJ0Y|dt|j dS)Nrrvrwr{ recursion) r rdictr!r/_vformatrkassertInrH exception)rr$rKrrerrrrrtest_vformat_recursion_limits   2z'ModuleTest.test_vformat_recursion_limitN)r9r:r;rrr%r+r0r5r@rDrOrWr_rjr|rrrrrrs       rc@s eZdZdS)BagN)r9r:r;rrrrrsrc@seZdZddZdS)Mappingc CsB|}|dD].}zt||}Wqty:t|Yq0q|S)N.)rdgetattrr>r*)rnameobjpartrrr __getitem__s zMapping.__getitem__N)r9r:r;rrrrrrsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-S). TestTemplatecCsJtd}||tdddd|t|jtdd|ttjdS)Nz,$who likes to eat a bag of $what worth $$100timhamwhowhat(tim likes to eat a bag of ham worth $100r)rr substituterr!r*r")rsrrrtest_regular_templatess z#TestTemplate.test_regular_templatescCsDtd}tdddd}|||d|t|jtddddS)N$who likes ${what} for ${meal}rrdinnerrrmealtim likes ham for dinnerr)rrrrr!r*rrdrrr"test_regular_templates_with_bracess   z/TestTemplate.test_regular_templates_with_bracescCs,td}tdddd}|||ddS)Nz$WHO likes ${WHAT} for ${MEAL}rrr)ZWHOWHATZMEALrrrrrrrrr&test_regular_templates_with_upper_casesz3TestTemplate.test_regular_templates_with_upper_casecCs,td}tdddd}|||ddS)Nz%$_wh0_ likes ${_w_h_a_t_} for ${mea1}rrr)Z_wh0_Z _w_h_a_t_Zmea1rrrrrr'test_regular_templates_with_non_letterssz4TestTemplate.test_regular_templates_with_non_letterscCsJ|j}td}||tddddtd}||tdddddS)Nz-$who likes to eat a bag of $$what worth $$100rrrz*tim likes to eat a bag of $what worth $100z $who likes $$z tim likes $rrrrreqrrrr test_escapesszTestTemplate.test_escapescCs<|j}td}tdd}|||d|||ddS)Nz%(foo)s $foo ${foo}Zbazrz%(foo)s baz bazrrrrsafe_substituterrrrrrr test_percentss  zTestTemplate.test_percentscCsT|j}td}tdd}|||d|||dtd}|||ddS)Nz&tim has eaten $count bags of ham today)countz!tim has eaten 7 bags of ham todayz(tim has eaten ${count} bags of ham todayrrrrrtest_stringifications z!TestTemplate.test_stringificationcCs>|j}td}tddd}|||d|||ddS)Nz$who ate ${meal})rfred)rkung pao)rrz'('tim', 'fred') ate ('ham', 'kung pao')rrrrrtest_tupleargss  zTestTemplate.test_tupleargscCs|j}td}||tddd||tddd||tddd d ||tddd d ||tdddd ddS)Nrrrztim likes ${what} for ${meal}rrz$who likes ham for ${meal}r)rrz$who likes ham for dinnerrztim likes ham for ${meal}rr)rrrrrrrrtest_SafeTemplateszTestTemplate.test_SafeTemplatecCs|j}td}|t|jtddtd}|t|jtddtd}|t|jtddtd}|t|jtddtd}|t|jtdddS)Nz $who likes $rrz$who likes ${what)z$who likes $100u$who likes $ıu$who likes $İ)r!rr/rr)rraisesrrrrtest_invalid_placeholderssz&TestTemplate.test_invalid_placeholderscCsXGdddt}t}t|_t|j_d|jj_d|j_|d}|||ddS)Nc@seZdZdZdS)z9TestTemplate.test_idpattern_override..PathPatternz[_a-z][._a-z0-9]*N)r9r:r; idpatternrrrr PathPattern#srrrz,$bag.foo.who likes to eat a bag of $bag.whattim likes to eat a bag of ham) rrrbagrrrrr)rrmrrrrtest_idpattern_override"s  z$TestTemplate.test_idpattern_overridecCsNGdddt}|d}tddddd}|t|j||||d dS) Nc@seZdZdZdS)z3TestTemplate.test_flags_override..MyPatternrN)r9r:r;flagsrrrr MyPattern.srz$wHO likes ${WHAT} for ${meal}rrrr)ZwHOrrwzfredHO likes ${WHAT} for dinner)rrr!r/rrr)rrrrrrrtest_flags_override-s z TestTemplate.test_flags_overridecCs:Gdddt}tddd}|d}|||ddS)Nc@seZdZdZdZdZdS)zFTestTemplate.test_idpattern_override_inside_outside..MyPattern[a-z]+[A-Z]+rNr9r:r;rbraceidpatternrrrrrr8srrBARrrz $foo ${BAR}zfoo BARrrrrrrrr&test_idpattern_override_inside_outside5s z3TestTemplate.test_idpattern_override_inside_outsidecCsPGdddt}tddd}|d}|t|j||d}|t|j|dS)Nc@seZdZdZdZdZdS)zWTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced..MyPatternrrrNrrrrrrCsrrrrz$FOOz${bar})rrr!r/rrrrr7test_idpattern_override_inside_outside_invalid_unbraced@s  zDTestTemplate.test_idpattern_override_inside_outside_invalid_unbracedcCsGdddt}t}t|_t|j_d|jj_d|j_|d}|||dGdddt}|d}| t |ji| t |j idS) Nc@seZdZdZdS)z5TestTemplate.test_pattern_override..MyPatternz (?P@{2}) | @(?P[_a-z][._a-z0-9]*) | @{(?P[_a-z][._a-z0-9]*)} | (?P@) Nr9r:r;patternrrrrrNsrrrz,@bag.foo.who likes to eat a bag of @bag.whatrc@seZdZdZdS)z6TestTemplate.test_pattern_override..BadPatterna (?P.*) | (?P@{2}) | @(?P[_a-z][._a-z0-9]*) | @{(?P[_a-z][._a-z0-9]*)} | (?P@) | Nrrrrr BadPattern]sr) rrrrrrrrrr!r/r)rrrrrrrrtest_pattern_overrideMs  z"TestTemplate.test_pattern_overridecCsJGdddt}d}||}|t|ji|ddi}||ddS)Nc@seZdZdZdS)z5TestTemplate.test_braced_override..MyTemplate \$(?: (?P$) | (?P[_a-z][_a-z0-9]*) | @@(?P[_a-z][_a-z0-9]*)@@ | (?P) | ) Nrrrrr MyTemplatejsrPyCon in $@@location@@location ClevelandPyCon in Cleveland)rr!r*rrrrZtmpltvalrrrtest_braced_overrideis  z!TestTemplate.test_braced_overridecCsJGdddt}d}||}||||ddi}||ddS)Nc@seZdZdZdS)z:TestTemplate.test_braced_override_safe..MyTemplaterNrrrrrr{srrrrr)rrrrrrrtest_braced_override_safezs  z&TestTemplate.test_braced_override_safecCsbGdddt}|d}|t}|iWdn1sB0Y|dt|jdS)Nc@seZdZdZdS)z;TestTemplate.test_invalid_with_no_lines..MyTemplatez (?P) | unreachable( (?P) | (?P) | (?P) ) Nrrrrrrsrr=z line 1, col 1)rr!r/rrrHr)rrrrrrrtest_invalid_with_no_liness   (z'TestTemplate.test_invalid_with_no_linescCs*td}tddd}|||ddS)N$who likes $whatutÿmufþ edrutÿm likes fþ edrrrrrtest_unicode_valuess z TestTemplate.test_unicode_valuescCs|j}td}||jdddd||jtddddd||jtdd dddddtd }||jtd d d dd||jtdddddtd}||jd dddSNrrrrz tim likes hamrrrrzthe mapping is $mappingZnonerZbozo)mappingzthe mapping is bozoZoneZtwozthe mapping is twozthe self is $selfrzthe self is bozorrrrrtest_keyword_argumentss$z#TestTemplate.test_keyword_argumentscCs|j}|j}td}||jdddd||jtddddd||jtdd dddddtd }||jtd d d dd||jtdddddtdd}|t|j|i|t|j|itd}||jd dddSr)rr!rrrr"r)rrrrrrrrtest_keyword_arguments_safes, z(TestTemplate.test_keyword_arguments_safecCs|j}|j}Gdddt}|d}||jdddd|t|j||jdddd||d|d}|t|jtddd||dGd d d t}|d }||td d dddS)Nc@seZdZdZdS)z?TestTemplate.test_delimiter_override..AmpersandTemplate&Nr9r:r; delimiterrrrrAmpersandTemplatesrzthis &gift is for &{who} &&ZbudZyou)Zgiftrzthis bud is for you &zthis &gift is for &{who} &c@seZdZdZdS)z7TestTemplate.test_delimiter_override..PieDelims@Nrrrrr PieDelimssrz-@who likes to eat a bag of @{what} worth $100rrrr)rr!rrr*rr/r)rrrrrrrrrtest_delimiter_overrides  z$TestTemplate.test_delimiter_overrideN)r9r:r;rrrrrrrrrrrrrrrrrrrrrrrrrrrs,     r__main__) Zunittestr rZTestCaserrrrr9mainrrrrs <