a
    ze,                     @   s|   d dl Z d dlZd dlZd dlmZ d dlZd dlZdd Zdd ZG dd dej	Z
G d	d
 d
ej	Zedkrxe  dS )    N)supportc                 C   s,   | d dkr(| d d d | dd   } | S )N    0	    )sr   r   (/usr/lib/python3.9/test/test_strftime.py
fixasctime   s    r
   c                 C   sD   t | }|t ||}|dd}|dd}|dd}|S )Nz\%%z\::z\??)reescapereplace)textampmZnew_textr   r   r	   	escapestr   s    
r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )StrftimeTestc                 C   s   t || _t |}|d dk r*d| _nd| _t t |d ddddddddf	| _z&|d rpt jd | _nt jd | _W n t	y   d| _Y n0 |d dkr|d d | _
n|d dkr|d | _
nd| _
|| _d S )	N      z(AM|am)z(PM|pm)r      r    )timegmtimeZgmt	localtimer   mktimejan1tznametzAttributeErrorclock12now)selfr"   r   r   r	   _update_variables"   s    
(zStrftimeTest._update_variablesc                 C   sh   z dd l }|jj|jjj W nB tyb   ddlm}m} ||}||d | 	||| Y n0 d S )Nr   )	setlocaleLC_TIMEC)
javautilZLocaleZ
setDefaultZUSImportErrorlocaler%   r&   Z
addCleanup)r#   r(   r%   r&   Zsaved_localer   r   r	   setUp8   s    
zStrftimeTest.setUpc                 C   s   t   }| | | | | | tjrHtdtjtj	
 d f  tddD ]H}tdD ]:}|||d  d d  }| | | | | | q^qRd S )	Nz/Strftime test, platform: %s, Python version: %sr         d      i  )r   r$   	strftest1	strftest2r   verboseprintsysplatformversionsplitrange)r#   r"   jiargr   r   r	   test_strftimeB   s    




zStrftimeTest.test_strftimec                 C   sR  t jrtdt| | j}dtj|d  dfdtj|d  dfdtj	|d  d	fd
tj
|d  dfdd|d  dfdd|d  dfdd| j dfdd|d  dfdd|d  dfdd|d  dfd| jdfd d|d!  d"fd#d|d | jd  d  d$fd%d&d|d  d  d'fd(d|d | jd d d  d  d)fd*d+|d |d |d! f d,fd-d|d. d/  d0fd1d|d.  d2fd3f}|D ]}zt|d. |}W n< ty } z"| d4|d. |f  W Y d }~n
d }~0 0 tt|d | j|rq|r|d. d5kr(| d6|d. |d f  n"| d7|d. |d |d |f  qd S )8Nzstrftime test forz%a   zabbreviated weekday namez%Azfull weekday namez%br   abbreviated month namez%Bzfull month namez%dz%02d   zday of month as number (00-31)z%Hr   zhour (00-23)z%Izhour (01-12)z%j%03d   zjulian day (001-366)z%mzmonth as number (01-12)z%M   zminute, (00-59)z%pzAM or PM as appropriatez%Sr.   zseconds of current time (00-60)z%Uz!week number of the year (Sun 1st)z%wz0?%dzweekday as a number (Sun 1st)z%Wz!week number of the year (Mon 1st)z%X%02d:%02d:%02d%H:%M:%S%yr   r0   zyear without centuryz%Yzyear with century)z%%r   zsingle percent signz#strftime '%s' format gave error: %sr   z3strftime does not support standard '%s' format (%s)z-Conflict for %s (%s): expected %s, but got %s)r   r4   r5   r   ctimer"   calendarZday_abbrZday_name
month_abbrZ
month_namer!   r   r   strftime
ValueErrorZfailr   matchr   )r#   r"   Zexpectationseresulterrorr   r   r	   r2   S   sR    
",zStrftimeTest.strftest1c                 C   sV  t t|d d }| j}dtt|dfdd|d |d |d d	 f d
fdd| j dfdd|d |d |d d	 f dfdd|d  dfdtj|d  dfdd|d  dfddd| j	|d |d | j
f dfdd|d |d f d fd|d!fd"d#d$|d |d |d f d%fd&d'|d d	  d(ff}|D ] }zt|d |}W n^ ty } zDd)|d |d t |f }tjrt| W Y d }~q.W Y d }~n
d }~0 0 tt|d | j
|rtjrNtd*|d |d f  nj|r|d d+krtjrNtd,|d |d f  n4tjr.td-|d |d f  td.|d |f  q.d S )/Nz%cznear-asctime() formatz%xz%02d/%02d/%02dr   rA   r   r0   z%m/%d/%y %H:%M:%Sz%Zz%sztime zone namez%Dzmm/dd/yyz%ez%2dz,day of month as number, blank padded ( 0-31)z%hr@   z%kr   zhour, blank padded ( 0-23))z%n
znewline characterz%rz%02d:%02d:%02d %srD   r.   z%I:%M:%S %pz%Rz	%02d:%02dz%H:%Mzseconds since the Epoch in UCT)z%t	ztab characterz%TrE   rF   z%3yrB   z.year without century rendered using fieldwidthz*Error for nonstandard '%s' format (%s): %sz%Supports nonstandard '%s' format (%s)r   z+Does not appear to support '%s' format (%s)z*Conflict for nonstandard '%s' format (%s):z  Expected %s, but got %s)strintr"   r
   r   asctimer   rI   rJ   r!   r   rK   rL   r   r4   r5   r   rM   r   )r#   r"   ZnowsecsZnonstandard_expectationsrN   rO   msgr   r   r	   r3      s\    "
$zStrftimeTest.strftest2N)__name__
__module____qualname__r$   r,   r>   r2   r3   r   r   r   r	   r       s
   
0r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
Y1900Testsc                 C   sj   d}t jdkst jdrR| t td| W d    qf1 sF0    Y  n| td|d d S )N)	ik  r   r   r   r   r   r   r   r   win32)ZaixZsunosZsolarisrG   Z99)r6   r7   
startswithZassertRaisesrL   r   rK   assertEqual)r#   tr   r   r	   test_y_before_1900   s    

,zY1900Tests.test_y_before_1900c                 C   s   |  tddd d S )NrG   )	il  r   r   r   r   r   r   r   r   Z00r^   r   rK   r#   r   r   r	   test_y_1900   s    zY1900Tests.test_y_1900c                 C   s   |  tddd d S )NrG   )	i  r   r   r   r   r   r   r   r   Z13ra   rb   r   r   r	   test_y_after_1900   s    zY1900Tests.test_y_after_1900N)rX   rY   rZ   r`   rc   rd   r   r   r   r	   r[      s   
r[   __main__)rI   r6   r   testr   r   Zunittestr
   r   ZTestCaser   r[   rX   mainr   r   r   r	   <module>   s    