B
    2*™\“Ÿ  ã               @   sô  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZyd dlZW n ek
rˆ   dZY nX e d¡p–dZdde d > d Ze d d ZdZd	ZdZd
Zd
ZG dd„ dejƒZejejfejejfejejfejejffZG dd„ dejƒZ G dd„ dejƒZ!G dd„ dƒZ"G dd„ dƒZ#G dd„ dƒZ$G dd„ de"e$ejƒZ%G dd„ de#e$ejƒZ&G dd„ dejƒZ'e (edkd¡G dd„ dƒƒZ)G d d!„ d!e)ejƒZ*G d"d#„ d#e)ejƒZ+e,d$krðe -¡  dS )%é    )ÚsupportNÚ
SIZEOF_INTé   é   é   il  i@B iè  i Êš;c               @   s   e Zd ZdZdZdZdZdS )Ú_PyTimer   r   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚROUND_FLOORÚROUND_CEILINGÚROUND_HALF_EVENÚROUND_UP© r   r   ú9C:\ALexclude\prg\programme\Python37\Lib\test\test_time.pyr      s   r   c               @   sî  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Ze 	e
edƒd¡dd„ ƒZe 	e
edƒd¡e 	e
edƒd¡dd„ ƒƒZe 	e
edƒd¡e 	e
edƒd¡dd„ ƒƒZe 	e
edƒd¡dd„ ƒZe 	e
edƒd¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Ze 	e
ed9ƒd:¡d;d<„ ƒZd=d>„ Zd?d@„ Z dAdB„ Z!dCdD„ Z"dEdF„ Z#e 	e$ %¡ dG dHkdI¡dJdK„ ƒZ&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*e 	e
edƒdT¡dUdV„ ƒZ+dWdX„ Z,dYdZ„ Z-d[S )\ÚTimeTestCasec             C   s   t   ¡ | _d S )N)ÚtimeÚt)Úselfr   r   r   ÚsetUp4   s    zTimeTestCase.setUpc             C   s   t j t j t j t j d S )N)r   ÚaltzoneÚdaylightÚtimezoneÚtzname)r   r   r   r   Útest_data_attributes7   s    z!TimeTestCase.test_data_attributesc             C   s.   t   ¡  t  d¡}|  |j¡ |  |j¡ d S )Nr   )r   Úget_clock_infoÚassertFalseÚ	monotonicÚ
assertTrueÚ
adjustable)r   Úinfor   r   r   Ú	test_time=   s    
zTimeTestCase.test_timec                s˜   ‡ fdd„}|t   ¡ t  ¡ ƒ |t  ¡ t  ¡ ƒ |t  ¡ t  ¡ ƒ |t  ¡ t  ¡ ƒ tt dƒrp|t  	¡ t  
¡ ƒ tt dƒr”|t  t j¡t  t j¡ƒ d S )Nc                s2   ˆ   |t¡ t| d ƒ}ˆ  || d| |f¡ d S )Ng    eÍÍAl   @¥F )ÚassertIsInstanceÚintÚ
assertLess)ZsecÚnsZsec_ns)r   r   r   Úcheck_nsD   s    z0TimeTestCase.test_time_ns_type.<locals>.check_nsÚthread_timeÚclock_gettime)r   Ztime_nsr   Zmonotonic_nsÚperf_counterZperf_counter_nsÚprocess_timeZprocess_time_nsÚhasattrr)   Zthread_time_nsr*   ÚCLOCK_REALTIMEZclock_gettime_ns)r   r(   r   )r   r   Útest_time_ns_typeC   s    






zTimeTestCase.test_time_ns_typec          	   C   sZ   |   t¡ t ¡  W d Q R X |   t¡ t d¡}W d Q R X |  |j¡ |  |j¡ d S )NÚclock)	ÚassertWarnsÚDeprecationWarningr   r0   r   r    r   r   r!   )r   r"   r   r   r   Ú
test_clock\   s    zTimeTestCase.test_clockr*   zneed time.clock_gettime()c             C   s   t  t j¡}|  |t¡ d S )N)r   r*   r.   r$   Úfloat)r   r   r   r   r   Útest_clock_realtimee   s    z TimeTestCase.test_clock_realtimeÚCLOCK_MONOTONICzneed time.CLOCK_MONOTONICc             C   s(   t  t j¡}t  t j¡}|  ||¡ d S )N)r   r*   r6   ÚassertLessEqual)r   ÚaÚbr   r   r   Útest_clock_monotonick   s    z!TimeTestCase.test_clock_monotonicÚpthread_getcpuclockidz!need time.pthread_getcpuclockid()c             C   sR   t  t ¡ ¡}|  t|ƒtk¡ |  |t j¡ t  	|¡}t  	|¡}|  
||¡ d S )N)r   r;   Ú	threadingÚ	get_identr    Útyper%   ÚassertNotEqualZCLOCK_THREAD_CPUTIME_IDr*   r7   )r   Zclk_idÚt1Út2r   r   r   Útest_pthread_getcpuclockidt   s    

