a 5êdg²‰ã@sdZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddlZGdd„dejƒZGdd „d ejƒZGd d „d ejƒZGd d „d ejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZedkre ¡dS)zPyUnit testing against strptimeéN)Úsupport)Úskip_if_buggy_ucrt_strfptime)Údatec@seZdZdZdd„ZdS)Ú getlang_Testsz Test _getlangcCs| t ¡t tj¡¡dS©N)Ú assertEqualÚ _strptimeÚ_getlangÚlocaleÚ getlocaleÚLC_TIME©Úself©rú./usr/local/lib/python3.9/test/test_strptime.pyÚ test_basicszgetlang_Tests.test_basicN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrsrc@sPeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dS)ÚLocaleTime_Testsz¤Tests for _strptime.LocaleTime. All values are lower-cased when stored in LocaleTime, so make sure to compare values after running ``lower`` on them. cCst ¡|_t ¡|_dS)z(Create time tuple based on current time.N)ÚtimeÚ localtimeÚ time_tuplerÚ LocaleTimeÚLT_insr rrrÚsetUps zLocaleTime_Tests.setUpcCsNt ||j¡ ¡}||j|}| ||d|¡| ||d|||f¡dS)z‘Helper method that tests testing against directive based on the tuple_position of time_tuple. Uses error_msg as error message. z%s: not found in tuplez-%s: position within tuple incorrect; %s != %sN)rÚstrftimerÚlowerÚassertInr)rZtestingÚ directiveZtuple_positionZ error_msgÚstrftime_outputZ comparisonrrrÚcompare_against_time!sÿÿÿz%LocaleTime_Tests.compare_against_timecCs,| |jjddd¡| |jjddd¡dS)Nú%Aéz#Testing of full weekday name failedú%az*Testing of abbreviated weekday name failed)r"rÚ f_weekdayÚ a_weekdayr rrrÚ test_weekday/s ÿÿzLocaleTime_Tests.test_weekdaycCs,| |jjddd¡| |jjddd¡dS)Nú%Béz&Testing against full month name failedz%bz-Testing against abbreviated month name failed)r"rZf_monthÚa_monthr rrrÚ test_month7s ÿÿzLocaleTime_Tests.test_monthcCsVt d|j¡ ¡}| ||jjd¡|jddkr8d}nd}| |jj||d¡dS)Nz%pz!AM/PM representation not in tupleéé rr*z;AM/PM representation in the wrong position within the tuple)rrrrrrÚam_pmr)rr!ÚpositionrrrÚ test_am_pm?s ÿÿzLocaleTime_Tests.test_am_pmcCsNt d|j¡ ¡}|rJ| ||jjdvp8||jjdvd||jjf¡dS)Nú%Zrr*ztimezone %s not found in %s)rrrrÚ assertTruerÚtimezone)rr4rrrÚ test_timezoneIs ÿþzLocaleTime_Tests.test_timezonecCs–d}t d|¡}| t |jj|¡|d¡t d|¡}| t |jj|¡|d¡t d|¡}| t |jj|¡|d¡t ¡}d|_ |  |jd ¡dS) N) iÏr-ééé,é7ééLrz%czLC_date_time incorrectz%xzLC_date incorrectz%XzLC_time incorrect)Úr<z6LocaleTime's LC directives cannot handle empty strings) rrrrZ LC_date_timeZLC_dateZLC_timerrr/r3)rZ magic_dater!ZLTrrrÚtest_date_timeRs  ÿ ÿ ÿzLocaleTime_Tests.test_date_timecCs| |jjt ¡¡dSr)rrÚlangrr r rrrÚ test_langhszLocaleTime_Tests.test_langN) rrrrrr"r(r,r1r5r=r?rrrrrs  rc@sTeZdZdZdd„Zdd„Zdd„Zedd „ƒZd d „Z d d „Z dd„Z dd„Z dS)Ú TimeRETestszTests for TimeRE.cCst ¡|_t ¡|_dS)z Construct generic TimeRE object.N)rÚTimeREÚtime_rerÚ locale_timer rrrrqs zTimeRETests.setUpcCst|j d¡}| | |jjd¡dkd|¡| | |jjd¡dkd|¡| | |jd¡dkd|¡dS) Nz%a %A %dr:éÿÿÿÿz7did not find abbreviated weekday in pattern string '%s'éz0did not find full weekday in pattern string '%s'Údz.did not find 'd' directive pattern string '%s')rBÚpatternr3ÚfindrCr'r&©rZpattern_stringrrrÚ test_patternvs  ÿÿÿÿÿÿzTimeRETests.test_patterncCs"|j d¡}| d|d|¡dS)Nz\d+z\\d\+z/%s does not have re characters escaped properly)rBrGrrIrrrÚtest_pattern_escapingƒs  ÿÿz!TimeRETests.test_pattern_escapingc Cs<|j d¡ |jjd¡}| |o6| d¡|jjdkd¡|j d¡}| d|jjd|jjdf¡}| |d|j d|jjd|jjdff¡| | d ¡|jjdkoÆ| d ¡|jjdkd |j |j j | d ¡| d ¡f¡d D]H}|j d |¡}| t   d |¡¡}| |dt   d |¡|j f¡qîdS)Nr#r$ÚAzre object for '%A' failedz%a %bz%s %srEz,Match failed with '%s' regex and '%s' stringÚaÚbzkre object couldn't find the abbreviated weekday month in '%s' using '%s'; group 'a' = '%s', group 'b' = %s')rMrLrNÚBÚcrFÚGÚHÚIÚjÚmÚMÚpÚSÚuÚUÚVÚwÚWÚxÚXÚyÚYÚZú%rcz(Matching failed on '%s' using '%s' regex)rBÚcompileÚmatchrCr&r3Úgroupr'r+rGÚstringÚrerr)rÚfoundZcompiledr rrrÚ test_compile‹s>ÿ  ÿ ÿÿÿÿþþ ÿÿzTimeRETests.test_compilecCs4t ¡}tƒtƒf|_| t |¡ d¡dd¡dS)Nr2r<z6with timezone == ('',''), TimeRE().pattern('%Z') != '')rrÚ frozensetr4rrArG)rZ test_localerrrÚtest_blankpattern¦s ÿzTimeRETests.test_blankpatterncCs&|j d¡}| d¡}| |d¡dS)Nz\w+ %mz\w+ 10z"Escaping failed of format '\w+ 10')rBrdrer3)rZ compiled_rerirrrÚtest_matching_with_escapes®s  z&TimeRETests.test_matching_with_escapescCs@t ¡}tdƒtdƒf|_t |¡}| | d¡ d¡d¡dS)N)ZutcZgmtúTokyo (standard time)zTokyo (daylight time)r2rnzFlocale data that contains regex metacharacters is not properly escaped)rrrkr4rAr3rdre)rrCrBrrrÚ'test_locale_data_w_regex_metacharacters´sþ ÿz3TimeRETests.test_locale_data_w_regex_metacharacterscCs4|j d¡}| t |d¡¡| t |d¡¡dS)Nz%j %HZ180z18 0)rBrGZ assertFalserhrer3)rrGrrrÚtest_whitespace_substitutionÁs z(TimeRETests.test_whitespace_substitutionN) rrrrrrJrKrrjrlrmrorprrrrr@ns   r@c@sìeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zed"d#„ƒZd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8S)9Ú StrptimeTestszTests for _strptime.strptime.cCst ¡|_dS)zCreate testing time tuple.N©rÚgmtimerr rrrrÍszStrptimeTests.setUpc Cs´|jttjddddD]r}zt d|¡WnNtyBYqYqtyz}z"| d||jjf¡WYd}~qd}~00| d|¡q| t¡t dd ¡Wdƒn1s¸0Y| t¡t d d ¡Wdƒn1sî0Yd D]B}| t¡"t d d  |¡¡Wdƒqü1s40Yqü| t¡t dd¡Wdƒn1sn0Y| t¡t dd¡Wdƒn1s¦0YdS)Nú%dr#)Z data_stringÚformat)rcz% z%eÚ2005z'%s' raised %s, not ValueErrorz'%s' did not raise ValueErrorz1999 50z%Y %Vz1999 51ú%G %V©rLrMr\rYz%G %{}Z2015z%Gz1999 256z%G %j) Ú assertRaisesÚ ValueErrorrÚ_strptime_timeÚ ExceptionZfailÚ __class__rru)rZ bad_formatÚerrr\rrrÚtest_ValueErrorÑs0 ÿ  ÿ * * 4 , zStrptimeTests.test_ValueErrorcCs| t¡}t dd¡Wdƒn1s,0Y| |jjd¡| t¡}t dd¡Wdƒn1sr0Y| |jjd¡dS)Nr<z%DTZ19z%Y %)ryrzrr{ZassertIsÚ exceptionÚ__suppress_context__)rÚerrrÚtest_strptime_exception_contextôs  * *z-StrptimeTests.test_strptime_exception_contextcCs| ttjdd¡dS)Nz10 12ú%m)ryrzrr{r rrrÚtest_unconverteddataþsz"StrptimeTests.test_unconverteddatac CsVt d||j¡}t |d|¡}| |||j|kd|||||j|f¡dS)zHelper fxn in testing.rcz2testing of '%s' directive failed; '%s' -> %s != %sN©rrrrr{r3)rr r0Ú strf_outputÚ strp_outputrrrÚhelpers ÿÿÿzStrptimeTests.helperc CsjdD]}| |d¡qdD]J\}}|D]<}t |d¡}|t|ƒ}| |d|kd||df¡q&qdS)N)r`rar))él)Z69Z99)iÐ)Z00Z68z%yz1'y' test failed; passed in '%s' and returned '%s')r‰rr{Úintr3)rr ZcenturyZboundsÚboundrˆZexpected_resultrrrÚ test_year s    ÿÿzStrptimeTests.test_yearcCsdD]}| |d¡qdS)N)rOrNrUr*©r‰©rr rrrr,szStrptimeTests.test_monthcCs| dd¡dS)NrFr:rŽr rrrÚtest_dayszStrptimeTests.test_daycCsX| dd¡t d|j¡}t |d¡}| |d|jdkd||d|jdf¡dS)NrRr-ú%I %pz7testing of '%%I %%p' directive failed; '%s' -> %s != %s)r‰rrrrr{r3©rr‡rˆrrrÚ test_hour!s  ÿÿzStrptimeTests.test_hourcCs| dd¡dS)NrVrErŽr rrrÚ test_minute*szStrptimeTests.test_minutecCs| dd¡dS)NrXérŽr rrrÚ test_second.szStrptimeTests.test_secondc CsHddl}| ddddddd¡}tjt|ƒdd \}}}| ||j¡dS) NriÜr.éé"é8i‹4z%Y-%m-%d %H:%M:%S.%f)ru)ÚdatetimerÚstrrZ microsecond)rršrFÚtupZfracÚ_rrrÚ test_fraction2szStrptimeTests.test_fractioncCsdD]}| |d¡qdS)Nrxr$rŽrrrrr(9szStrptimeTests.test_weekdaycCs| dd¡dS)NrTérŽr rrrÚ test_julian>szStrptimeTests.test_juliancCs,d}d}d}t dd¡\^}}}}| |||¡| |d¡t dd¡\^}}}}| || ¡| |d¡t dd¡\^}}}}| |||| ¡| |d¡t d d¡\^}}}}| |||| ¡| |d ¡t d d¡\^}}}}| ||¡| |d¡t d d¡\^}}}}| ||| ¡| |d¡t d d¡\^}}}}| |||| ¡| |d¡t dd¡\^}}}}| |||| ¡| |d ¡t dd¡\^}}}}| ||||¡| |d¡t dd¡\^}}}}| |d¡| |d¡dS)Niiéz+0130ú%zrz-0100z-013030z-013030.000001rDz+01:00z-01:30z -01:30:30z-01:30:30.000001z +01:30:30.001ièrb)rr)rZone_hourZ half_hourZ half_minuterÚoffsetZoffset_fractionrrrÚ test_offsetBsB           zStrptimeTests.test_offsetcCs&| t¡t dd¡Wdƒn1s,0Y| t¡t dd¡Wdƒn1sb0Y| t¡t dd¡Wdƒn1s˜0Y| t¡t dd¡Wdƒn1sÎ0Y| t¡}t dd¡Wdƒn1s0Y| dt|jƒ¡dS)Nz -01:30:30.r¢z-0130:30z-01:30:30.1234567z-01:30:30:123456z-01:3030z!Inconsistent use of : in -01:3030)ryrzrrr›r€)rr~rrrÚtest_bad_offsetes * * * * ,zStrptimeTests.test_bad_offsetcCs¸t dd¡}| |jd¡t dd¡}| |jd¡t ¡}t d¡}t |d¡}t ¡}tjdtjdksttj s |  |d|dkd||d|df¡n|  |ddkd ¡dS) NÚUTCr2rÚGMTr*éz'timezone check failed; '%s' -> %s != %srDz]LocaleTime().timezone has duplicate values and time.daylight but timezone value not set to -1) rr{rÚtm_isdstrrrrÚtznameÚdaylightr3)rrˆrr‡rCrrrr5rs"    ÿÿÿzStrptimeTests.test_timezonec Csôtjd}| ¡dvr | d¡t td||f¡®t tdd¡€t tddd „¡N||ft_dt_t |d ¡d }|  |d d tj|tj|f¡Wdƒn1sª0YWdƒn1sÈ0YWdƒn1sæ0YdS)Nr)r¦r§zneed non-UTC/GMT timezonerªr«r*ÚtzsetcSsdSrrrrrrÚ’óz1StrptimeTests.test_bad_timezone..r2r¨rDz^%s lead to a timezone value of %s instead of -1 when time.daylight set to %s and passing in %s) rrªÚupperÚskipTestrZ swap_attrr«rr{r)rZtz_nameZtz_valuerrrÚtest_bad_timezone‰s     ÿþ þÿzStrptimeTests.test_bad_timezonecCstdƒD]}| d|¡qdS)Nr$rP©Úranger‰©rr0rrrr=›s zStrptimeTests.test_date_timecCs tddƒD]}| d|¡q dS)Nrr-r^r²r´rrrÚ test_date szStrptimeTests.test_datecCs tddƒD]}| d|¡q dS)Nr-r$r_r²r´rrrÚ test_time¥szStrptimeTests.test_timecCsJt d|j¡}t |d¡}| |d|jdko@|d|jdkd¡dS)Nz%m %% %Yrr*zhandling of percent sign failedr†r’rrrÚ test_percentªs  þzStrptimeTests.test_percentcCsZt d|j¡}| t | ¡d¡d¡| t | ¡d¡d¡| t | ¡d¡d¡dS)Nr)z0strptime does not handle ALL-CAPS names properlyz1strptime does not handle lowercase names properlyz/strptime does not handle capword names properly) rrrr3rr{r¯rÚ capitalize)rr‡rrrÚtest_caseinsensitive²sÿÿÿz"StrptimeTests.test_caseinsensitivecCs,d}t dd¡}| ||kd||f¡dS)N) rŠr*r*rrrrr*rDÚ1r„z5Default values for strptime() are incorrect; %s != %s)rr{r3)rÚdefaultsrˆrrrÚ test_defaults¼s  ÿÿzStrptimeTests.test_defaultscCsd}| t ||¡¡dS)Nz.^$*+?{}\[]|)()r3rr{)rZ need_escapingrrrÚ test_escapingÄszStrptimeTests.test_escapingcCst dd¡dS)NúFeb 29ú%b %d)rÚstrptimer rrrÚ$test_feb29_on_leap_year_without_yearÍsz2StrptimeTests.test_feb29_on_leap_year_without_yearcCs | t dd¡t dd¡¡dS)Nr¾r¿zMar 1)Z assertLessrrÀr rrrÚ7test_mar1_comes_after_feb29_even_when_omitting_the_yearÐs  þzEStrptimeTests.test_mar1_comes_after_feb29_even_when_omitting_the_yearN) rrrrrrrƒr…r‰rr,rr“r”r–ržr(r r¤r¥rr5r±r=rµr¶r·r¹r¼r½rÁrÂrrrrrqÊs:#    #    rqc@seZdZdZdd„ZdS)ÚStrptime12AMPMTestsz9Test a _strptime regression in '%I %p' at 12 noon (12 PM)cCsb|j}|t dd¡ddƒ|t dd¡ddƒ|t dd¡ddƒ|t dd¡ddƒdS)Nz12 PMr‘r-r.z12 AMr)rrrÀrr{)rÚeqrrrÚtest_twelve_noon_midnightØs z-Strptime12AMPMTests.test_twelve_noon_midnightN)rrrrrÅrrrrrÃÕsrÃc@seZdZdZdd„ZdS)Ú JulianTestsz@Test a _strptime regression that all julian (1-366) are acceptedcCs4|j}tddƒD]}|t d|d¡d|ƒqdS)Nr*ioz%d 2004z%j %YrŸ)rr³rr{)rrÄÚirrrÚtest_all_julian_daysãsz JulianTests.test_all_julian_daysN)rrrrrÈrrrrrÆàsrÆc@sxeZdZdZdd„Zedd„ƒZedd„ƒZedd „ƒZe j rHd Z d Z nd Z d Z e  ej d ¡d¡dd„ƒZdd„ZdS)ÚCalculationTestsz4Test that strptime() fills in missing info correctlycCst ¡|_dSrrrr rrrrìszCalculationTests.setUpcCsBd}t t ||j¡|¡}| |j|jjkd|j|jjf¡dS)Nz%Y %m %d %H %M %S %w %Zz'Calculation of tm_yday failed; %s != %s)rr{rrrr3Útm_yday©rÚ format_stringÚresultrrrÚtest_julian_calculationïsÿ ÿÿz(CalculationTests.test_julian_calculationc Csrd}t t ||j¡|¡}| |j|jjkoF|j|jjkoF|j|jjkd|j|j|j|jj|jj|jjf¡dS)Nz%Y %H %M %S %w %j %Zz:Calculation of Gregorian date failed; %s-%s-%s != %s-%s-%s) rr{rrrr3Útm_yearÚtm_monÚtm_mdayrËrrrÚtest_gregorian_calculationùsÿ ÿ   þþýz+CalculationTests.test_gregorian_calculationcCsBd}t t ||j¡|¡}| |j|jjkd|j|jjf¡dS)Nz%Y %m %d %H %S %j %Zz/Calculation of day of the week failed; %s != %s)rr{rrrr3Útm_wdayrËrrrÚtest_day_of_week_calculationsÿ ÿÿz-CalculationTests.test_day_of_week_calculation)©éqr*r*©érr.é©éØr.é©é}r.rÙ)rwrZaixzbpo-29972: broken test on AIXcs؇fdd„}|ddƒ|ddƒ|ddƒ|d d ƒ|d d ƒ|d dƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|dd ƒ|d!d"ƒ|d#d$ƒ|d%d&ƒ|d'd(ƒdS))Nc s¼dD]²}|ˆjvr"|ˆjvr"dSdD]Ž}|d|}ˆj|||d^t|Ž}| |¡}t ||¡}d||d| ¡df}ˆ |dd…||¡Wdƒq&1sª0Yq&qdS)N)z%Y %Wz%Y %Urw)z%wz%ur%r#ú )rruz %r: %s != %srŸr-) Ú_formats_excludedÚ _ymd_excludedZsubTestÚ datetime_daterrr{Z timetupler) Z ymd_tupleZ test_reasonZyear_week_formatZweekday_formatrÌZdt_dateZ strp_inputrˆÚmsgr rrÚ test_helper!s* ÿ þ ÿ þzSCalculationTests.test_week_of_year_and_day_of_week_calculation..test_helper)émr*r-zweek 0)rår*r¨z common case)rår*é z day on Sunday)rår*éz day on MondayrÕzJan 1 on Sunday)rØr*r*zJan 1 on Monday)rØr*rŸz)first Sunday in a year starting on Monday)rÖr.rÙzDec 31 on Sundayr×zDec 31 on MondayrÚz#Monday in the last week of the year)rÛr.r7z-Monday in the second-to-last week of the year)iºé ézrandomly chosen date)iÔr.ézEyear starting and ending on Monday while date not on Sunday or Monday)rÞr.r6zXyear starting and ending on Monday with a Monday not at the beginning or end of the yearrÝz8Dec 31 on Monday with year starting and ending on Monday)é×r*rŸzFirst Sunday of 2007)rër*rçzSecond Sunday of 2007)éÖr.rÙzLast Sunday of 2006)rìr.ézSecond to last Sunday of 2006r)rrärr rÚ-test_week_of_year_and_day_of_week_calculations*                    z>CalculationTests.test_week_of_year_and_day_of_week_calculationc sT‡fdd„}|ddddddddd d ƒ |dd d d ddddd dƒ |ddddddddddƒ |ddddddddddƒ |dd ddddddddƒ |ddddddddd dƒ |ddddddddd dƒ |dd ddddddd dƒ |ddddddddddƒ |ddddddddddƒ |dd ddddddddƒ |ddd d d ddddd ƒ |ddd d d ddddd ƒ |dd d d d ddddd ƒ |d dd d ddddddƒ |d!dd d ddddddƒ |d!d d d ddddddƒ |d"dd d ddddd#dƒ |d$dd d ddddd#dƒ |d$d d d ddddd#dƒ |d%dd d ddddd dƒ |d&dd'dddddd dƒ |d&d d(d ddddd dƒ |d)dd'dddddddƒ |d*dd'dddddddƒ |d*d d'dddddddƒ |d+dd'dddddd dƒ |d,dd'dddddd dƒ |d,d d'dddddd dƒ |d-dd'ddddddd.ƒ |d/dd'ddddddd.ƒ |d/d d'ddddddd.ƒ |d0dd(d d ddddd ƒ |d1dd(d d ddddd ƒ |d1d d(d d ddddd ƒ |d2dd(d ddddddƒ |d3dd(d ddddddƒ |d3d d(d ddddddƒ |d4dd(d ddddd#dƒ |d5dd(d ddddd#dƒ |d5d d(d ddddd#dƒ |d6dd(d ddddd dƒ dS)7Ncs ˆ t ||¡dd…|¡dS)NrD)rrr{)ÚvalueruZexpectedr rrÚcheckNsz+CalculationTests.test_week_0..checkz2015 0 0z%Y %U %wiÞr.érr$ijz%Y %W %wißr*rEz2015 1 1z%G %V %urÜikz2015 0 1z2015 1 2r¡ilz2015 0 2z2015 1 3rÙr:imz2015 0 3z2015 1 4r-z2015 0 4z2015 1 5z2015 0 5z2015 1 6r•z2015 0 6z2015 1 7z2009 0 0rÛiÙz2009 1 1z2009 0 1z2009 1 2z2009 0 2z2009 1 3inz2009 0 3z2009 1 4z2009 0 4z2009 1 5z2009 0 5z2009 1 6z2009 0 6z2009 1 7r)rrðrr rÚ test_week_0MsV zCalculationTests.test_week_0N)rrrrrrrÎrÒrÔrZ is_androidráràÚunittestZskipIfÚsysÚplatformÚ startswithrîròrrrrrÉés$   ÿ /rÉc@sBeZdZdZdd„Zdd„Zdd„Zdd „Ze  d ¡d d „ƒZ d S)Ú CacheTestsz!Test that caching works properly.cCsXt dd¡t dd¡dtjj_tj}t dd¡| |tj¡| ttjƒd¡dS)NÚ10rtrvz%YÚNir*) rr{Ú _TimeRE_cacherCr>Ú assertIsNotrÚlenÚ _regex_cache)rZoriginal_time_rerrrÚtest_time_re_recreation€s    z"CacheTests.test_time_re_recreationcCsjz tjd=WntyYn0d}ttjƒtjkrHdtj|<|d7}q$t dd¡| ttjƒd¡dS)Nrtrr*rø)rrýÚKeyErrorrüZ_CACHE_MAX_SIZEr{r)rZ bogus_keyrrrÚtest_regex_cleanup‹s     zCacheTests.test_regex_cleanupcCs2tjj}dtjj_t dd¡| |tjj¡dS)Nrùrørt)rrúrCr>r{rû)rZlocale_time_idrrrÚtest_new_localetime˜s  zCacheTests.test_new_localetimec CsÈt tj¡}zt tjd¡Wntjy<| d¡Yn0ztt dd¡tj}z0t tjd¡t dd¡tj}|  ||¡Wntjy | d¡Yn0Wt tj|¡nt tj|¡0dS)N)Úen_USÚUTF8ztest needs en_US.UTF8 localerørt)Úde_DErztest needs de_DE.UTF8 locale) r r r Ú setlocaleÚErrorr°rr{rúrû)rZ locale_infoÚ first_time_reÚsecond_time_rerrrÚtest_TimeRE_recreation_locale s    z(CacheTests.test_TimeRE_recreation_localezSTD-1DST,M4.1.0,M10.1.0cCs*tj}t tjdd¡}| |jd¡t tjdd¡}| |jd¡tj}dtjd<t  ¡t tjdd¡}| |jd¡t tjdd¡}| |jd¡tj}|  ||¡|  t ¡ t |dd¡Wdƒn1sà0Y|  t ¡ t |dd¡Wdƒn1s0YdS)Nrr2r*zEST+05EDT,M3.2.0,M11.1.0ZTZ) rrªrr{rr©rúÚosÚenvironr¬rûryrz)rZ oldtznameZtmrrrrrÚtest_TimeRE_recreation_timezone½s$   . z*CacheTests.test_TimeRE_recreation_timezoneN) rrrrrþrrr rZ run_with_tzr rrrrr÷}s  r÷Ú__main__)rrórr rhr rôÚtestrZ test.supportrršrrârZTestCaserrr@rqrÃrÆrÉr÷rÚmainrrrrÚs.   Z\   \