
    n                          d Z ddlZddlZddlZddlZ ej                  d      Z ej                  d      Zg dZ	d Z
d Z G d d	ej                        Zd
 Zy)zTests for TR46 code.    Nz\\u([0-9a-fA-F]{4})u   [-][-])`u
   𐋷。‍u   𝟵隁⯮．᠍‌u   9隁⯮.᠍‌u   ß‌꫶ᢥ.⊶ⴡⴖu   ss‌꫶ᢥ.⊶ⴡⴖu   ß‌꫶ᢥ．⊶ⴡⴖu   ss‌꫶ᢥ．⊶ⴡⴖu   𐩗‍。ⴉⴕu   𐩗‍｡ⴉⴕu   𝟏𝨙⸖.‍u   1𝨙⸖.‍u   𝟠4󠇗𝈻．‍𐋵⛧‍u   84󠇗𝈻.‍𐋵⛧‍   ¡zxn--7au   ᧚zxn--pkfu   ☕zxn--53hu   𞤷.𐮐𞢁𐹠ؤu   𞤷.𐮐𞢁𐹠ؤu   𞤕.𐮐𞢁𐹠ؤu   𞤕.𐮐𞢁𐹠ؤzxn--ve6h.xn--jgb1694kz0b2176au   ß。𐋳ⴌྸu   ss。𐋳ⴌྸzss.xn--lgd921mvv0mu   ss.𐋳ⴌྸzxn--zca.xn--lgd921mvv0mu   ß.𐋳ⴌྸu   ß｡𐋳ⴌྸu   ss｡𐋳ⴌྸu   ᚭ｡𝌠ß𖫱u   ᚭ。𝌠ß𖫱u   ᚭ。𝌠SS𖫱u   ᚭ。𝌠ss𖫱u   ᚭ。𝌠Ss𖫱zxn--hwe.xn--ss-ci1ub261au   ᚭ.𝌠ss𖫱u   ᚭ.𝌠SS𖫱u   ᚭ.𝌠Ss𖫱zxn--hwe.xn--zca4946pblncu   ᚭ.𝌠ß𖫱u   ᚭ｡𝌠SS𖫱u   ᚭ｡𝌠ss𖫱u   ᚭ｡𝌠Ss𖫱u   ⴚ𐋸󠄄。5ퟶ်zxn--ilj2659d.xn--5-dug9054mu   ⴚ𐋸.5ퟶ်u   ⴚ𐋸󠄄。𝟝ퟶ်zxn--9-mfs8024b.u   9隁⯮.zxn--ss-4epx629f.xn--ifh802b6au   ss꫶ᢥ.⊶ⴡⴖzxn--pt9c.xn--0kjyau   𐩗.ⴉⴕu   ꗷ𑆀.ݝ𐩒zxn--ju8a625r.xn--hpb0073ku   ς.فمي🞛1.u   Σ.فمي🞛1.u   σ.فمي🞛1.zxn--4xa.xn--1-gocmu97674d.zxn--3xa.xn--1-gocmu97674d.zxn--1-5bt6845n.u	   1𝨙⸖.zxn--84-s850a.xn--59h6326eu   84𝈻.𐋵⛧z	xn--r97c.u   𐋷.u   0à.אu   0à.אu   0À.אu   0À.אzxn--0-sfa.xn--4dbu   àˇ.אu   àˇ.אu   Àˇ.אu   Àˇ.אzxn--0ca88g.xn--4dbu   0A.אu   0a.אz
0a.xn--4dbzc.xn--0-eha.xn--4dbu   c.0ü.אu	   c.0ü.אu	   C.0Ü.אu   C.0Ü.אu   C.0ü.אu	   C.0ü.אu   ڶ۟。₇꠆u   ڶ۟。7꠆zxn--pkb6f.xn--7-x93eu	   ڶ۟.7꠆u   1.걾6.𐱁ېu   1.걾6.𐱁ېz1.xn--6-945e.xn--glb1794kc                 Z    t         j                  d t        j                  d |             S )z=Replace backslash-u-XXXX with appropriate unicode characters.c                     t        t        | j                  d      d         dz
  dz  t        | j                  d      d         z   dz
  dz         S )Nr   i   i      i   i   )chrordgroupmatchs    9platform/gsutil/third_party/idna/tests/test_idna_uts46.py<lambda>zunicode_fixup.<locals>.<lambda>x   sJ    c3u{{1~a01F:eCc%++VW.YZJ[F\\_eehoop    c                 J    t        t        | j                  d      d            S )Nr      )r   intr	   r
   s    r   r   zunicode_fixup.<locals>.<lambda>y   s    c#ekk!nb*A&Br   )_RE_SURROGATEsub_RE_UNICODE)strings    r   unicode_fixupr   u   s'    pBFK r   c              #      K   t        |       D ]h  \  }}|j                  d      j                         }d|v r|j                  dd      d   }|sA|dz   t	        d |j                  d      D              f j yw)z1Parse IdnaTestV2.txt and return a list of tuples.zutf-8#r   r   c              3   <   K   | ]  }|j                           y wN)strip).0fields     r   	<genexpr>z(parse_idna_test_table.<locals>.<genexpr>   s     !M_E%++-_s   ;N)	enumeratedecoder   splittuple)inputstreamlinenolines      r   parse_idna_test_tabler'   }   st     !+.{{7#))+$;::c1%a(D
E!MTZZ_!MMNO /s   A8A:c                   :     e Zd ZdZd fd	Z fdZd Zd Z xZS )TestIdnaTestz)Run one of the IdnaTestV2.txt test lines.c                 >    t         |           || _        || _        y r   )super__init__r%   fields)selfr%   r-   	__class__s      r   r,   zTestIdnaTest.__init__   s    r   c                 T    dj                  t        | 	         | j                        S )Nz{}.{})formatr+   idr%   )r.   r/   s    r   r2   zTestIdnaTest.id   s    ~~egjlDKK88r   c                     | j                   sydj                  | j                  dj                  | j                               S )N zIdnaTestV2.txt line {}: {}z; )r-   r1   r%   join)r.   s    r   shortDescriptionzTestIdnaTest.shortDescription   s0    {{+224;;		$++@VWWr   c                 ,   | j                   sy | j                   \  }}}}}}}|t        v ry |s|}|sd}|s|}|s|}|s|}|s|}	 t        j                  |dd      }|dk7  r*| j	                  dj                  |t        |                   | j                  ||d       	 t        j                  |dd      j                  d      }|dk7  r*| j	                  d	j                  |t        |                   | j                  ||d
       	 t        j                  |ddd      j                  d      }|dk7  r*| j	                  dj                  |t        |                   | j                  ||d
       y # t        j                  t        t        f$ r@}	t        |	      j                  d      rt        j                  d      |dk(  r Y d }	~	/d }	~	ww xY w# t        j                  t        t        f$ r@}	t        |	      j                  d      rt        j                  d      |dk(  r Y d }	~	&d }	~	ww xY w# t        j                  t        t        f$ r?}	t        |	      j                  d      rt        j                  d      |dk(  r Y d }	~	y d }	~	ww xY w)Nz[]T)uts46strictz.decode() did not emit required error {} for {}zunexpected decode() outputUnknownzNTest requires support for a newer version of Unicode than this Python supportsasciiz.encode() did not emit required error {} for {}zunexpected encode() output)r8   r9   transitionalz?encode(transitional=True) did not emit required error {} for {})r-   _SKIP_TESTSidnar!   failr1   reprassertEqual	IDNAErrorUnicodeError
ValueErrorstr
startswithunittestSkipTestencode)
r.   source
to_unicodeto_unicode_statusto_asciito_ascii_status
to_ascii_tto_ascii_t_statusoutputexcs
             r   runTestzTestIdnaTest.runTest   sv   {{ KK	
[ J  $!H/O!J  /		[[tDAF D(		JQQR\^bci^jklVZ1MN		[[tDAHHQF$&		JQQRacghncopqVX/KL	[[tDtT[[\cdF D(		U\\]nptu{p|} VZ1MN/ j9 	3x""9-''({|| D( )	 j9 	3x""9-''({||$& '	 j9 	3x""9-''({|| D( )	sK   AE4 A)G 	A*H6 4G5GGH335H..H36J5JJ)NN)	__name__
__module____qualname____doc__r,   r2   r6   rS   __classcell__)r/   s   @r   r)   r)      s    3
9X
<r   r)   c                 2   t        j                         }t        t        j                  j                  t        j                  j                  t              d      d      5 }|j                  d t        |      D               ddd       |S # 1 sw Y   |S xY w)z+Create a suite of all the individual tests.zIdnaTestV2.txtrbc              3   :   K   | ]  \  }}t        ||        y wr   )r)   )r   r%   r-   s      r   r   zload_tests.<locals>.<genexpr>   s     lJk|FF3Jks   N)
rG   	TestSuiteopenospathr5   dirname__file__addTestsr'   )loadertestspatternsuite
tests_files        r   
load_testsrh      sj     E	bggll277??846FG	NR\lJ_`jJkll 
OL 
OLs    "BB)rW   os.pathr^   rerG   r>   compiler   r   r=   r   r'   TestCaser)   rh    r   r   <module>rn      sd      	  bjj01

;<gTPL8$$ L^r   