z'TimeTestCase.test_pthread_getcpuclockidÚclock_getreszneed time.clock_getres()c             C   s(   t  t j¡}|  |d¡ |  |d¡ d S )Ng        g      ð?)r   rC   r.   ÚassertGreaterr7   )r   Úresr   r   r   Útest_clock_getres€   s    zTimeTestCase.test_clock_getresÚclock_settimezneed time.clock_settime()c             C   sV   t  t j¡}yt  t j|¡ W n tk
r2   Y nX tt dƒrR|  tt jt jd¡ d S )Nr6   r   )	r   r*   r.   rG   ÚPermissionErrorr-   ÚassertRaisesÚOSErrorr6   )r   r   r   r   r   Útest_clock_settime‡   s    
zTimeTestCase.test_clock_settimec             C   sJ   |   t | j¡t t | j¡¡¡ |   tt t | j¡¡ƒt| jƒ¡ d S )N)ÚassertEqualr   Úctimer   ÚasctimeÚ	localtimer%   Úmktime)r   r   r   r   Útest_conversions”   s    zTimeTestCase.test_conversionsc             C   s.   |   ttjd¡ |   ttjd¡ t d¡ d S )Néþÿÿÿéÿÿÿÿg333333ó?)rI   Ú
ValueErrorr   Úsleep)r   r   r   r   Ú
test_sleepš   s    zTimeTestCase.test_sleepc          	   C   s~   t  | j¡}xHdD ]@}d| }yt  ||¡ W q tk
rP   |  d| ¡ Y qX qW |  tt jd|¡ |  tt jd|¡ d S )N)r8   ÚAr9   ÚBÚcÚdÚHÚIÚjÚmÚMÚpÚSÚUÚwÚWÚxÚXÚyÚYÚZú%z %z conversion specifier: %r failed.s   %Sz%S )r   Úgmtimer   ÚstrftimerT   ÚfailrI   Ú	TypeError)r   ÚttÚ	directiveÚformatr   r   r   Útest_strftimeŸ   s    
zTimeTestCase.test_strftimec             C   s  |dƒ |dƒ |   t|d¡ |   t|d¡ |dƒ |dƒ |   t|d¡ |   t|d¡ |d	ƒ |   t|d
¡ |   t|d¡ |dƒ |   t|d¡ |   t|d¡ |   t|d¡ |dƒ |dƒ |   t|d¡ |  |dƒ|dƒ¡ |   t|d¡ |dƒ |dƒ |   t|d¡ |   t|d¡ d S )N)	il  r   r   r   r   r   r   r   rS   )	il  é   r   r   r   r   r   r   rS   )	il  rS   r   r   r   r   r   r   rS   )	il  é   r   r   r   r   r   r   rS   )	il  r   r   r   r   r   r   r   rS   )	il  r   é   r   r   r   r   r   rS   )	il  r   rS   r   r   r   r   r   rS   )	il  r   é    r   r   r   r   r   rS   )	il  r   r   é   r   r   r   r   rS   )	il  r   r   rS   r   r   r   r   rS   )	il  r   r   é   r   r   r   r   rS   )	il  r   r   r   é;   r   r   r   rS   )	il  r   r   r   rS   r   r   r   rS   )	il  r   r   r   é<   r   r   r   rS   )	il  r   r   r   r   rS   r   r   rS   )	il  r   r   r   r   rz   r   r   rS   )	il  r   r   r   r   é=   r   r   rS   )	il  r   r   r   r   é>   r   r   rS   )	il  r   r   r   r   r   rS   r   rS   )	il  r   r   r   r   r   é   r   rS   )	il  r   r   r   r   r   rR   r   rS   )	il  r   r   r   r   r   r   r   rS   )	il  r   r   r   r   r   r   in  rS   )	il  r   r   r   r   r   r   rS   rS   )	il  r   r   r   r   r   r   io  rS   )rI   rT   rL   )r   Úfuncr   r   r   Ú_bounds_checking®   sL    

