B
    u9aO'  ã               @   sb   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Zdd„ ZG dd„ dejƒZ	e
dkr^e ¡  dS )é    NaÈ  # coding: %s
a = 'x'
assert ord(a) == 120
b = '\x01'
assert ord(b) == 1
c = r'\x01'
assert list(map(ord, c)) == [92, 120, 48, 49]
d = '\x81'
assert ord(d) == 0x81
e = r'\x81'
assert list(map(ord, e)) == [92, 120, 56, 49]
f = '\u1881'
assert ord(f) == 0x1881
g = r'\u1881'
assert list(map(ord, g)) == [92, 117, 49, 56, 56, 49]
h = '\U0001d120'
assert ord(h) == 0x1d120
i = r'\U0001d120'
assert list(map(ord, i)) == [92, 85, 48, 48, 48, 49, 100, 49, 50, 48]
c             C   s
   t | gƒS )N)Úbytes)Úi© r   ú*/usr/lib/python3.7/test_string_literals.pyÚbyte<   s    r   c               @   s¦   e Z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d„ Zdd„ Zdd„ Zdd„ Zd)dd„Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(S )*ÚTestLiteralsc             C   s.   t jd d … | _t ¡ | _t j d| j¡ d S )Nr   )ÚsysÚpathÚ	save_pathÚtempfileZmkdtempÚtmpdirÚinsert)Úselfr   r   r   ÚsetUpB   s    
zTestLiterals.setUpc             C   s$   | j tjd d …< tj| jdd d S )NT)Úignore_errors)r
   r   r	   ÚshutilZrmtreer   )r   r   r   r   ÚtearDownG   s    zTestLiterals.tearDownc             C   s   xt D ]}qW d S )N)ÚTEMPLATE)r   Úcr   r   r   Útest_templateK   s    
zTestLiterals.test_templatec             C   s´   |   tdƒd¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ |   td	ƒtd
ƒ¡ |   tdƒtd
ƒ¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ d S )Nz 'x' Úxz '\x01' é   z '' z '\x81' é   u    'Â' z
 '\u1881' i  u    'á¢' z '\U0001d120' i Ñ u    'ð„ ' )ÚassertEqualÚevalÚchr)r   r   r   r   Útest_eval_str_normalQ   s    z!TestLiterals.test_eval_str_normalc             C   sÈ   |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd	¡ |   ttd
¡ |   ttd¡ |   ttd¡ |   ttd¡ |   ttd¡ d S )Nz '\x' z '\x0' z '\u' z '\u0' z '\u00' z	 '\u000' z '\U' z '\U0' z '\U00' z	 '\U000' z
 '\U0000' z '\U00000' z '\U000000' z '\U0000000' )ÚassertRaisesÚSyntaxErrorr   )r   r   r   r   Útest_eval_str_incomplete\   s    z%TestLiterals.test_eval_str_incompletec          
   C   s(  xNt ddƒD ]@}|dkrq|  t¡" |  td| ƒdt|ƒ ¡ W d Q R X qW tjdd}tjdtd	 td
