o
    HXh,                     @   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r?e  dS dS )    N)supportc                 C   s,   | d dkr| d d d | dd   } | S )N    0	    )sr   r   </opt/python-3.10.19/usr/lib/python3.10/test/test_strftime.py
fixasctime   s   r
   c                 C   sF   	 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 r8t jd | _nt jd | _W n t	yK   d| _Y nw |d dkrZ|d d | _
n|d dkrf|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 d S  ty3   ddlm}m} ||}||d | 	||| Y d S w )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r$tdtjtj	
 d f  tddD ]$}tdD ]}|||d  d d  }| | | | | | q/q)d 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   sJ  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 }~ww tt|d | j|rq|r|d. d5kr| d6|d. |d f  q| 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   sX   
""zStrftimeTest.strftest1c                 C   s6  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 } zd)|d |d t |f }tjrt| W Y d }~qd }~ww tt|d | j
|rtjrtd*|d |d f  q|r|d d+krtjrtd,|d |d f  qtjrtd-|d |d f  td.|d |f  qd 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      sh   "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   sn   d}t jdkst jdr+| t td| W d    d S 1 s$w   Y  d S | 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      |  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      zY1900Tests.test_y_1900c                 C   ra   )NrG   )	i  r   r   r   r   r   r   r   r   Z13rb   rc   r   r   r	   test_y_after_1900   re   zY1900Tests.test_y_after_1900N)rX   rY   rZ   r`   rd   rf   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     