zTimeTestCase._bounds_checkingc             C   s   |   dd„ ¡ d S )Nc             S   s   t  d| ¡S )NÚ )r   rl   )Útupr   r   r   Ú<lambda>è   ó    z;TimeTestCase.test_strftime_bounding_check.<locals>.<lambda>)r   )r   r   r   r   Útest_strftime_bounding_checkç   s    z)TimeTestCase.test_strftime_bounding_checkc             C   s`   xZdD ]R}xLt ddƒD ]>}x8dD ]0}yt || | ¡ W q  tk
rN   Y q X q W qW qW d S )N)r€   rW   z%Az%AAr   é   )rj   zA%zAA%z%A%zA%A%z%#)Úranger   rl   rT   )r   re   rg   Úzr   r   r   Útest_strftime_format_checkê   s    

z'TimeTestCase.test_strftime_format_checkc          	   C   s4   d}t  ¡  t dd¡}W d Q R X |  ||¡ d S )Nz2000 01 01 00 00 00 1 001z%Y %m %d %H %M %S %w %j)	iÐ  r   r   r   r   r   r   r   r   )r   Zcheck_warningsr   rl   rL   )r   ÚexpectedÚresultr   r   r   Útest_default_values_for_zero÷   s    
z)TimeTestCase.test_default_values_for_zeroc          	   C   sj   t  | j¡}xXdD ]P}d| }t  ||¡}yt  ||¡ W q tk
r`   |  d||f ¡ Y qX qW d S )N)r8   rW   r9   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rj   z/conversion specifier %r failed with '%s' input.)r   rk   r   rl   ÚstrptimerT   rm   )r   ro   rp   rq   Zstrf_outputr   r   r   Útest_strptime  s    
zTimeTestCase.test_strptimec             C   s(   |   ttjdd¡ |   ttjdd¡ d S )Ns   2009z%YZ2009s   %Y)rI   rn   r   rŒ   )r   r   r   r   Útest_strptime_bytes  s    z TimeTestCase.test_strptime_bytesc          	   C   sh   |   t¡}t dd¡ W d Q R X |  |jjd¡ |   t¡}t dd¡ W d Q R X |  |jjd¡ d S )Nr€   z%DTZ19z%Y %)rI   rT   r   rŒ   ÚassertIsZ	exceptionÚ__suppress_context__)r   Úer   r   r   Útest_strptime_exception_context  s    z,TimeTestCase.test_strptime_exception_contextc             C   sÂ   t  t  | j¡¡ xFttfD ]:}t  |ddfd ¡}|  |tt|ƒƒ d … t|ƒ¡ qW |  	t
t jtd fd ¡ |  	t
t jtd fd ¡ |  	tt jd¡ |  	tt jd¡ |  	tt jd¡ d S )Nr}   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   rN   rk   r   ÚTIME_MAXYEARÚTIME_MINYEARrL   ÚlenÚstrrI   ÚOverflowErrorrn   )r   ZbigyearZascr   r   r   Útest_asctime  s    &

zTimeTestCase.test_asctimec             C   s   |   tj¡ d S )N)r   r   rN   )r   r   r   r   Útest_asctime_bounding_check.  s    z(TimeTestCase.test_asctime_bounding_checkc          
   C   sš   t  d¡}|  t  |¡d¡ t  d¡}|  t  |¡d¡ x\dD ]T}yt  |ddfd ¡}W n ttfk
rr   Y q>X |  t  |¡d	d … t|ƒ¡ q>W d S )
N)	iµ  é	   r…   r   r	   é4   r   r   rS   zSun Sep 16 01:03:52 1973)	iÐ  r   r   r   r   r   r   r   rS   zSat Jan  1 00:00:00 2000)iœÿÿÿéd   iè  iÐ  i  i'  r   é
   )r   r   r   r   r   r   é   )r   rP   rL   rM   rT   r—   r–   )r   r   ZyearZtestvalr   r   r   Ú
test_ctime1  s    


zTimeTestCase.test_ctimeÚtzsetz"time module has no attribute tzsetc          	   C   s  ddl m} d}d}d}d}| dd ¡}z¶||d< t ¡  ||d< t ¡  |  t |¡t |¡¡ |  tjd¡ |  tj	d¡ |  t |¡j
d¡ ||d< t ¡  |  t |¡t |¡¡ |  tjd¡ |  ttjƒd	¡ |  tjd
¡ |  tj	d¡ |  tjd¡ |  t |¡j
d¡ |  ttjƒd	¡ ||d< t ¡  |  t |¡t |¡¡ |  tjd dtjd ¡ |  tjd
 dkttjd
 ƒ¡ |  ttjƒd	¡ |  tjd