ƒ W d Q R X |  t	|ƒd¡ |  |d j
d¡ |  |d jd¡ tjdd8}tjdtd	 |  t¡}td
ƒ W d Q R X |j}W d Q R X |  |g ¡ |  |j
d¡ |  |jd¡ d S )Nr   é€   s   
"'01234567NU\abfnrtuvxz'\%c'ú\T)ÚrecordÚalways)Úcategoryz	'''
\z'''r   z<string>é   Úerror)ÚrangeÚassertWarnsÚDeprecationWarningr   r   r   ÚwarningsÚcatch_warningsÚsimplefilterÚlenÚfilenameÚlinenor   r   Ú	exception)r   ÚbÚwÚcmÚexcr   r   r   Útest_eval_str_invalid_escapel   s&    *z)TestLiterals.test_eval_str_invalid_escapec             C   s¤   |   tdƒd¡ |   tdƒd¡ |   tdƒtdƒ¡ |   tdƒd¡ |   td	ƒtd
ƒ¡ |   tdƒd¡ |   tdƒtdƒ¡ |   tdƒd¡ |   tdƒtdƒ¡ d S )Nz r'x' r   z	 r'\x01' z\x01z r'' r   z	 r'\x81' z\x81u    r'Â' r   z r'\u1881' z\u1881u    r'á¢' i  z r'\U0001d120' z
\U0001d120u	    r'ð„ ' i Ñ )r   r   r   )r   r   r   r   Útest_eval_str_rawƒ   s    zTestLiterals.test_eval_str_rawc             C   sš   |   tdƒd¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ |   tdƒtdƒ¡ |  ttd¡ |   td	ƒd
¡ |  ttd¡ |   tdƒd¡ |  ttd¡ d S )Nz b'x' ó   xz	 b'\x01' r   z b'' z	 b'\x81' r   u    b'Â' z br'\u1881' s   \u1881u    b'á¢' z br'\U0001d120' s
   \U0001d120u	    b'ð„ ' )r   r   r   r   r   )r   r   r   r   Útest_eval_bytes_normalŽ   s    z#TestLiterals.test_eval_bytes_normalc             C   s    |   ttd¡ |   ttd¡ d S )Nz b'\x' z b'\x0' )r   r   r   )r   r   r   r   Útest_eval_bytes_incomplete™   s    z'TestLiterals.test_eval_bytes_incompletec          
   C   s*  xPt ddƒD ]B}|dkrq|  t¡$ |  td| ƒdt|gƒ ¡ W d Q R X qW tjdd}tjdtd	 td
ƒ W d Q R X |  t	|ƒd¡ |  |d j
d¡ |  |d jd¡ tjdd8}tjdtd	 |  t¡}td
ƒ W d Q R X |j}W d Q R X |  |g ¡ |  |j
d¡ |  |jd¡ d S )Nr   r    s   
"'01234567\abfnrtvxzb'\%c'ó   \T)r"   r#   )r$   z
b'''
\z'''r   z<string>r%   r&   )r'   r(   r)   r   r   r   r*   r+   r,   r-   r.   r/   r   r   r0   )r   r1   r2   r3   r4   r   r   r   Útest_eval_bytes_invalid_escape   s&    ,z+TestLiterals.test_eval_bytes_invalid_escapec             C   st  |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒtdƒ¡ |   td	ƒtdƒ¡ |   td
ƒd¡ |   tdƒd¡ |  ttd¡ |  ttd¡ |   tdƒd¡ |   tdƒd¡ |  ttd¡ |  ttd¡ |   tdƒd¡ |   tdƒd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd¡ d S )Nz br'x' r7   z rb'x' z
 br'\x01' s   \x01z
 rb'\x01' z br'' r   z rb'' z
 br'\x81' s   \x81z
 rb'\x81' u    br'Â' u    rb'Â' z br'\u1881' s   \u1881z rb'\u1881' u	    br'á¢' u	    rb'á¢' z br'\U0001d120' s
   \U0001d120z rb'\U0001d120' u
    br'ð„ ' u
    rb'ð„ ' z bb'' z rr'' z brr'' z bbr'' z rrb'' z rbb'' )r   r   r   r   r   )r   r   r   r   Útest_eval_bytes_raw´   s0    z TestLiterals.test_eval_bytes_rawc             C   sl   |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |  ttd¡ |  ttd¡ |  ttd¡ |  ttd	¡ d S )
Nz u'x' r   u    U'Ã¤' õ   Ã¤u    u'Ã¤' z ur'' z ru'' z bu'' z ub'' )r   r   r   r   )r   r   r   r   Útest_eval_str_uÎ   s    zTestLiterals.test_eval_str_uÚ c             C   sn   d|  dd¡ }tj | j|d ¡}t|d|d}z| t| ¡ | |¡ W d | ¡  X t	|ƒ t
j|= d S )NZxx_ú-Ú_z.pyr2   )Úencoding)ÚreplaceÚosr	   Újoinr   ÚopenÚwriter   ÚcloseÚ
__import__r   Úmodules)r   rB   ÚextraÚmodnameÚfnÚfr   r   r   Úcheck_encoding×   s    
zTestLiterals.check_encodingc             C   s   d}|   d|¡ d S )Nu#   z = 'áˆ´'; assert ord(z) == 0x1234
zutf-8)rO   )r   rK   r   r   r   Útest_file_utf_8ã   s    zTestLiterals.test_file_utf_8c             C   s   d}|   t| jd|¡ d S )Nu   b'Â€'
zutf-8)r   r   rO   )r   rK   r   r   r   Útest_file_utf_8_errorç   s    z"TestLiterals.test_file_utf_8_errorc             C   s   |   d¡ d S )Nzutf-8)rO   )r   r   r   r   Útest_file_utf8ë   s    zTestLiterals.test_file_utf8c             C   s   |   d¡ d S )Nz
iso-8859-1)rO   )r   r   r   r   Útest_file_iso_8859_1î   s    z!TestLiterals.test_file_iso_8859_1c             C   s   |   d¡ d S )Nzlatin-1)rO   )r   r   r   r   Útest_file_latin_1ñ   s    zTestLiterals.test_file_latin_1c             C   s   |   d¡ d S )NÚlatin9)rO   )r   r   r   r   Útest_file_latin9ô   s    zTestLiterals.test_file_latin9N)r?   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r5   r6   r8   r9   r;   r<   r>   rO   rP   rQ   rR   rS   rT   rV   r   r   r   r   r   @   s&   	
r   Ú__main__)rD   r   r   r   r*   Zunittestr   r   ZTestCaser   rW   Úmainr   r   r   r   Ú<module>   s    9