B
    u9aK                 @   s   d dl mZ d dlZd dlmZ d dlZd dlmZmZ dZ	de d e	 Z
dd	 ZG d
d deZdd Zdd Zdd Zdd Zdd ZG dd dejZedkre  dS )    )open_urlresourceN)HTTPException)	normalizeunidata_versionzNormalizationTest.txtz"http://www.pythontest.net/unicode//c             C   s   |   }t|kS )N)readliner   )ZtestfileZhdr r   (/usr/lib/python3.7/test_normalization.pycheck_version   s    r
   c               @   s   e Zd ZdS )
RangeErrorN)__name__
__module____qualname__r   r   r   r	   r      s   r   c             C   s
   t d| S )NNFC)r   )strr   r   r	   r      s    r   c             C   s
   t d| S )NNFKC)r   )r   r   r   r	   r      s    r   c             C   s
   t d| S )NNFD)r   )r   r   r   r	   r      s    r   c             C   s
   t d| S )NNFKD)r   )r   r   r   r	   r      s    r   c             C   sD   dd |  dD } x| D ]}|tjkrtqW ddd | D S )Nc             S   s   g | ]}t |d qS )   )int).0xr   r   r	   
<listcomp>   s    zunistr.<locals>.<listcomp>  c             S   s   g | ]}t |qS r   )chr)r   r   r   r   r	   r   #   s    )splitsys
maxunicoder   join)datar   r   r   r	   unistr   s
    

r!   c               @   s$   e Zd Zdd Zdd Zdd ZdS )NormalizationTestc          	   C   s~   yt tdtd}W nL tk
r8   | dt d Y n( ttfk
r^   | dt  Y nX | | | W d Q R X d S )Nzutf-8)encodingZcheckz"Permission error when downloading z into the test data directoryzCould not retrieve )	r   TESTDATAURLr
   PermissionErrorZskipTestOSErrorr   Zfailrun_normalization_tests)selftestdatar   r   r	   	test_main&   s    zNormalizationTest.test_mainc             C   s  d }i }xP|D ]F}d|kr,| dd }| }|s:q|drR|  d }qy*dd | dd d D \}}}}}	W nR tk
r   |dkryt| dd }W n tk
r   Y n
X d	||< wY nX | |t|  kot|  kot|kn  | | |t|  ko&t|	kn  | | |t|  ko`t|  ko`t|kn  | | |	t|  kot|	kn  | | |t|  kot|  kot|  kot|  kot|	kn  | | |	t	|  ko>t	|  ko>t	|  ko>t	|  ko>t	|	kn  | |dkrd	||< qW xxt
tjd	 D ]f}
t|
}||krql| |t|  kot|  kot|  kot	|kn  |
 qlW d S )
N#r   z@Partc             S   s   g | ]}t |qS r   )r!   )r   r   r   r   r	   r   B   s    z=NormalizationTest.run_normalization_tests.<locals>.<listcomp>;z@Part1   )r   strip
startswithr   r!   Z
assertTruer   r   r   r   ranger   r   r   )r(   r)   partZ
part1_datalineZc1Zc2Zc3Zc4Zc5cXr   r   r	   r'   4   sL    
*6*:*&.&.
z)NormalizationTest.run_normalization_testsc             C   s   t dd d S )Nr   u   한글)r   )r(   r   r   r	   test_bug_834676f   s    z!NormalizationTest.test_bug_834676N)r   r   r   r*   r'   r6   r   r   r   r	   r"   %   s   2r"   __main__)Ztest.supportr   ZunittestZhttp.clientr   r   Zunicodedatar   r   ZTESTDATAFILEr$   r
   	Exceptionr   r   r   r   r   r!   ZTestCaser"   r   mainr   r   r   r	   <module>   s    F