¡ |  tj	d¡ |  tjd¡ |  t |¡j
d
¡ W d |d k	rö||d< nd|kr|d= t ¡  X d S )Nr   )Úenvirong   €zÏAzEST+05EDT,M4.1.0,M10.5.0zAEST-10AEDT-11,M10.5.0,M3.5.0zUTC+0ZTZ)ZESTÚEDTr   r   iPF  i@8  ZAESTEST)ZAEDTr¢   i`sÿÿiPeÿÿ)Úosr¡   Úgetr   r    rL   rk   rO   r   r   Útm_isdstr?   r   r•   r   ZassertInr    r–   )r   r¡   Zxmas2002ZeasternZvictoriaZutcZorg_TZr   r   r   Ú
test_tzset@  sR     


zTimeTestCase.test_tzsetc             C   s:   x4t jt jt jfD ] }xdD ]}|  t||¡ qW qW d S )N)gZb××çtégZb××çti)r   rM   rk   rO   rI   r—   )r   r~   Zunreasonabler   r   r   Útest_insane_timestamps‹  s    
z#TimeTestCase.test_insane_timestampsc             C   s   t  ¡  t  d ¡ d S )N)r   rM   )r   r   r   r   Útest_ctime_without_arg”  s    z#TimeTestCase.test_ctime_without_argc             C   s:   t  ¡ }t  d ¡}t  |¡}t  |¡}| j||dd d S )Ngš™™™™™É?)Údelta)r   rk   rP   ÚassertAlmostEqual)r   Zgt0Zgt1Út0r@   r   r   r   Útest_gmtime_without_arg›  s
    


z$TimeTestCase.test_gmtime_without_argc             C   s:   t  ¡ }t  d ¡}t  |¡}t  |¡}| j||dd d S )Ngš™™™™™É?)r©   )r   rO   rP   rª   )r   Zlt0Zlt1r«   r@   r   r   r   Útest_localtime_without_arg¢  s
    


z'TimeTestCase.test_localtime_without_argc          
   C   sb   x\dD ]T}t j d¡r |dkr qyt |¡}W n ttfk
rF   Y qX |  t |¡|¡ qW d S )N)rR   rS   r   r   ZaixrS   )	ÚsysÚplatformÚ
startswithr   rO   r—   rJ   rL   rP   )r   r   ro   r   r   r   Útest_mktime©  s    
zTimeTestCase.test_mktimer   Zglibcz0disabled because of a bug in glibc. Issue #13309c             C   s`   t  | j¡}t  d|¡}|  |d¡ yt  d¡ W n tk
rF   Y nX |  t  d|¡|¡ d S )Nz%ZZLMT)	rS   r   r   r   r   r   rS   rS   rS   )r   rk   r   rl   r?   rP   r—   rL   )r   ro   r   r   r   r   Útest_mktime_error¼  s    zTimeTestCase.test_mktime_errorc             C   sº   dd„ t dƒD ƒ}|d }x*|dd … D ]}|  ||d| ¡ |}q(W t ¡ }t d¡ t ¡ }|| }|  ||¡ |  d|  koŠd	kn  |¡ t d
¡}|  |j¡ |  |j	¡ d S )Nc             S   s   g | ]}t  ¡ ‘qS r   )r   r   )Ú.0Únr   r   r   ú
<listcomp>Í  s    z/TimeTestCase.test_monotonic.<locals>.<listcomp>rœ   r   r   ztimes=%sg      à?gÍÌÌÌÌÌÜ?g      ð?r   )
r†   ÚassertGreaterEqualr   r   rU   rD   r    r   r   r!   )r   Útimesr@   rA   Zdtr"   r   r   r   Útest_monotonicË  s    
 
zTimeTestCase.test_monotonicc             C   s   t  ¡  d S )N)r   r+   )r   r   r   r   Útest_perf_counterá  s    zTimeTestCase.test_perf_counterc             C   sP   t  ¡ }t  d¡ t  ¡ }|  || d¡ t  d¡}|  |j¡ |  |j¡ d S )Ngš™™™™™¹?g{®Gáz”?r,   )	r   r,   rU   r&   r   r    r   r   r!   )r   ÚstartÚstopr"   r   r   r   Útest_process_timeä  s    

zTimeTestCase.test_process_timec             C   s„   t tdƒs4tj d¡r*|  dtjf ¡ n
|  d¡ t ¡ }t d¡ t ¡ }|  	|| d¡ t 
d¡}|  |j¡ |  |j¡ d S )Nr)   )ZlinuxÚwinz,time.thread_time() should be available on %rzneed time.thread_timegš™™™™™¹?g{®Gáz”?)r-   r   r®   r¯   r°   rm   ÚskipTestr)   rU   r&   r   r    r   r   r!   )r   rº   r»   r"   r   r   r   Útest_thread_timeñ  s    



zTimeTestCase.test_thread_timezneed time.clock_settimec          
   C   s~   t  ¡ }t  t j¡}yt  t j|d ¡ W n, tk
rV } z|  |¡ W d d }~X Y nX t  ¡ }t  t j|¡ |  ||¡ d S )Ni  )r   r   r*   r.   rG   rH   r¾   r¶   )r   r@   ZrealtimeÚerrrA   r   r   r   Útest_monotonic_settime  s    z#TimeTestCase.test_monotonic_settimec          	   C   s¶   d }xRdD ]J}yt  |¡ W q
 tk
r:   |  d¡ Y q
 tk
rR   |}P Y q
X q
W |d krj|  d¡ |  tt j|¡ |  tt j|¡ |  tt jtdƒ¡ |  tt jtdƒ¡ d S )N)rS   i   @l        l            zneed 64-bit time_tz&unable to find an invalid time_t valueÚnan)	r   rO   r—   r¾   rJ   rI   rM   rT   r4   )r   Zinvalid_time_tZtime_tr   r   r   Útest_localtime_failure  s    

z#TimeTestCase.test_localtime_failurec          
   C   sÆ   dddddg}x¢|D ]š}|dkrB|   t¡ t d¡}W d Q R X n
t |¡}|  |jt¡ |  |jd¡ |  |jt	¡ |  |j
t¡ |  |j
d¡ |  |j
d¡ |  |jt	¡ qW |  ttjd	¡ d S )
Nr0   r   r+   r,   r   r€   g        g      ð?Zxxx)r1   r2   r   r   r$   Úimplementationr–   r?   r   ÚboolZ
resolutionr4   rD   r7   r!   rI   rT   )r   ZclocksÚnamer"   r   r   r   Útest_get_clock_info)  s    

z TimeTestCase.test_get_clock_infoN).r
   r   r   r   r   r#   r/   r3   ÚunittestÚ
skipUnlessr-   r   r5   r:   rB   rF   rK   rQ   rV   rr   r   r„   rˆ   r‹   r   rŽ   r’   r˜   r™   rŸ   r¦   r§   r¨   r¬   r­   r±   r¯   Zlibc_verr²   r¸   r¹   r¼   r¿   rÁ   rÃ   rÇ   r   r   r   r   r   2   sb   		9

J	r   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestLocalec             C   s   t  t j¡| _d S )N)ÚlocaleÚ	setlocaleÚLC_ALLÚoldloc)r   r   r   r   r   A  s    zTestLocale.setUpc             C   s   t  t j| j¡ d S )N)rË   rÌ   rÍ   rÎ   )r   r   r   r   ÚtearDownD  s    zTestLocale.tearDownc             C   sD   yt  t jd¡}W n  t jk
r2   |  d¡ Y nX t dd¡ d S )NÚfr_FRz$could not set locale.LC_ALL to fr_FRz%B)	iÙ  r   r   r   r   r   r   r   r   )rË   rÌ   rÍ   ÚErrorr¾   r   rl   )r   Ztmpr   r   r   Útest_bug_3061G  s
    zTestLocale.test_bug_3061N)r
   r   r   r   rÏ   rÒ   r   r   r   r   rÊ   @  s   rÊ   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú_TestAsctimeYearz%dc             C   s   t  |fd ¡ ¡ d S )N)r   r   r   r   r   r   r   r   rS   )r   rN   Úsplit)r   rg   r   r   r   ÚyearstrS  s    z_TestAsctimeYear.yearstrc             C   s(   |   |  d¡d¡ |   |  d¡d¡ d S )Ni90  Ú12345iÍ[Ú	123456789)rL   rÕ   )r   r   r   r   Útest_large_yearV  s    z _TestAsctimeYear.test_large_yearN)r
   r   r   Ú_formatrÕ   rØ   r   r   r   r   rÓ   P  s   rÓ   c                   sl   e Zd Ze dd¡dkrdZndZdd„ Zdd	„ Zd
d„ Zedƒ‡ fdd„ƒZ	edƒ‡ fdd„ƒZ
[‡  ZS )Ú_TestStrftimeYearz%Y)	r   r   r   r   r   r   r   r   r   Z0001z%04dz%dc             C   s   t  d|fd ¡S )Nz%Y)r   r   r   r   r   r   r   r   )r   rl   )r   rg   r   r   r   rÕ   g  s    z_TestStrftimeYear.yearstrc             C   s0   | j dkr|  d¡ ndd„ }| jd|d d S )Nz%04dc             S   s   t  d| fd ¡S )Nz%4Y)r   r   r   r   r   r   r   r   )r   rl   )rg   r   r   r   Úyear4do  s    z-_TestStrftimeYear.test_4dyear.<locals>.year4d)r~   )rÙ   Ú	test_year)r   rÛ   r   r   r   Útest_4dyearj  s    
z_TestStrftimeYear.test_4dyearc             C   sD   d}yt  d| fd ¡ W n tk
r2   d}Y nX d}t ||¡S )Nz5strftime() is limited to [1; 9999] with Visual Studioz%Y)r   r   r   r   r   r   r   r   FT)r   rl   rT   rÈ   rÉ   )rg   ÚmsgZcondr   r   r   Úskip_if_not_supporteds  s    
z'_TestStrftimeYear.skip_if_not_supportedi'  c                s
   t ƒ  ¡ S )N)ÚsuperrØ   )r   )Ú	__class__r   r   rØ   ~  s    z!_TestStrftimeYear.test_large_yearr   c                s
   t ƒ  ¡ S )N)rà   Útest_negative)r   )rá   r   r   râ   ‚  s    z_TestStrftimeYear.test_negative)r
   r   r   r   rl   rÙ   rÕ   rÝ   rß   rØ   râ   Ú__classcell__r   r   )rá   r   rÚ   [  s   	rÚ   c               @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
Ú_Test4dYearz%dNc             C   s   |p| j }|p| j}|  |dƒ|d ¡ |  |dƒ|d ¡ |  |dƒ|d ¡ |  |dƒ|d ¡ |  |dƒ|d ¡ |  |dƒ|d ¡ d S )Nr   éD   éE   éc   iç  i'  )rÙ   rÕ   rL   )r   Zfmtr~   r   r   r   rÜ   Œ  s    

z_Test4dYear.test_yearc             C   sd   |   |  d¡ d¡d¡ |   |  d¡ d¡d¡ |   |  t¡ d¡ttƒ¡ |  t| jtd ¡ d S )Ni90  ú+rÖ   iÍ[r×   r   )rL   rÕ   Úlstripr“   r–   rI   r—   )r   r   r   r   rØ   –  s    z_Test4dYear.test_large_yearc          	   C   s¼   |   |  d¡| jd ¡ |   |  d¡d¡ |   |  d¡d¡ |   |  d¡tdƒ¡ |   |  d¡tdƒ¡ |   |  t¡ttƒ¡ |  t| jtd ¡ |  t¡ |  t d ¡ W d Q R X d S )	NrS   i.ûÿÿz-1234iÀþÿz-123456ië2¤øi.ýi¶r   )rL   rÕ   rÙ   r–   r”   rI   r—   r“   )r   r   r   r   râ   œ  s    z_Test4dYear.test_negative)NN)r
   r   r   rÙ   rÜ   rØ   râ   r   r   r   r   rä   ‰  s   

rä   c               @   s   e Zd ZdS )ÚTestAsctime4dyearN)r
   r   r   r   r   r   r   rê   ©  s   rê   c               @   s   e Zd ZdS )ÚTestStrftime4dyearN)r
   r   r   r   r   r   r   rë   ¬  s   rë   c               @   sZ   e Zd Ze ejdkd¡dd„ ƒZe ejdkd¡dd„ ƒZe ejdkd¡dd„ ƒZ	d	S )
Ú
TestPytimeé   zneeds tm_zone supportc             C   s0  t  ¡ }|  t|dƒ¡ |  t|dƒ¡ |jd krF|  tt dƒ ¡ n|  |jt jt jg|j  ¡ |j	d kr‚|  tt dƒ ¡ n|  |j	t j
|j ¡ t  |¡}t  |d d… ¡}|  ||¡ t  |¡}t  |¡}|  ||¡ |  |j|j¡ |  |j	|j	¡ |  ||¡ |  |j|j¡ |  |j	|j	¡ d S )NÚ	tm_gmtoffÚtm_zoner   r   rš   )r   rO   r    r-   rî   rL   r   r   r¥   rï   r   rP   )r   Últr   Zt9Znew_ltZnew_lt9r   r   r   Útest_localtime_timezone±  s(    


 
 
z"TestPytime.test_localtime_timezonec             C   s8   t  dd¡}|  |jd¡ t  dd¡}|  |jd¡ d S )NZUTCz%Zz+0500z%ziPF  )r   rŒ   rL   rï   rî   )r   r   r   r   r   Útest_strptime_timezoneÔ  s    z!TestPytime.test_strptime_timezonec             C   s6   dd l }d}| |¡}|  |jd ¡ |  |jd ¡ d S )Nr   sL   ctime
struct_time
p0
((I2007
I8
I11
I1
I24
I49
I5
I223
I1
tp1
(dp2
tp3
Rp4
.)ÚpickleÚloadsr   rî   rï   )r   ró   Ústrð   r   r   r   Útest_short_timesÛ  s
    
zTestPytime.test_short_timesN)
r
   r   r   rÈ   rÉ   r   Z_STRUCT_TM_ITEMSrñ   rò   rö   r   r   r   r   rì   °  s   #rì   zneed the _testcapi modulec               @   sN   e Zd ZdZdd„ Zdd„ Zdd„ Zddd	„Zddd„Zddd„Z	dd„ Z
dS )ÚCPyTimeTestCaseNc             C   s6   ddl m} |d d }d|  | _d| d | _d S )Nr   )ÚSIZEOF_TIME_Tr   r   r   )Ú	_testcapirø   Ú
time_t_minÚ
time_t_max)r   rø   Úbitsr   r   r   r   î  s    zCPyTimeTestCase.setUpc             C   s   | j |  ko| jkS   S )N)rú   rû   )r   Úsecondsr   r   r   Útime_t_filterô  s    zCPyTimeTestCase.time_t_filterc       
   
   C   s  dt ttg}|r| d¡ d}dg}x2|D ]*}x$|D ]}|| }| | |f¡ q4W q*W xDdD ]<}d| t }| | d | | d |d ||d f¡ q^W x"tjtjfD ]}	| |	t ¡ q¬W |rîx&dD ]}d|  }| | |f¡ qÌW d	t t }| | |f¡ |S )
Nr   gü©ñÒMbP?)r   r   é   é   é{   iÈ  iÒ  rš   rç   iç  i'  iŸ† i?B ió  iô  iõ  iÛ  iÜ  iÝ  iÄ	  i¬  i”  r   )	r   rÿ   r   é   é   rw   rx   é   é!   r   )r	   r   r   r  g       @l            )ÚUS_TO_NSÚMS_TO_NSÚ	SEC_TO_NSÚappendÚextendrù   ÚINT_MINÚINT_MAX)
r   Ú	use_floatZunitsÚvaluesÚns_timestampsZunitÚvaluer'   Zpow2rý   r   r   r   Ú_rounding_values÷  s.    





z CPyTimeTestCase._rounding_valuesc                s*  ‡ ‡‡fdd„}|   ˆ¡}||ƒ}x˜tD ]\}	}
t ¡ z}|
|_xl|D ]d}||
dœ}y|||	ƒ}||ƒ}W n0 tk
rš } z|  d| ¡ W d d }~X Y nX |  |||¡ qFW W d Q R X q(W | jt	 }| |f}||ƒ}xLtD ]D\}	}x:|D ]2}||	dœ}| j
t|d |||	ƒ W d Q R X qìW qÞW d S )Nc                sX   ˆr$t tˆƒ ‰ ‡ fdd„| D ƒ}nt ˆ ‰ ‡ fdd„| D ƒ}ˆrLtˆ|ƒ}tt|ƒƒS )Nc                s   g | ]}|ˆ  ‘qS r   r   )r³   r'   )Ú
unit_to_nsr   r   rµ   0  s    zKCPyTimeTestCase._check_rounding.<locals>.convert_values.<locals>.<listcomp>c                s   g | ]}|ˆ  ‘qS r   r   )r³   r'   )r  r   r   rµ   3  s    )r  r4   ÚfilterÚsortedÚset)r  r  )Úunit_to_secr  Úvalue_filter)r  r   Úconvert_values-  s    
z7CPyTimeTestCase._check_rounding.<locals>.convert_values)r  Úroundingz!Error on timestamp conversion: %s)rÞ   )r  ÚROUNDING_MODESÚdecimalZlocalcontextr  Ú	Exceptionrm   rL   ÚOVERFLOW_SECONDSr  rI   r—   )r   Úpytime_converterÚexpected_funcr  r  r  r  r  Zvalid_valuesÚtime_rndZdecimal_rndÚcontextr  Z
debug_inforŠ   r‰   Úexcr'   Zoverflow_valuesÚ_r   )r  r  r  r   Ú_check_rounding*  s0    




 



zCPyTimeTestCase._check_roundingr   c             C   s   |   ||d||¡ d S )NF)r$  )r   r  r  r  r  r   r   r   Úcheck_int_roundingW  s    z"CPyTimeTestCase.check_int_roundingc             C   s   |   ||d||¡ d S )NT)r$  )r   r  r  r  r  r   r   r   Úcheck_float_rounding\  s    z$CPyTimeTestCase.check_float_roundingc             C   s   t  |¡}| d¡}t|ƒS )Nr   )r  ÚDecimalZquantizer%   )r   re   rZ   r   r   r   Údecimal_rounda  s    

zCPyTimeTestCase.decimal_round)N)r   N)r   N)r
   r   r   r  r   rþ   r  r$  r%  r&  r(  r   r   r   r   r÷   ç  s   4
-

r÷   c               @   sl   e Zd Ze de ¡Zdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ Ze eedƒd¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestCPyTimel           c          
      sh   ddl m‰  dd„ }| j‡ fdd„dd„ |d x2tD ]*\}}|  t¡ ˆ td	ƒƒ W d Q R X q6W d S )
Nr   )ÚPyTime_FromSecondsc             S   s   t j|   kot jkS   S )N)rù   r  r  )Úsecsr   r   r   Úc_int_filterr  s    z2TestCPyTime.test_FromSeconds.<locals>.c_int_filterc                s   ˆ | ƒS )Nr   )r+  Úrnd)r*  r   r   r‚   u  rƒ   z.TestCPyTime.test_FromSeconds.<locals>.<lambda>c             S   s   | t  S )N)r  )r+  r   r   r   r‚   v  rƒ   )r  rÂ   )rù   r*  r%  r  rI   rn   r4   )r   r,  r   r#  r   )r*  r   Útest_FromSecondsn  s    zTestCPyTime.test_FromSecondsc          
      sj   ddl m} ˆ  |dd„ ¡ ˆ  |‡ fdd„¡ x4tD ],\}}ˆ  t¡ |tdƒ|ƒ W d Q R X q6W d S )Nr   )ÚPyTime_FromSecondsObjectc             S   s   | t  S )N)r  )r+  r   r   r   r‚   ƒ  rƒ   z4TestCPyTime.test_FromSecondsObject.<locals>.<lambda>c                s   ˆ   | t ¡S )N)r(  r  )r'   )r   r   r   r‚   ‡  rƒ   rÂ   )rù   r/  r%  r&  r  rI   rT   r4   )r   r/  r   r#  r   )r   r   Útest_FromSecondsObject~  s    
z"TestCPyTime.test_FromSecondsObjectc          
      sb   ddl m‰  dd„ }|  ‡ fdd„|t¡ x2tD ]*\}}|  t¡ ˆ tdƒƒ W d Q R X q0W d S )Nr   )ÚPyTime_AsSecondsDoublec             S   s,   t | ƒt dkrt| t ƒS t| ƒt S d S )Nr   )Úabsr  r4   )r'   r   r   r   Úfloat_converter‘  s    z9TestCPyTime.test_AsSecondsDouble.<locals>.float_converterc                s   ˆ | ƒS )Nr   )r'   r-  )r1  r   r   r‚   —  rƒ   z2TestCPyTime.test_AsSecondsDouble.<locals>.<lambda>rÂ   )rù   r1  r%  Ú	NS_TO_SECr  rI   rn   r4   )r   r3  r   r#  r   )r1  r   Útest_AsSecondsDoubleŽ  s    z TestCPyTime.test_AsSecondsDoublec                s   t  |¡‰ ‡ ‡fdd„}|S )Nc                s   t  | ¡ˆ  }ˆ |¡S )N)r  r'  r(  )r  rZ   )Údenomr   r   r   Ú	converter£  s    z7TestCPyTime.create_decimal_converter.<locals>.converter)r  r'  )r   Údenominatorr7  r   )r6  r   r   Úcreate_decimal_converter   s    
z$TestCPyTime.create_decimal_converterc                sh   ddl m} |  t¡‰‡fdd„}tjdkrLddl m‰m‰  ‡ ‡fdd„}n| j}| j	||t
|d	 d S )
Nr   )ÚPyTime_AsTimevalc                s   ˆ | ƒ}t |tƒS )N)ÚdivmodÚ	SEC_TO_US)r'   Úus)Úus_converterr   r   Útimeval_converter®  s    z5TestCPyTime.test_AsTimeval.<locals>.timeval_converterÚwin32)ÚLONG_MINÚLONG_MAXc                s   ˆ|   koˆ kS   S )Nr   )r+  )rB  rA  r   r   Úseconds_filter¶  s    z2TestCPyTime.test_AsTimeval.<locals>.seconds_filter)r  )rù   r:  r9  r  r®   r¯   rA  rB  rþ   r%  r4  )r   r:  r?  rC  r   )rB  rA  r>  r   Útest_AsTimeval©  s    

zTestCPyTime.test_AsTimevalÚPyTime_AsTimespecz need _testcapi.PyTime_AsTimespecc                s4   ddl m‰  dd„ }| j‡ fdd„|t| jd d S )Nr   )rE  c             S   s
   t | tƒS )N)r;  r  )r'   r   r   r   Útimespec_converterÅ  s    z7TestCPyTime.test_AsTimespec.<locals>.timespec_converterc                s   ˆ | ƒS )Nr   )r'   r-  )rE  r   r   r‚   È  rƒ   z-TestCPyTime.test_AsTimespec.<locals>.<lambda>)r  )rù   rE  r%  r4  rþ   )r   rF  r   )rE  r   Útest_AsTimespecÀ  s    zTestCPyTime.test_AsTimespecc             C   s$   ddl m} |  ||  t¡t¡ d S )Nr   )ÚPyTime_AsMilliseconds)rù   rH  r%  r9  r  r4  )r   rH  r   r   r   Útest_AsMillisecondsÍ  s    zTestCPyTime.test_AsMillisecondsc             C   s$   ddl m} |  ||  t¡t¡ d S )Nr   )ÚPyTime_AsMicroseconds)rù   rJ  r%  r9  r  r4  )r   rJ  r   r   r   Útest_AsMicrosecondsÔ  s    zTestCPyTime.test_AsMicrosecondsN)r
   r   r   ÚmathZceilr  r  r.  r0  r5  r9  rD  rÈ   rÉ   r-   rù   rG  rI  rK  r   r   r   r   r)  g  s   	r)  c               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestOldPyTimel            c             C   s:   ddl m} | j|dd„ | jd | j|| j| jd d S )Nr   )Úpytime_object_to_time_tc             S   s   | S )Nr   )r+  r   r   r   r‚   è  rƒ   z5TestOldPyTime.test_object_to_time_t.<locals>.<lambda>)r  )rù   rN  r%  rþ   r&  r(  )r   rN  r   r   r   Útest_object_to_time_tä  s    
z#TestOldPyTime.test_object_to_time_tc                s   ‡ ‡fdd„}|S )Nc                sb   t  | ¡\}}t|ƒ}|ˆ 9 }ˆ |¡}|dk rB|ˆ 7 }|d8 }n|ˆ krZ|ˆ 8 }|d7 }||fS )Nr   r   )rL  Zmodfr%   r(  )r+  Z	floatpartZintpart)Úsec_to_unitr   r   r   r7  ð  s    

z1TestOldPyTime.create_converter.<locals>.converterr   )r   rP  r7  r   )rP  r   r   Úcreate_converterï  s    zTestOldPyTime.create_converterc          
   C   st   ddl m} | j|dd„ | jd | j||  t¡| jd x4tD ],\}}|  t	¡ |t
dƒ|ƒ W d Q R X q@W d S )Nr   )Úpytime_object_to_timevalc             S   s   | dfS )Nr   r   )r+  r   r   r   r‚     rƒ   z6TestOldPyTime.test_object_to_timeval.<locals>.<lambda>)r  rÂ   )rù   rR  r%  rþ   r&  rQ  r<  r  rI   rT   r4   )r   rR  r   r#  r   r   r   Útest_object_to_timevalþ  s    

z$TestOldPyTime.test_object_to_timevalc          
   C   st   ddl m} | j|dd„ | jd | j||  t¡| jd x4tD ],\}}|  t	¡ |t
dƒ|ƒ W d Q R X q@W d S )Nr   )Úpytime_object_to_timespecc             S   s   | dfS )Nr   r   )r+  r   r   r   r‚     rƒ   z7TestOldPyTime.test_object_to_timespec.<locals>.<lambda>)r  rÂ   )rù   rT  r%  rþ   r&  rQ  r  r  rI   rT   r4   )r   rT  r   r#  r   r   r   Útest_object_to_timespec  s    

z%TestOldPyTime.test_object_to_timespecN)r
   r   r   r  rO  rQ  rS  rU  r   r   r   r   rM  Ü  s
   rM  Ú__main__).Ztestr   r  ÚenumrË   rL  r¯   r®   Z	sysconfigr   r<   rÈ   Úwarningsrù   ÚImportErrorZget_config_varr   r“   r”   r<  r  r  r  r4  ÚIntEnumr   r   r   r   r   r  ZTestCaser   rÊ   rÓ   rÚ   rä   rê   rë   rì   ZskipIfr÷   r)  rM  r
   Úmainr   r   r   r   Ú<module>   s\   



    . 7 uC
