
    6bh%                    "
   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 dlZd dlZd dlmZ d dl	m
Z
 d dlmZ 	 d dlZ	 d dlZ	 d dlZ ej"                  ej$                        Zd Zd Z G d d	e      Z G d
 d      Z G d de      Z G d deej4                        Z G d deej4                        Z G d deej4                        Z G d deej4                        Z G d deej4                        Z G d deej4                        Z  G d deej4                        Z! G d deej4                        Z" G d dej4                        Z# G d  d!ej4                        Z$ G d" d#e!ej4                        Z% G d$ d%ej4                        Z&g d&Z'e'D ]  Z( e)e(      d'k7  s e* e+e(               G d( d)ej4                        Z,g d*Z- G d+ d,ej4                        Z. G d- d.ej4                        Z/ G d/ d0ej4                        Z0 G d1 d2ej4                        Z1 G d3 d4ej4                        Z2 G d5 d6ej4                        Z3 G d7 d8ej4                        Z4g d9Z5 e6e d:      re5jo                  d;        e6e d<      re5jo                  d=       d>gZ8 G d? d@ej4                  e      Z9 G dA dBej4                        Z: G dC dDej4                        Z; G dE dFej4                        Z< G dG dHeej4                        Z= G dI dJeej4                        Z> G dK dLej4                        Z? G dM dNej4                        Z@ G dO dPej4                        ZAg dQZBdRdSgdTgg dUdVgdWgdXZC	 d dlDZDeBjo                  dY       dZd[geCdY<   	 d dlEZEeBjo                  d\       d]geCd\<    G d^ d_ej4                        ZFi ZGd` ZH G da dbej4                        ZI ej                  ej                  dck(  dd       G de dfej4                               ZL G dg dhej4                        ZM G di djej4                        ZN G dk dlej4                        ZO ej                  edu dm       G dn doej4                               ZQ G dp dqej4                        ZR G dr dsej4                        ZS G dt duej4                        ZTeUdvk(  r ej                          yy# e$ r dZY w xY w# e$ r dZY w xY w# e$ r dZdZY w xY w# e$ r dZDY |w xY w# e$ r Y lw xY w)w    N)mock)support)	os_helperc                       fd}|S )Nc                 L    j                   |       |t        |       f       y N)assertEquallen)inputexpectcoderselfs     :/opt/python-3.12.12/usr/lib/python3.12/test/test_codecs.pycheckzcoding_checker.<locals>.check    s     uE
';<     )r   r   r   s   `` r   coding_checkerr      s    =Lr   c                    
 ddl m}m}m} ddlm}m
mmm	} ddd G 
fddt         j                        } ||| ||            } |d	 |d
      f      } |       }	 || d|	      S )Nr   )POINTERWINFUNCTYPEWinDLL)BOOLBYTEWCHARUINTDWORD      i  c                   Z    e Zd ZdW fdW  W z  fdW  W z  fdW fdW fdW W z  fgZy)'is_code_page_present.<locals>.CPINFOEXWMaxCharSizeDefaultCharLeadByteUnicodeDefaultCharCodePageCodePageNameN)__name__
__module____qualname___fields_)r   MAX_DEFAULTCHARMAX_LEADBYTESMAX_PATHr   r   s   r   	CPINFOEXWr!   ,   sH    "D)"D$89m!34)51&#U8^46r   r/   GetCPInfoExWkernel32)ctypesr   r   r   ctypes.wintypesr   r   r   r   r   	Structure)cpr   r   r   r   r   r/   	prototypeGetCPInfoExinfor   r,   r-   r.   r   r   s             @@@@@@r   is_code_page_presentr9   %   sv    33>>MOH6 6F$$ 6 D$wy/ABI^VJ-?@AK;Dr1d##r   c                   "    e Zd Z	 d Zd ZddZy)Queuec                     || _         y r	   _buffer)r   buffers     r   __init__zQueue.__init__=   s	    r   c                 .    | xj                   |z  c_         y r	   r=   )r   charss     r   writezQueue.write@   s    r   c                     |dk  r"| j                   }| j                   d d | _         |S | j                   d | }| j                   |d  | _         |S Nr   r=   )r   sizess      r   readz
Queue.readC   sP    6A<<+DLHUd#A<<.DLHr   N)r   )r(   r)   r*   r@   rC   rH   r   r   r   r;   r;   9   s    r   r;   c                       e Zd Zd Zd Zy)MixInCheckStateHandlingc                 \   t        t        |      dz         D ]  } t        j                  |             }|j	                  |d |       }|j                         }| j                  |d   t               |d   s]|j                  |d   d d df       | j                  |j	                  |d                 | j                  ||j                                 t        j                  |             }|j                  |       |j	                  ||d  d      }| j                  |||z           y )N   r   T)ranger   codecsgetincrementaldecoderdecodegetstateassertIsInstanceintsetstate
assertTruer
   	r   encodingurG   idpart1statepart2s	            r   check_state_handling_decodez3MixInCheckStateHandling.check_state_handling_decodeO   s   s1vaxA6,,X68AHHQrUOEJJLE!!%(C0 8

E!HRaL!,-AHHU1X$6 67  

5 7,,X68AJJuHHQqrUD)EQe,' !r   c                 b   t        t        |      dz         D ]  } t        j                  |             }|j	                  |d |       }|j                         } t        j                  |             }|j                  |       |j	                  ||d  d      }| j                  |||z           y )NrL   T)rM   r   rN   getincrementalencoderencoderQ   rT   r
   rV   s	            r   check_state_handling_encodez3MixInCheckStateHandling.check_state_handling_encodee   s    s1vaxA6,,X68AHHQrUOEJJLE6,,X68AJJuHHQqrUD)EQe, !r   N)r(   r)   r*   r^   rb   r   r   r   rJ   rJ   N   s    -,-r   rJ   c                   F    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dZ
d	 Zd
 Zy)ReadTestc                    t        d      } t        j                  | j                        |      }d}t	        |j                  | j                        |d      D ]E  \  }}|j                  t        |g             ||j                         z  }| j                  ||       G | j                  |j                         d       | j                  |j                  d        t        j                  | j                               }d}t	        |j                  | j                        |d      D ]5  \  }}||j                  t        |g            z  }| j                  ||       7 | j                  |j                  dd      d       | j                  |j                  d       |j                          d}t	        |j                  | j                        |d      D ]5  \  }}||j                  t        |g            z  }| j                  ||       7 | j                  |j                  dd      d       | j                  |j                  d       |j                  | j                        }	| j                  |dj                  t        j                   |	D cg c]  }t        |g       c}| j                                     y c c}w )Nr    Tstrict)r;   rN   	getreaderrW   zipra   rC   bytesrH   r
   
bytebufferrO   rP   r?   resetjoin
iterdecode)
r   r   partialresultsqrresultcpartialresultrZ   encodeds
             r   check_partialzReadTest.check_partialq   s>   
 #J+FT]]+A."%ell4==&A>Z^"_QGGE1#JaffhFV]3 #`
 	2&s+ 8F((79"%ell4==&A>Z^"_QahhuaSz**FV]3 #` 	#t,b13' 	
	"%ell4==&A>Z^"_QahhuaSz**FV]3 #` 	#t,b13' ,,t}}-GGF%%7&C7auaSz7&CT]]ST	
&Cs   Kc                 >     fddfd	}d}d}d} j                   ||d      |        j                   ||d      |        j                   ||dd      |        j                   ||dd      |       d	}g }g }t        |      D ]<  \  }}	|j                  |d
z  d
z   dz  |	z          |j                  |d
z  d
z   dz         >  j                   |dj                  |      d      dj                  |              j                   |dj                  |      d      dj                  |             t	        d      D ]  }
|D ]  }	d|
dz  |	z   dz   z  } |      }t	        d      D ]L  } j                  |j                  d      |
dz  |	z           j                  |j                  d      d       N  |      }t	        d      D ]I  } j                  |j                  d      |
dz          j                  |j                  d      d       K   y )Nc                     t        j                  | j                  j                              } t	        j
                  j                        |      S r	   ioBytesIOra   rW   rN   ri   )r   streamr   s     r   ri   z)ReadTest.test_readline.<locals>.getreader   s:    ZZT]] ;<F26##DMM26::r   Tc                      |       }g }	 |j                  ||      }|sn|j                  |       (dj                  |      S )N)rF   keepends|)readlineappendrn   )r   r   rF   readerlineslineri   s         r   readalllinesz,ReadTest.test_readline.<locals>.readalllines   sN    u%FED8DT"	 
 88E?"r   u   foo
bar
bazspam eggsu   foo
|bar
|baz|spam |eggszfoo|bar|baz|spam|eggsF
   )

u       u   あrf   r   P   azxxx
r   xxx)TN)r
   	enumerater   rn   rM   r   )r   r   rG   	sexpectedsexpectednoendslineendsvwvworY   lineendrF   r   ri   s   `           @r   test_readlinezReadTest.test_readline   s   	;	# .9	1a.	:a/Aar2I>a3_E1%h/LQIIquSy(*W45JJ#c	8+, 0 	bggbk48#((2,Gbggbk59388C=I "ID#S7*W45"1rA$$6S7* $$6 # #1rA$$7S $$7 # $ r   c                 `    g d}dj                  |       fd} |       } j                  |j                         |d           j                  |j                         dj                  |dd                j                  |j                         d        |       } j                  |j                         |d           j                  |j                  d      |d   d           j                  |j                  d      d        j                  |j                  d      t	        |d         dz   d  d d         |       } j                  |j                         |d           j                  |j                         |dd          j                  |j                         d        |       } j                  |j                  dd	      d d         j                  |j                         dd          j                  |j                         d        |       } j                  |j                  dd	      d d         j                  |j                  d      d           j                  |j                  d      d        j                  |j                  d      d
d         |       } j                  |j                  dd	      d d         j                  |j                         |d   dd  g|dd  z           j                  |j                         d       y )N)zHumpty Dumpty sat on a wall,
z!Humpty Dumpty had a great fall.
z-All the king's horses and all the king's menz#Couldn't put Humpty together again.rf   c                      t        j                  j                  j                              }  t	        j
                  j                        |       S r	   rz   )r}   datar   s    r   ri   z8ReadTest.test_mixed_readline_and_read.<locals>.getreader   s:    ZZDMM :;F26##DMM26::r   r   rL   d   (      )rF   rB      j   )rn   r
   r   rH   r   	readlines)r   r   ri   fr   s   `   @r   test_mixed_readline_and_readz%ReadTest.test_mixed_readline_and_read   s   8 wwu~	;
 KuQx027759#562& KuQx0E!HQK0B'd3uQx=1+<+=&>t&DE KuQx0ab	22& KRq148<48,2& KRq148<DG,B'd1Sk2 KRq148<q!"qr(BC2&r   c                     g d}t        j                  dj                  |      j                  | j                              } t        j                  | j                        |      }t        |      D ]  \  }}| j                  |||           y )N)=z:<%!--===================================================
z,    BLOG index page: show recent articles,
z7    today's articles, or articles of a specific date.
z>========================================================--%>
z!<%@inputencoding="ISO-8859-1"%>
z<%@pagetemplate=TEMPLATE.y%>
z$<%@import=import frog.util, frog%>
z!<%@import=import frog.objects%>
z9<%@import=from frog.storageerrors import StorageError%>
z<%
r   zimport logging
z+log=logging.getLogger("Snakelets.logger")
r   r   zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
r   r   z-def readArticlesFromDate(date, count=None):
z2    entryids=storageEngine.listBlogEntries(date)
z%    entryids.reverse() # descending
z    if count:
z#        entryids=entryids[:count]
z
    try:
z\        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]
z    except StorageError,x:
z6        log.error("Error loading articles: "+str(x))
z,        self.abort("cannot load articles")
r   zshowdate=None
r   zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif arg=="date":
z7    #-------------------- ARTICLES OF A SPECIFIC DATE
z2    showdate = self.Request.getParameter("date")
zV    self.write("<h2>Articles written on %s</h2>"% frog.util.mediumdatestr(showdate))
r   zelse:
z+    #-------------------- RECENT ARTICLES
z,    self.write("<h2>Recent articles</h2>")
z.    dates=storageEngine.listBlogEntryDates()
z    if dates:
z        entries=[]
z        SHOWAMOUNT=10
z         for showdate in dates:
zW            entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) )
z*            if len(entries)>=SHOWAMOUNT:
z                break
z                
rf   )	r{   r|   rn   ra   rW   rN   ri   r   r
   )r   rG   r}   r   rY   r   s         r   test_bug1175396zReadTest.test_bug1175396  ss    >
~ BGGAJ--dmm<=0!!$--08"6*IQT1Q4( +r   c                    t        d      } t        j                  | j                        |      } t        j                  | j                        |      }|j                  d       | j                  |j                  d      d       |j                  d       | j                  |j                  d      d       | j                  |j                  d      d       |j                  d	       | j                  |j                  d      d	       | j                  |j                  d      d       |j                  d       | j                  |j                  d
      d       |j                  d       | j                  |j                  d
      d       | j                  |j                  d
      d       |j                  d	       | j                  |j                  d
      d	       | j                  |j                  d
      d       |j                  d       | j                  |j                  d
      d       y )Nr   zfooFr   fooz
barrf   barbazTr   zbarzfoo
)r;   rN   	getwriterrW   ri   rC   r
   r   )r   rq   writerr   s       r   test_readlinequeuezReadTest.test_readlinequeueL  s   #J0!!$--030!!$--03 	W%8%@Y%8"=%8%@U%8%@%8"= 	W$7AY$7>$7AU$7?$7<Y$7Cr   c                    d}d}d}||z   |z   j                  | j                        }t        j                  |      } t	        j
                  | j                        |      }| j                  |j                         |       | j                  |j                         |       | j                  |j                         |       | j                  |j                         d       y )NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rf   ra   rW   r{   r|   rN   ri   r
   r   )r   s1s2s3rG   r}   r   s          r   test_bug1098990_azReadTest.test_bug1098990_ag  s    RqU2Xdmm,A0!!$--08*B/*B/*B/*B/r   c                 Z   d}d}d}d}d}||z   |z   |z   |z   j                  | j                        }t        j                  |      } t	        j
                  | j                        |      }| j                  |j                         |       | j                  |j                         |       | j                  |j                         |       | j                  |j                         |       | j                  |j                         |       | j                  |j                         d       y )Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rf   r   )	r   r   r   r   s4s5rG   r}   r   s	            r   test_bug1098990_bzReadTest.test_bug1098990_bt  s    ++##U2Xb[^##DMM2A0!!$--08*B/*B/*B/*B/*B/*B/r      �c                    | j                  t        dj                  | j                         | j	                  dj                  | j                  d      dj                  | j                               | j	                  dj                  | j                  d      dj                  | j                               | j	                  dj                  | j                  d      dj                  | j                               | j	                  dj                  | j                  d      d	j                  | j                               | j	                  dj                  | j                  d
      dj                  | j                               | j	                  dj                  | j                  d      d	j                  | j                               | j	                  dj                  | j                  d
      dj                  | j                               dj                  | j                        }dD ]  \  }}|j                  | j                        t        |      d  }|j                  | j                        t        |      d  }|dz   |z   }||z   | j                  z   |z   }| j                  t        |j                  | j                         | j	                  |j                  | j                  d      |       | j	                  |j                  | j                  d      |       | j	                  |j                  | j                  d      ||z          | j	                  |j                  | j                  d
      || j                  z   |z          dj                  d | j                  D              }| j	                  |j                  | j                  d      ||z   |z           y )Nu      []backslashreplacez[\udc80]namereplacexmlcharrefreplacez
[&#56448;]ignore[]replacez[?]   []z[??]rf   ))   𐿿A)[])r   r      surrogatepassc              3   &   K   | ]	  }d |z    yw)\x%02xNr   ).0bs     r   	<genexpr>z0ReadTest.test_lone_surrogates.<locals>.<genexpr>  s      'J0H1 (11}0Hs   )assertRaisesUnicodeEncodeErrorra   rW   r
   r   ill_formed_sequenceUnicodeDecodeErrorrP   ill_formed_sequence_replacern   )	r   bombeforeafterbefore_sequenceafter_sequencetest_stringtest_sequencer   s	            r   test_lone_surrogateszReadTest.test_lone_surrogates  s5   ,hoot}}M**4==:LM$++DMM:	<**4==-H$++DMM:	<**4==:MN%,,T]];	=**4==(CT]]3	5**4==)Ddmm4	6 	)00IT]]3	5)00	Jt}}5	7 ii&3MFE$mmDMM:3s89EO"\\$--8SCN 8+e3K ?2!5568FGM0-2F2F"mm-[//0?A*, ]11$--2AC(* ]11$--J#e^-]11$--K#d&F&FFNP!ww 'J040H0H'J  J]11$--AST#&66>@+3r   c                    dj                  | j                  d      }t        dt        |            D ]p  } t	        j
                  | j                        d      }| j                  |j                  |d |       d       | j                  |j                  ||d  d      d       r dj                  | j                  d      }t        dt        |            D ]o  } t	        j
                  | j                        d      }| j                  |j                  |d |       d       | j                  |j                  ||d        d       q y )Nu   r   rL   rf   Tu   )ra   rW   rM   r   rN   rO   r
   rP   )r   r   rY   decs       r   test_incremental_surrogatepassz'ReadTest.test_incremental_surrogatepass  s    t}}o>q#d)$A=&..t}}=oNCSZZRa126SZZQR$7B %
 t}}o>q#d)$A=&..t}}=oNCSZZRa126SZZQR18< %r   N)r(   r)   r*   rw   r   r   r   r   r   r   r   r   r   r   r   r   rd   rd   p   s?    )
V9v.'`C)JD600" #+*@X=r   rd   c                   j    e Zd ZdZej
                  dk(  rdZndZdZdZd Z	d Z
d	 Zd
 Zd Zd Zd Zy)	UTF32Testutf-32little          ܀s$     s   p   a   m   s   p   a   m   s$        s   p   a   m   s   p   a   mc                    t        j                  | j                        \  }}}}t        j                         } ||      }|j                  d       |j                  d       |j                         }| j                  || j                  k(  xs || j                  k(         t        j                  |      } ||      }| j                  |j                         d       y NspamspamspamrN   lookuprW   r{   r|   rC   getvaluerU   spamlespamber
   rH   r   _r   r   rG   r   rZ   s          r   test_only_one_bomzUTF32Test.test_only_one_bom      "MM$--8!F6JJL1I		JJLT[[(<A,<=JJqM1I:.r   c                 l   t        j                  d      } t        j                  | j                        |      }| j                  t        |j                         t        j                  d      } t        j                  | j                        |      }| j                  t        |j                         y )N   s   r{   r|   rN   ri   rW   r   UnicodeErrorrH   r   rG   r   s      r   test_badbomzUTF32Test.test_badbom  s|    JJy!+FT]]+A.,/JJy!+FT]]+A.,/r   c                 ,    | j                  dg d       y )N    ÿĀ￿𐀀)rf   rf   rf   rf   rf   rf   rf    r   r   r       ÿr   r   r       ÿĀr   r   r       ÿĀ￿r   r   r   r   rw   r   s    r   test_partialzUTF32Test.test_partial  s    ,	
r   c                     | j                  dt        j                  ddd             | j                  dt        j                  ddd             y N)r   rL      r   T)rf   rL   r   r
   rN   utf_32_decoder   s    r   test_handlerszUTF32Test.test_handlers	  H    --gy$G	I--gxF	Hr   c                 R    | j                  t        t        j                  ddd       y N   rh   T)r   r   rN   r  r   s    r   test_errorszUTF32Test.test_errors  "    ,f.B.B!8T	3r   c                     | j                  | j                  d| j                         | j                  | j                  d| j                         y Nr   r^   rW   r   r   r   s    r   test_decoder_statezUTF32Test.test_decoder_state  >    (()3T[[	B(()3T[[	Br   c                     d}| j                  dt        j                  |      d          d}| j                  dt        j                  |      d          y )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    r  )r   
encoded_le
encoded_bes      r   test_issue8941zUTF32Test.test_issue8941  sW     F
,--j9!<	>E
,--j9!<	>r   N)r(   r)   r*   rW   sys	byteorderr   r   r   r   r   r   r  r  r  r  r   r   r   r   r     sT    H
}} 11FFFF/0
>H3B>r   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)UTF32LETest	utf-32-ler   c                 ,    | j                  dg d       y Nr   )rf   rf   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    r   r   zUTF32LETest.test_partial(      ,	
r   c                 Z    | j                  dj                  | j                        d       y )N   𐈃s    r
   ra   rW   r   s    r   test_simplezUTF32LETest.test_simpleC  "    ,,T]];=PQr   c                 R    | j                  t        t        j                  ddd       y r  )r   r   rN   utf_32_le_decoder   s    r   r  zUTF32LETest.test_errorsF  "    ,f.E.E!8T	3r   c                 X    d}| j                  dt        j                  |      d          y )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r  r   )r
   rN   r"  r   rv   s     r   r  zUTF32LETest.test_issue8941J  -     -,009!<	>r   N	r(   r)   r*   rW   r   r   r  r  r  r   r   r   r  r  $  "    H-
6R3>r   r  c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)UTF32BETest	utf-32-ber   c                 ,    | j                  dg d       y r  r   r   s    r   r   zUTF32BETest.test_partialV  r  r   c                 Z    | j                  dj                  | j                        d       y )Nr  s    r  r   s    r   r  zUTF32BETest.test_simpleq  r   r   c                 R    | j                  t        t        j                  ddd       y r  )r   r   rN   utf_32_be_decoder   s    r   r  zUTF32BETest.test_errorst  r#  r   c                 X    d}| j                  dt        j                  |      d          y )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r  r   )r
   rN   r/  r%  s     r   r  zUTF32BETest.test_issue8941x  r&  r   Nr'  r   r   r   r*  r*  R  r(  r   r*  c                   p    e Zd ZdZej
                  dk(  rdZndZdZdZd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)	UTF16Testutf-16r         ܀s   s p a m s p a m s    s p a m s p a mc                    t        j                  | j                        \  }}}}t        j                         } ||      }|j                  d       |j                  d       |j                         }| j                  || j                  k(  xs || j                  k(         t        j                  |      } ||      }| j                  |j                         d       y r   r   r   s          r   r   zUTF16Test.test_only_one_bom  r   r   c                 l   t        j                  d      } t        j                  | j                        |      }| j                  t        |j                         t        j                  d      } t        j                  | j                        |      }| j                  t        |j                         y )Ns   r   r   r   s      r   r   zUTF16Test.test_badbom  s}    JJ{#+FT]]+A.,/JJ*++FT]]+A.,/r   c                 ,    | j                  dg d       y )Nr   )rf   rf   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   s    r   r   zUTF16Test.test_partial  s    ,	
r   c                     | j                  dt        j                  ddd             | j                  dt        j                  ddd             y r   )r
   rN   utf_16_decoder   s    r   r  zUTF16Test.test_handlers  r  r   c                 R    | j                  t        t        j                  ddd       y r  )r   r   rN   r:  r   s    r   r  zUTF16Test.test_errors  r	  r   c                     | j                  | j                  d| j                         | j                  | j                  d| j                         y r  r  r   s    r   r  zUTF16Test.test_decoder_state  r  r   c                    d}|j                  | j                        }| j                  t        j                  t        j
                         t        t        j
                  d      5 }|j                  |       d d d        t        j                  t        j
                  d| j                        5 }| j                  |j                         |       d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)NzHello
world
wbrr   rW   )ra   rW   
addCleanupr   unlinkTESTFNopenrC   rN   r
   rH   )r   r   rG   fpr   s        r   test_bug691291zUTF16Test.test_bug691291  s    
 "IIdmm$	(()*:*:;)""D)RHHQK *[[))3"&--14:V[[]B/1 1 *)1 1s   &C0!C&C#&C/c                    dD ]u  }| j                  t              5 }t        j                  t        j
                  || j                         d d d        | j                  dt        j                               w dD ]u  }| j                  t              5 }t        j                  t        j
                  || j                         d d d        | j                  dt        j                               w y # 1 sw Y   xY w# 1 sw Y   =xY w)N)UrUzr+Ur?  zinvalid mode)rtwtatzr+tz'can't have text and binary mode at once)
r   
ValueErrorrN   rC  r   rB  rW   assertInstr	exception)r   modecms      r   test_invalid_modeszUTF16Test.test_invalid_modes  s    &D"":."I,,dT]]K /MM.#bll*;< '
 .D"":."I,,dT]]K /MMCbll+- .	 /.
 /.s   1C61D6C?	D	N)r(   r)   r*   rW   r  r  r   r   r   r   r   r   r  r  r  rE  rR  r   r   r   r2  r2    sS    H
}} ))@F@F/0
*H3B0
-r   r2  c                   &    e Zd ZdZdZd Zd Zd Zy)UTF16LETest	utf-16-ler4  c                 ,    | j                  dg d       y Nr   )rf   r   r   r   r   r   r   r   r   r   r   r   r   r   s    r   r   zUTF16LETest.test_partial      ,	
r   c                     g d}|D ]N  \  }}| j                  t        t        j                  |dd       | j	                  |j                  dd      |       P y )N)r  r   )s   A Z   A�)s	   A B C D Z   ABCD�)s    r   )s    Ar   )s    A    �A)s    A r]  rh   Tzutf-16ler   )r   r   rN   utf_16_le_decoder
   rP   r   testsrawexpecteds       r   r  zUTF16LETest.test_errors  T    
 #MC0&2I2I!8T3SZZ
I>I #r   c                     | j                  dj                  | j                        d       | j                  dj                  | j                        d       y )Nr  s    ީr
   ra   rW   rP   r   s    r   test_nonbmpzUTF16LETest.test_nonbmp	  G    ,,T]];,	.,33DMMB%	'r   Nr(   r)   r*   rW   r   r   r  rf  r   r   r   rT  rT        H%
&J'r   rT  c                   &    e Zd ZdZdZd Zd Zd Zy)UTF16BETest	utf-16-ber5  c                 ,    | j                  dg d       y rW  r   r   s    r   r   zUTF16BETest.test_partial  rX  r   c                     g d}|D ]N  \  }}| j                  t        t        j                  |dd       | j	                  |j                  dd      |       P y )N)rZ  )s    Ar[  )s	    A B C DZr\  )s    r   )s    r   )s     Ar]  )s     Ar]  rh   Tzutf-16ber   )r   r   rN   utf_16_be_decoder
   rP   r_  s       r   r  zUTF16BETest.test_errors&  rc  r   c                     | j                  dj                  | j                        d       | j                  dj                  | j                        d       y )Nr  s    re  r   s    r   rf  zUTF16BETest.test_nonbmp5  rg  r   Nrh  r   r   r   rk  rk    ri  r   rk  c                   L     e Zd ZdZdZdZdZd Zd Zd Z	 fdZ
d	 Zd
 Z xZS )UTF8Testutf-8s   u	   ���r   c                 ,    | j                  dg d       y )N    ÿ߿ࠀ￿𐀀)r   r   r   r       ÿ߿rv  rv      ÿ߿ࠀrw  rw      ÿ߿ࠀ￿rx  rx  rx  ru  r   r   s    r   r   zUTF8Test.test_partialA  s    2	
r   c                 t    d}| j                  | j                  ||j                  | j                               y )Nu    ÿĀ߿ࠀ￿􏿿)r^   rW   ra   )r   rX   s     r   r  zUTF8Test.test_decoder_stateW  s.    @(()*AHHT]],C	Er   c                     dD ]O  \  }}}| j                  |||      5  | j                  |j                  | j                  |      |       d d d        Q y # 1 sw Y   \xY w)N)   []r   r   )r|  r   u   [��])r|  surrogateescape   [])r|  r   z
[\x80\xff]r   error_handlerrb  )subTestr
   rP   rW   r   r   r  rb  s       r   test_decode_errorzUTF8Test.test_decode_error\  sf    .
)D- 4}'/  1  T]]M!J!)+1 1.
1 1s   -AA	c                    t         |           | j                  dj                  | j                  d      | j
                  dz          | j                  t              5 }dj                  | j                  d       d d d        j                  }| j                  |j                  |j                  |j                   d       y # 1 sw Y   IxY w)Nr   r}  s   []u   []u   )superr   r
   ra   rW   BOMr   r   rO  objectstartend)r   rQ  exc	__class__s      r   r   zUTF8Test.test_lone_surrogatesh  s    $& 	**4==:KLI-	/ 12b"))$--9JK 3llCIIcgg6G 32s   CCc                 j   | j                  dj                  | j                  d      | j                  dz          | j                  dj                  | j                  d      | j                  dz          | j                  dj                  | j                  d      | j                  dz          | j                  dj	                  | j                  d      d       | j                  dj	                  | j                  d      d       | j                  t        j                  d             | j                  t              5  dj	                  | j                  d       d d d        | j                  t              5  d	j	                  | j                  d       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)
Nu	   abcdefr   s	   abcdefu   𐿿s   𐿿r   s   []s   abcs   abcz)
r
   ra   rW   r  rP   rU   rN   lookup_errorr   r   r   s    r   test_surrogatepass_handlerz#UTF8Test.test_surrogatepass_handlert  sX   ..t}}oN$99	;+224==/R$CC	E)00P$AA	C 	.55dmm_U'	)8??_+	- 	++O<=12!!$--A 312""4==/B 32 3222s   =F7F)F&)F2c                 X   g d}dD ]  }dD ]  }|j                  ||z            |j                  d       |D ]b  }| j                  |      5   t        j                  | j
                               }| j                  t        |j                  |       d d d        d y # 1 sw Y   oxY w)N)                  r  )         s      s      s   s      s   s   )   r  )s   s   s   s   s   s   s   r   )	r   extendr  rN   rO   rW   r   r   rP   )r   casesprefixsuffixr   r   s         r   test_incremental_errorsz UTF8Test.test_incremental_errors  s     P>F +Vf_- +>
 	 N 	O D4(Af224==AC!!"4cjj$G )( ((s   AB  B)	)r(   r)   r*   rW   r   r   r  r   r  r  r   r  r  __classcell__r  s   @r   rr  rr  ;  s;    H)".
C
,E

+
HC&Hr   rr  c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)UTF7Testutf-7c                 z   d}| j                  |j                  | j                        |j                  d             | j                  |j                  d      j                  | j                        |       d}| j                  |j                  | j                        |j                  d             | j                  |j                  d      j                  | j                        |       | j                  dj                  | j                        d       | j                  dj                  | j                        d       d}| j                  |j                  | j                        |j                  d             | j                  |j                  d      j                  | j                        |       dj	                  t        t        t        t        d            j                               t        ||z   d	z   |z         z
              }| j                  |j                  | j                        d
       y )NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?asciiz !"#$%&*;<=>@[]^_`{|}za+bs   a+-bz 	
rf      +sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	r
   ra   rW   rP   rn   sortedsetrk   rM   )r   set_dset_owsother_asciis        r   
test_asciizUTF7Test.test_ascii  s    	dmm4ell76KLg.55dmmDeL'dmm4ell76KLg.55dmmDeLdmm4g>6>4==1299W3EF7+224==A2FggfSuT{);)B)B)D%E%()<r)A%B&C D E++DMM:D	Er   c                 ,    | j                  dg d       y )N   a+-b cdĀe𐀀f) r   r   a+za+-a+-br  r  r  r  za+-b a+-b cr  r  r  r  u   a+-b c	   a+-b cdr  r  r  r  u   a+-b cdĀ   a+-b cdĀer  r  r  r  r  r  r  u   a+-b cdĀe𐀀r  r   r   s    r   r   zUTF7Test.test_partial      .!$	
r   c           	          g d}|D ]i  \  }}| j                  |      5  | j                  t        t        j                  |dd       | j                  |j                  dd      |       d d d        k y # 1 sw Y   vxY w)N))s   bu   �b)s   ab   a�b)s   abu   a��b)s   a+IK   a�)s   a+IK-br  )s   a+IK,br  )s   a+IKx   a€�)s   a+IKx-b   a€�b)s   a+IKwgrr  )s	   a+IKwgr-br  )s   a+IKwgr,r  )s
   a+IKwgr,-bu	   a€�-b)s   a+IKwgrB
   a€€�)s
   a+IKwgrB-b   a€€�b)s
   a+/,+IKw-b   a�€b)s   a+//,+IKw-br  )s   a+///,+IKw-b   a￿�€b)s   a+////,+IKw-br  )s   a+IKw-bu   a€b�)s   a+IKwbr  )s   a+@br  ra  rh   Tr  r   )r  r   r   rN   utf_7_decoder
   rP   r_  s       r   r  zUTF7Test.test_errors  sq    
. #MC#&!!"4f6I6I #Xt5  GY!?J '& #&&s   A
A44A=	c                 `   | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d       | j                  dj                  | j                        d	       | j                  d	j                  | j                        d       | j                  d
j                  | j                        d       y )Nu   𐒠s   +2AHcoA-u   s   +2AHcoAu   €𐒠s
   +IKzYAdyg-s	   +IKzYAdygu
   €€𐒠s   +IKwgrNgB3KA-s   +IKwgrNgB3KAre  r   s    r   rf  zUTF7Test.test_nonbmp  sF   ,,T]];[I..t}}={K++DMM:LI**4==9<H+224==A=Q--dmm<>PQ,,T]];=OP188G)	+)00?1	3//>1	3r   c                     g d}|D ]B  \  }}| j                  |      5  | j                  |j                  dd      |       d d d        D y # 1 sw Y   OxY w)N))s   a+2AE-bu   ab)s   a+2AEbr  )s   a+2AEr  )s   a+2AEA-br  )s   a+2AH-br  )s
   a+IKzYAQ-bu   a€b)s
   a+IKzYAQbr  )s   a+IKzYAQA-br  )s
   a+IKzYAd-br  )s   a+IKwgrNgB-bu   a€€b)s   a+IKwgrNgBbr  )s
   a+IKwgrNgBr  )s   a+IKwgrNgBA-br  r  r  r   r  r
   rP   r_  s       r   r   zUTF7Test.test_lone_surrogates
  sQ    
 #MC#&  GY!?J '& #&&s   #AA	N)	r(   r)   r*   rW   r  r   r  rf  r   r   r   r   r  r    s$    HE4%
NK<3Kr   r  c                       e Zd Zd Zd Zy)UTF16ExTestc                 T    | j                  t        t        j                  dddd       y )Nr  rh   r   T)r   r   rN   utf_16_ex_decoder   s    r   r  zUTF16ExTest.test_errors!  s$    ,f.E.EwPXZ[]abr   c                 L    | j                  t        t        j                         y r	   )r   	TypeErrorrN   r  r   s    r   test_bad_argszUTF16ExTest.test_bad_args$  s    )V%<%<=r   N)r(   r)   r*   r  r  r   r   r   r  r    s    c>r   r  c                       e Zd Zd Zd Zd Zy)ReadBufferTestc                 v    dd l }| j                  t        j                  |j                  dd            d       y )Nr   r      spam)r     )arrayr
   rN   readbuffer_encode)r   r  s     r   
test_arrayzReadBufferTest.test_array)  s/    $$U[[g%>?	
r   c                 N    | j                  t        j                  d      d       y )Nrf   r   r   )r
   rN   r  r   s    r   
test_emptyzReadBufferTest.test_empty0  s    11"5x@r   c                     | j                  t        t        j                         | j                  t        t        j                  d       y N*   )r   r  rN   r  r   s    r   r  zReadBufferTest.test_bad_args3  s0    )V%=%=>)V%=%=rBr   N)r(   r)   r*   r  r  r  r   r   r   r  r  '  s    
ACr   r  c                   F    e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zy)UTF8SigTest	utf-8-sigc                 ,    | j                  dg d       y )N   ﻿ ÿ߿ࠀ￿𐀀)rf   rf   rf   rf   rf   u   ﻿   ﻿ r     ﻿ ÿr     ﻿ ÿ߿r  r     ﻿ ÿ߿ࠀr  r     ﻿ ÿ߿ࠀ￿r  r  r  r  r   r   s    r   r   zUTF8SigTest.test_partial;  s    8	
r   c                 <    | j                  t        dd      d       y )N   ﻿r  rf   r
   rN  r   s    r   test_bug1601501zUTF8SigTest.test_bug1601501W  s    _k:B?r   c                      t        j                  d             }d}| j                  |j                  |j	                  d            |       y )Nr  r   )rN   rO   r
   rP   ra   )r   rZ   rG   s      r   test_bomzUTF8SigTest.test_bom[  s>    5F((57!((;"78!<r   c                    d}t         j                  dz   }t        j                  d      }d gt        t	        dd            z   g dz   D ]  } |t        j                  |            }t        j                         }	 ||j                  |      }n|j                         }|sn|j                  |       9|j                         }| j                  ||        y Nu   ABC¡∀XYZs   ABC¡∀XYZr  rL      )@   r        i   )rN   BOM_UTF8ri   listrM   r{   r|   StringIOrH   rC   r   r
   	r   	unistring
bytestringr   sizehintistreamostreamr   gots	            r   test_stream_bomzUTF8SigTest.test_stream_bom`  s    (	__'DD
!!+.eArl!3312HRZZ
34GkkmG'"<<1D"<<>Dd#  ""$CS),2r   c                    d}d}t        j                  d      }d gt        t        dd            z   g dz   D ]  } |t	        j
                  |            }t	        j                         }	 ||j                  |      }n|j                         }|sn|j                  |       9|j                         }| j                  ||        y r  )rN   ri   r  rM   r{   r|   r  rH   rC   r   r
   r  s	            r   test_stream_barezUTF8SigTest.test_stream_barev  s    (	2
!!+.eArl!3312HRZZ
34GkkmG'"<<1D"<<>Dd#  ""$CS),2r   N)r(   r)   r*   rW   rN   r  r  r   r  r  r  r   r   r   r   r  r  7  s*    H
//C
8@=
-,-r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)EscapeDecodeTestc                     | j                  t        j                  d      d       | j                  t        j                  t                     d       y )Nr   r  )r
   rN   escape_decode	bytearrayr   s    r   r  zEscapeDecodeTest.test_empty  s:    --c2H=--ik:HEr   c                     t         j                  }t        d      D ]4  }t        |g      }|dk7  s| j	                   ||dz         |dz   df       6 y )Nr     \   0r   )rN   r  rM   rk   r
   r   rP   r   s      r   test_rawzEscapeDecodeTest.test_raw  sN    %%sAqc
AEz  D!1AHa=A r   c                    t         j                  }t        | |      } |dd        |dd        |dd        |dd        |d	d
        |dd        |dd        |dd        |dd        |dd        |dd        |dd
        |dd        |dd        |dd        |dd        |d d!        |d"d        |d#d!       y )$N   [\
]   []   [\"]s   ["]   [\']s   [']   [\\]s   [\]   [\a]s   []   [\b]s   []   [\t]s   [	]   [\n]s   [
]   [\v]s   []   [\f]s   []   [\r]s   []   [\7]   [\78]s   [8]   [\41]s   [!]   [\418]s   [!8]   [\101]s   [A]   [\1010]s   [A0]   [\x41]   [\x410])rN   r  r   r   rP   r   s      r   test_escapezEscapeDecodeTest.test_escape  s    %%tV,ihhh h	"h	"h	"h	"h	"h	"h	"h	"i$i j'"j&!k7#j&!k7#r   c           	         t         j                  }t        | |      }t        dd      D ]  }t	        |g      }|dvr1| j                  t        d|z        5   |d|z   d|z          d d d        | j                  t        d|dz
  z        5   |d|j                         z   d|j                         z          d d d         | j                  t        d      5   |dd       d d d        | j                  t              5   |d	d	       d d d        | j                  t        d
      5 } |dd       d d d        t        dd      D ]=  }| j                  t        d|z        5   |d|z  t	        |dz  g             d d d        ? | j                  t        d      5  | j                   |dd      d       d d d        | j                  t        d      5  | j                   |dd      d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Na   {   s   abfnrtvxinvalid escape sequence '\\%c'r      invalid escape sequence '\\8'   \8   \9 invalid escape sequence '\\\xfa'   \r  r  $invalid octal escape sequence '\\%o'   \%o   invalid escape sequence '\\z'   \x\zr   )s   \zr  %invalid octal escape sequence '\\501'   \x\501)   Ar   )
rN   r  r   rM   rk   assertWarnsRegexDeprecationWarningupperassertWarnsr
   r   rP   r   rY   r   rQ  s         r   test_warningszEscapeDecodeTest.test_warnings  s8   %%tV,r3Aqc
A#**+=9A=?%!)UQY/? &&'952>@eaggi'):;@ @   ""#502&&!2 01&&! 2""#5358:)Y'5 uf%A&&'9;a?Agk5!e)#56A A &
 ""#502VHh7E2 ""#58:VJ99E: :-? ?@ @2 2 215 5A A2 2: :s`   G3	,H 
H<
H$
H'H3H?I3G=	 H
	HH$'H03H<	?IIc                    t         j                  }| j                  t        |d       | j                  t        |d       | j	                   |dd      d       | j	                   |dd      d       | j                  t        |d       | j                  t        |d	       | j	                   |d
d      d       | j	                   |d
d      d       y )Ns   \xs   [\x]s   [\x]\xr   )r  r   r   )   [?]?r   s   \x0s   [\x0]s   [\x0]\x0)r     )r;  r<  )rN   r  r   rL  r
   )r   rP   s     r   r  zEscapeDecodeTest.test_errors  s    %%*ff5*fh7
H5zB
I6E*fg6*fi8h7Di8,Gr   N)r(   r)   r*   r  r
  r!  r9  r  r   r   r   r  r    s     FB$.F@	Hr   r  ))u"   ليهمابتكلموشعربي؟s   egbpdaj6bu4bxfgehfvwxn)u   他们为什么不说中文s   ihqwcrb4cv8a8dqg056pqjye)u   他們爲什麽不說中文s   ihqwctvzc91f659drss3x8bo0yb)u   Pročprostěnemluvíčeskys   Proprostnemluvesky-uyb24dma41a)u,   למההםפשוטלאמדבריםעבריתs   4dbcagdahymbxekheh6e0a7fei0b)uZ   यहलोगहिन्दीक्योंनहींबोलसकतेहैंs,   i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6   なぜみんな日本語を話してくれないのかs&   n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH   세계의모든사람들이한국어를이해한다면얼마나좋을까sE   989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8   почемужеонинеговорятпорусскиs    b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*   PorquénopuedensimplementehablarenEspañols-   PorqunopuedensimplementehablarenEspaol-fmd56a)u-   TạisaohọkhôngthểchỉnóitiếngViệts,   TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u   3年B組金八先生s   3B-ww4c5e180e575a65lsy2b)u"   安室奈美恵-with-SUPER-MONKEYSs(   -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'   Hello-Another-Way-それぞれの場所s(   Hello-Another-Way--fc4qua05auwb3674vfr0b)u   ひとつ屋根の下2s   2-u9tlzr9756bt3uc0v)u   MajiでKoiする5秒前s   MajiKoi5-783gue6qz075azm5e)u   パフィーdeルンバs   de-jg4avhby1noc0d)u   そのスピードでs   d9juau41awczczp)z-> $1.00 <-s   -> $1.00 <--r   c                       e Zd Zd Zd Zd Zy)PunycodeTestc                     t         D ]V  \  }}| j                  t        |j                  d      d      j	                         t        |d      j	                                X y Npunycoder  )punycode_testcasesr
   rN  ra   lowerr   unipunys      r   test_encodezPunycodeTest.test_encodeJ  sO    +IC CJJz*G4::<D'"((* ,r   c                     t         D ]g  \  }}| j                  ||j                  d             |j                  d      j                  d      }| j                  ||j                  d             i y r@  )rB  r
   rP   ra   rD  s      r   test_decodezPunycodeTest.test_decodeV  s[    +ICS$++j"9:;;w'..w7DS$++j"9: ,r   c                 2   ddt               fdg}|D ]w  \  }}}| j                  ||      5  t        |t              r#| j	                  t         |j
                  d|       n"| j                  |j                  d|      |       d d d        y y # 1 sw Y   xY w)N   xn--w&rh   )rK  r   zxn-)rF  errorsrA  )r   r  
isinstance	Exceptionr   rP   r
   )r   	testcasesrF  rL  rb  s        r   test_decode_invalidz PunycodeTest.test_decode_invalid\  s    ,.1(
	 '0"D&(47h	2%%lDKKVT$$T[[V%DhO	 87 '077s   ABB	N)r(   r)   r*   rG  rI  rP  r   r   r   r>  r>  I  s    
;
Pr   r>  )-)s%   foo­͏᠆᠋bar​⁠baz︀︈️﻿s	   foobarbaz)s   CAFEs   cafe)s   ßs   ss)s   İs   i̇)s   Ńͺs   ń ιNN)s   ǰ ªs   ǰ a)s   ᾷs   ᾶι)   ǰrR  )   ΐrS  )   ΰrT  )   ẖrU  )   ὖrV  )    rW  )s    rW  )s    N)s    rW  )s   ​r   )s   　rW  )   rX  )s   N)s   ᠎N)r  r   )s   𝅵N)s   N)s   󱈴N)s   􏈴N)s   򏿾N)s   􏿿N)s   N)s   �N)s   ⿵N)s   ́s   ́)s   ‎N)s   ‪N)s   󠀁N)s   󠁂N)s   foo־barN)s	   fooﵐbarN)s	   fooﹶbars	   foo َbar)s   ا1N)   ا1بrY  rQ  )s   X­ßİ℡ǰ ªΰ s   xssi̇telǰ aΰ )s   Xß㌖İ℡⒟㌀s*   xssキロメートルi̇tel(d)アパートc                       e Zd Zd Zy)NameprepTestc           	      R   ddl m} t        t              D ]X  \  }\  }}|t	        |dd      }|| j                  t        ||       3t	        |dd      }	 | j                   ||      |       Z y # t        $ r+}t        j                  d|dz   t	        |      fz        d }~ww xY w)Nr   )namepreprs  r   zTest 3.%d: %srL   )encodings.idnar]  r   nameprep_testsrN  r   r   r
   rN  r   
TestFailed)r   r]  posorigpreppedes         r   test_nameprepzNameprepTest.test_nameprep  s    +$-n$= C$|tWo6D!!,$?gw@P$$Xd^W= %> ! P!,,_As1v-NOOPs   A22	B&;&B!!B&N)r(   r)   r*   re  r   r   r   r[  r[    s    Pr   r[  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	IDNACodecTestc                     | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d	       y )
N
   python.orgidna
python.org   python.org.python.org.   xn--pythn-mua.org   pythön.org   xn--pythn-mua.org.   pythön.org.r  r   s    r   test_builtin_decodez!IDNACodecTest.test_builtin_decode  sa    ]F3\B^V4mD16:OL2F;=MNr   c                    | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d	       y )
Nrk  rj  ri  rm  rl  ro  rn  rq  rp  r
   ra   r   s    r   test_builtin_encodez!IDNACodecTest.test_builtin_encode  sq    ,,V4mD--f5~F//79MN)008:OPr   c                     | j                  t        d      5  dj                  d       d d d        | j                  t        d      5  dj                  d       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nzway too longsT  xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarj  ztoo longsN   xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)assertRaisesRegexr   rP   r   s    r    test_builtin_decode_length_limitz.IDNACodecTest.test_builtin_decode_length_limit$  s]    ##L.A"**62 B##L*= ((0 >= BA==s   A"A."A+.A7c                      t        j                  d      t        j                  d            }|j	                  d       | j                  |j	                         d       y )Nrj     abc   rf   )rN   ri   r{   r|   rH   r
   )r   rr   s     r   test_streamzIDNACodecTest.test_stream*  sC    $FV$RZZ%78	q	2&r   c                 L   | j                  dj                  t        j                  d dD        d            d       | j                  dj                  t        j                  d dD        d            d       | j                  dj                  t        j                  d	 d
D        d            d       | j                  dj                  t        j                  d d
D        d            d        t        j                  d             }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d       |j                          | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d       y )Nrf   c              3   4   K   | ]  }t        |g        y wr	   rk   r   rt   s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>1  s     &I=auaSz=   ri  rj  rk  c              3   4   K   | ]  }t        |g        y wr	   r  r  s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>5  s     &J>auaSz>r  rl  rm  c              3   4   K   | ]  }t        |g        y wr	   r  r  s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>9       &Q;PauaSz;Pr  rp  rq  c              3   4   K   | ]  }t        |g        y wr	   r  r  s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>=  r  r  s   xn--xams	   ple-9ta.ou	   äxample.s   rgr   Torgs   rg.zorg.)r
   rn   rN   ro   rO   rP   rm   )r   decoders     r   test_incremental_decodez%IDNACodecTest.test_incremental_decode/  s   GGF%%&I=&I6RS	
 	GGF%%&J>&JFST	
 	GGF%%&Q;P&QSYZ[	
 	GGF%%&Q;P&QSYZ[	

 7&..v68
5r:7G.3T2E:
5r:7G/8T2B7r   c                    | j                  dj                  t        j                  dd            d       | j                  dj                  t        j                  dd            d       | j                  dj                  t        j                  dd            d       | j                  dj                  t        j                  dd            d        t        j                  d             }| j                  |j                  d	      d       | j                  |j                  d
      d       | j                  |j                  dd      d       |j                          | j                  |j                  d	      d       | j                  |j                  d      d       | j                  |j                  dd      d       y )Nr   rk  rj  ri  rm  rl  rq  rp  u   äxz	ample.orgs   xn--xample-9ta.rf   Ts   orgz
ample.org.s   xn--xample-9ta.org.)r
   rn   rN   
iterencoder`   ra   rm   )r   encoders     r   test_incremental_encodez%IDNACodecTest.test_incremental_encodeM  sn   HHV&&|V<=	
 	HHV&&}f=>	
 	HHV&&'7@A!	
 	HHV&&'7@A!	

 7&..v680#646HID16:0#657MND137r   c                     	 dj                  dd       dj                  dd       dD ]F  }| j                  t        dj                   d|       | j                  t        dj                  d|       H y )Nrk  rj  rh   ri  )r   r   r   r}  )ra   rP   r   rN  r   rL  s     r   r  zIDNACodecTest.test_errorsi  sh    2FH-VX.#Fi)<)<ffMi$$ff6#r   N)
r(   r)   r*   rr  ru  rx  r|  r  r  r  r   r   r   rg  rg    s'    OQ1'
8<886r   rg  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                  d
d      d        Zd Zd Zd Zd Zy)CodecsModuleTestc                    | j                  t        j                  dd      d       | j                  t        t        j                         | j                  t        j                  d      d       | j                  t
        t        j                  dd       | j                  t        j                  dd      d       | j                  t        j                  d	dd
      d       y )N   latin-1   äöürz  abcr  r  objrW      []r   rL  r   )r
   rN   rP   r   r  r   r   s    r   rI  zCodecsModuleTest.test_decodev  s    	B'	))V]]3v.6,fmmWgN 	?YO'	)y'(K	r   c                    | j                  t        j                  dd      d       | j                  t        t        j                         | j                  t
        t        j                  dd       | j                  t        j                  d      d       | j                  t        t        j                  dd	       | j                  t        j                  dd
      d       | j                  t        j                  dd	d      d       y )Nr  r  r  r   __spam__r  rz  u   ÿffr  r     [ÿ]r   r  r  )r
   rN   ra   r   r  LookupErrorr   r   s    r   rG  zCodecsModuleTest.test_encode  s    ~yA(	*)V]]3+v}}eZHu-v6,fmmXwO 	>IN(	*xJ	 r   c                     | j                  t        t        j                         | j                  t        t        j                  d       y r  )r   r  rN   registerr   s    r   test_registerzCodecsModuleTest.test_register  s,    )V__5)V__b9r   c                 z   d}t        j                         }t        j                  |       | j	                  t
        t        j                  |       |j                  |       |j                          t        j                  |       | j	                  t        t        j                  |       |j                          y )Nnonexistent_codec_name)r   MockrN   r  r   r  r   assert_called_with
reset_mock
unregisterr  assert_not_called)r   namesearch_functions      r   test_unregisterz CodecsModuleTest.test_unregister  s~    '))+()V]]D9**40""$/*+v}}d;))+r   c                     | j                  t        t        j                         | j                  t        t        j                  d       | j                  t        t        j                  d       y )Nr   )r   r  rN   r   r  r   s    r   test_lookupzCodecsModuleTest.test_lookup  sB    )V]]3+v}}jA+v}}c:r   c                     | j                  t        t        j                         | j                  t        t        j                  d       y Nr  )r   r  rN   
getencoderr  r   s    r   test_getencoderz CodecsModuleTest.test_getencoder  0    )V%6%67+v'8'8*Er   c                     | j                  t        t        j                         | j                  t        t        j                  d       y r  )r   r  rN   
getdecoderr  r   s    r   test_getdecoderz CodecsModuleTest.test_getdecoder  r  r   c                     | j                  t        t        j                         | j                  t        t        j                  d       y r  )r   r  rN   ri   r  r   s    r   test_getreaderzCodecsModuleTest.test_getreader  0    )V%5%56+v'7'7Dr   c                     | j                  t        t        j                         | j                  t        t        j                  d       y r  )r   r  rN   r   r  r   s    r   test_getwriterzCodecsModuleTest.test_getwriter  r  r   LC_CTYPEtr_TRc                 f    t        j                  d      }| j                  |j                  d       y )NASCIIr  )rN   r   r
   r  )r   rt   s     r   test_lookup_issue1813z&CodecsModuleTest.test_lookup_issue1813  s&     MM'")r   c                     d}| j                  |t        j                         t        j                  D ]  }t        t        |        y )N),ra   rP   r  	CodecInfoCodecIncrementalEncoderIncrementalDecoderStreamReaderStreamWriterr   r  r  r`   rO   ri   r   register_errorr  strict_errorsreplace_errorsignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsrC  EncodedFiler  ro   r  BOM_BEBOM_LEr  	BOM_UTF16BOM_UTF16_BEBOM_UTF16_LE	BOM_UTF32BOM_UTF32_BEBOM_UTF32_LEBOM32_BEBOM32_LEBOM64_BEBOM64_LEStreamReaderWriterStreamRecoder)assertCountEqualrN   __all__getattr)r   apis     r   test_allzCodecsModuleTest.test_all  s7    
$ 	c6>>2>>CFC  "r   c                 n   | j                  t        j                  t        j                         dD ]j  }| j	                  |      5  t        j                  t        j                  |d      5 }| j                  |t
        j                         d d d        d d d        l y # 1 sw Y   xY w# 1 sw Y   xY w)N)wrr   zr+w+r   r  r  )	r@  r   rA  rB  r  rN   rC  rR   r  )r   rP  files      r   	test_openzCodecsModuleTest.test_open  s~    	(()*:*:;5Dd#KK	 0 0$@D%%dF,E,EF A $# 6@@ $#s$   &B++!BB+B($B++B4	c                    | j                  t        t        j                  dd       | j                  t        t        j                  dd       | j                  t        t        j                  dd       | j                  t        t        j                  dd       dD ]P  }| j                  t        t        j                  dd|       | j                  t        t        j                  dd|       R y )Nr  	undefinedrz  rf   r   )rh   r   r   r   )r   r   rN   ra   rP   r  s     r   test_undefinedzCodecsModuleTest.test_undefined  s    ,ukJ,v{K,r;G,sKHIFluk6;lv{F< Jr   c                 ^   t        j                         }t        j                  d|      5 }| j                  t              5  t        j                  t        j                  dd       d d d         |       j                  j                          d d d        y # 1 sw Y   1xY w# 1 sw Y   y xY w)Nzbuiltins.openrJ  zinvalid-encoding)r   	mock_openpatchr   r  rN   rC  r   rB  closeassert_called)r   r  r  s      r   'test_file_closes_if_lookup_error_raisedz8CodecsModuleTest.test_file_closes_if_lookup_error_raised  st    NN$	ZZ3t"";/I,,d4FG 0 FLL&&(	 43// 43s#   B#&B''B#B 	B##B,N)r(   r)   r*   rI  rG  r  r  r  r  r  r  r  r   run_with_localer  r  r  r  r  r   r   r   r  r  t  sk     :
,;
FFEE WZ1* 2*!.G	<)r   r  c                   $    e Zd Zd Zd Zd Zd Zy)StreamReaderTestc                 l    t        j                  d      | _        t        j                  d      | _        y )Nrs     한
글)rN   ri   r   r{   r|   r}   r   s    r   setUpzStreamReaderTest.setUp  s%    &&w/jj!>?r   c                 ~    | j                  | j                        }| j                  |j                         ddg       y )Nu   한
u   글)r   r}   r
   r   r   r   s     r   test_readlineszStreamReaderTest.test_readlines  s/    KK$X(>?r   c                 8   | j                  t        d            }| j                  t        d      5  t	        j                  |       d d d        | j                  t        d      5  t	        j
                  |       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr  r  )r   r;   rw  r  copydeepcopyr  s     r   	test_copyzStreamReaderTest.test_copy  sj    KK;<=##I~>IIaL ?##I~>MM! ?> ?>>>   B%BBBc                 J   t        t        j                  dz         D ]l  }| j                  |      5  | j	                  t        d            }| j                  t        d      5  t        j                  ||       d d d        d d d        n y # 1 sw Y   xY w# 1 sw Y   xY w)NrL   protocolr  r  )	rM   pickleHIGHEST_PROTOCOLr  r   r;   rw  r  dumpsr   protor   s      r   test_picklezStreamReaderTest.test_pickle   s}    622Q67Eu-KK&C DE++I~FLLE* G .- 8 GF .-#   1B#B:BBBB"	N)r(   r)   r*   r  r  r  r  r   r   r   r  r    s    @@+r   r  c                       e Zd Zd Zd Zd Zy)StreamWriterTestc                 8    t        j                  d      | _        y )Nrs  )rN   r   r   r   s    r   r  zStreamWriterTest.setUp
  s    &&w/r   c                 8   | j                  t        d            }| j                  t        d      5  t	        j                  |       d d d        | j                  t        d      5  t	        j
                  |       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   r  )r   r;   rw  r  r  r  r  s     r   r  zStreamWriterTest.test_copy  sh    KKc
###I~>IIaL ?##I~>MM! ?> ?>>>r  c                 J   t        t        j                  dz         D ]l  }| j                  |      5  | j	                  t        d            }| j                  t        d      5  t        j                  ||       d d d        d d d        n y # 1 sw Y   xY w# 1 sw Y   xY w)NrL   r  r   r  )	rM   r  r  r  r   r;   rw  r  r  r  s      r   r  zStreamWriterTest.test_pickle  s{    622Q67Eu-KKc
+++I~FLLE* G .- 8 GF .-r  Nr(   r)   r*   r  r  r  r   r   r   r	  r	    s    0+r   r	  c                       e Zd Zd Zd Zd Zy)StreamReaderWriterTestc                 l    t        j                  d      | _        t        j                  d      | _        y )Nlatin1rs  )rN   ri   r   r   r   r   s    r   r  zStreamReaderWriterTest.setUp  s&    &&x0&&w/r   c                 l   t        j                  t        d      | j                  | j                        }| j                  t        d      5  t        j                  |       d d d        | j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   r  )	rN   r  r;   r   r   rw  r  r  r  r  s     r   r  z StreamReaderWriterTest.test_copy"  s{    %%eCj$++t{{K##I/CDIIaL E##I/CDMM! ED EDDDs   B?B*B'*B3c                 ~   t        t        j                  dz         D ]  }| j                  |      5  t	        j
                  t        d      | j                  | j                        }| j                  t        d      5  t        j                  ||       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)NrL   r  r   r  )rM   r  r  r  rN   r  r;   r   r   rw  r  r  r  s      r   r  z"StreamReaderWriterTest.test_pickle)  s    622Q67Eu---eCj$++t{{S++I7KLLLE* M .- 8 ML .-s$   AB3=B'B3'B0,B33B<	Nr  r   r   r   r  r    s    0+r   r  c                       e Zd Zd Zy)EncodedFileTestc                 T   t        j                  d      }t        j                  |dd      }| j	                  |j                         d       t        j                         }t        j                  |dd      }|j                  d       | j	                  |j                         d       y )Nr  rU  rs  s   \
  r     ü   )r{   r|   rN   r  r
   rH   rC   r   r   r   efs      r   
test_basiczEncodedFileTest.test_basic3  s}    JJ45;8$;<JJL7I6
w/r   N)r(   r)   r*   r  r   r   r   r  r  1  s    0r   r  )er  big5	big5hkscscharmapcp037cp1006cp1026cp1125cp1140cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258cp424cp437cp500cp720cp737cp775cp850cp852cp855cp856cp857cp858cp860cp861cp862cp863cp864cp865cp866cp869cp874cp875cp932cp949cp950euc_jis_2004euc_jisx0213euc_jpeuc_krgb18030gb2312gbk	hp_roman8hzrj  
iso2022_jpiso2022_jp_1iso2022_jp_2iso2022_jp_2004iso2022_jp_3iso2022_jp_ext
iso2022_kr	iso8859_1
iso8859_10
iso8859_11
iso8859_13
iso8859_14
iso8859_15
iso8859_16	iso8859_2	iso8859_3	iso8859_4	iso8859_5	iso8859_6	iso8859_7	iso8859_8	iso8859_9johabkoi8_rkoi8_tkoi8_ukz1048latin_1mac_cyrillic	mac_greekmac_iceland
mac_latin2	mac_romanmac_turkishpalmosptcp154rA  raw_unicode_escape	shift_jisshift_jis_2004shift_jisx0213tis_620unicode_escapeutf_16	utf_16_be	utf_16_leutf_7utf_8mbcs_encodembcs
oem_encodeoemrA  c                       e Zd Zd Zej
                   ej                  edu d      d               Z	d Z
d Zd Zd Zd	 Zy)
BasicUnicodeTestc           	         d}t         D ]  }t        j                  |      j                  }|j	                  d      r|dz  }n|dk(  rd}|dk7  r2| j                  |j                  dd      |j                  dd              t        j                  |      |      \  }}| j                  |t        |      d|z          t        j                  |      |      \  }}| j                  ||d|z         |t        vrt        d      } t        j                  |      |      }d}	|D ]R  }
|j                  |
       |j                         }| j                  t!        |      t"        u t!        |             |	|z  }	T t        d      } t        j$                  |      |      }d	}|	D ]0  }
|j                  t#        |
g             ||j                         z  }2 | j                  ||d|z         |t        vs	  t        j&                  |             d}	|D ]  }
|	j)                  |
      z  }	 |	j)                  d	d
      z  }	 t        j*                  |             d	}|	D ]   }
|j-                  t#        |
g            z  }" |j-                  dd
      z  }| j                  ||d|z         d	j/                  t        j0                  t        j2                  ||      |            }| j                  ||d|z         d	j/                  t        j0                  t        j2                  d	|      |            }| j                  |d	       |dvsF	  t        j&                  |      d      dj/                  fd|D              }	 t        j*                  |      d      d	j/                  fd|	D              }| j                  ||d|z          y # t4        $ r Y w xY w# t4        $ r Y w xY w)Nabc123_codecrj  r  r   -encoding=%rr   rf   Trj  r  r   c              3   @   K   | ]  }j                  |        y wr	   ra   )r   rt   r  s     r   r   z/BasicUnicodeTest.test_basics.<locals>.<genexpr>  s     0NAq1BA   c              3   T   K   | ]  }j                  t        |g             ! y wr	   rP   rk   )r   rt   r  s     r   r   z/BasicUnicodeTest.test_basics.<locals>.<genexpr>   s)      0H9FA 18uaSz0J9F   %()all_unicode_encodingsrN   r   r  endswithr
   r   r  r   r  broken_unicode_with_statefulr;   r   rC   rH   rU   typerk   ri   r`   ra   rO   rP   rn   ro   r  r  )r   rG   rW   r  r   rF   rB   rq   r   encodedresultrt   chunkr   decodedresultrs   r  r  s                  @@r   test_basicszBasicUnicodeTest.test_basics  s   --H==*//D  * Y& v~  !1!1#s!;!%c3!79 4))(3A6IQT3q6=8+CD7F--h7:MUDUA}x'?@;;#J3))(3A6 #ALLOFFHEOODK5$8$u+F!U*M	 
 #J3))(3A6 "&AGGE1#J'!V[[]2M '   =83KL;;1Df::8DFG
 %(M%):: !W^^B%==MDf::8DFG$&M*%qc
)CC +!W^^C%>>M$$]A%2X%=?  WWV%6%6"--a:H&F GF$$VQ0HI  WWV%6%6"--b(;X&G HF$$VR0#33
C"H&">">x"H"R ),0NA0N(N"H&">">x"H"R(* 0H9F0H )H(()6)ACW .L # < ' s$   9OO%	O"!O"%	O21O2Nzneed _testcapi modulec                    d}t         D ]7  }|t        vs	 t        j                  |      d}|D ]  }|j	                  |      z  } |j	                  dd      z  }t        j
                  |      d}|D ]   }|j                  t        |g            z  }" |j                  dd      z  }| j                  ||d|z         |dvs	 t        j                  |d      dj                  fd|D              }t        j
                  |d      dj                  fd	|D              }| j                  ||d|z         : y # t        $ r Y w xY w# t        $ r Y Ww xY w)
Nr  r   rf   Tr  r  r   c              3   @   K   | ]  }j                  |        y wr	   r  )r   rt   cencoders     r   r   z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>%  s     0OQ1CQr  c              3   T   K   | ]  }j                  t        |g             ! y wr	   r  )r   rt   cdecoders     r   r   z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>'  s)      0H9FA 19qc
0K9Fr  )r  r  	_testcapicodec_incrementalencoderra   codec_incrementaldecoderrP   rk   r
   r  rn   )r   rG   rW   r  rt   r  r  r  s         @@r   test_basics_capiz!BasicUnicodeTest.test_basics_capi  s    --H;;?(AA(KH
 %(M%);; !X__R%>>M(AA(KH$&M*%s)DD +!X__S$%??M$$]A%2X%=? #33
C#,#E#EhPX#Y ),0OQ0O(O#,#E#EhPX#Y(* 0H9F0H )H(()6)ACA .
 # ( ' s#   EE	EE	E#"E#c                 D   ddz  }t         D ]  }|dk(  r	|t        v r t        j                  |      t	        j
                  |j                  |                  }t        d      D ]6  }|j                  dd       |j                         }| j                  ||       8  y )Nz%s
%s
)X  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123X  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456rj  r   r   )r  r  rN   ri   r{   r|   ra   rM   seekrH   r
   )r   rG   rW   r   tr   s         r   	test_seekzBasicUnicodeTest.test_seek,  s    55-H6!77/V%%h/

188H;M0NOF1XAq!{{}  D)	  .r   c                     t         D ]I  }t        j                  |      }| j                  t        |       |dvs3| j                  t        |d       K y )N)rj  rA  r  )r  rN   r  r   r  )r   rW   r  s      r   test_bad_decode_argsz%BasicUnicodeTest.test_bad_decode_args;  sG    -H''1Gi133!!)Wb9	 .r   c                 p    t         D ]-  }t        j                  |      }| j                  t        |       / y r	   )r  rN   r  r   r  )r   rW   r  s      r   test_bad_encode_argsz%BasicUnicodeTest.test_bad_encode_argsB  s,    -H''1Gi1 .r   c                 ^    ddl m} t        |j                        }| j	                  ||       y )Nr   )r#  )	encodingsr#  r  encoding_tabler
   )r   r#  
table_types      r   "test_encoding_map_type_initializedz3BasicUnicodeTest.test_encoding_map_type_initializedG  s%    $&//0
Z0r   c                     d}t         D ]O  }|t        vs| j                  |||j                  |             | j	                  |||j                  |             Q y )Nr  )r  r  r^   ra   rb   )r   rX   rW   s      r   r  z#BasicUnicodeTest.test_decoder_stateM  sP    -H;;001ahhx>PQ001ahhx>PQ .r   )r(   r)   r*   r  r   cpython_onlyunittestskipIfr  r  r  r  r  r  r  r   r   r   r  r    s]    NC` X__Y$&(?@#C A #CJ*:2
1Rr   r  c                       e Zd Zd Zd Zd Zy)CharmapTestc                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        t        j                  ddd       | j                  t        t        j                  ddd       | j                  t        j                  dd	d      d
       | j                  t        j                  dd	d      d
       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       t        t        d            }| j                  t        j                  |dd      dt        |      f       y )N    rh   r  r  r{     􏿿bcr  r{  abu   ab￾r   u   ab�r{  r   zab\x02r{  r   r  r{  r  rf   )r
   rN   charmap_decoder   r   rk   rM   r   r   allbytess     r   test_decode_with_string_mapz'CharmapTest.test_decode_with_string_mapW  s   !!/8UC	

 	!!/8^L	

 	,!!?Hd	
 	,!!?Hj	
 	!!/9dC	

 	!!/9jI	

 	!!/3EtL	

 	!!/3EzR	

 	!!/8TB	

 	!!/8ZH	

 s$!!(Hb9X	
r   c                    | j                  t        j                  dddddd      d       | j                  t        j                  dddd	d
d      d       | j                  t        j                  dddddd      d       | j                  t        j                  dddddd      d       | j                  t        t        j                  ddddd       | j                  t        t        j                  ddddd d       | j                  t        t        j                  dddddd       | j                  t        j                  ddddd      d       | j                  t        j                  ddddd d      d       | j                  t        j                  dddddd      d       | j                  t        j                  ddddd      d       | j                  t        j                  ddddd d      d       | j                  t        j                  dddddd      d       | j                  t        j                  ddddd      d       | j                  t        j                  ddddd d      d       | j                  t        j                  dddddd      d       t        t        d            }| j                  t        j                  |di       dt        |      f       | j                  t        dt        j                  dddd	dd       | j                  t        dt        j                  dddd	dd       y )Nr  rh   r   r   rt   r   rL   r   r  AaBbCc)AaBbCcr{     􏿿r  rf   r  r   rL   u   ￾r   r  r   r  r   r  z.character mapping must be in range\(0x110000\)r   iɚ;)
r
   rN   r  r   r   rk   rM   r   rw  r  r  s     r   test_decode_with_int2str_mapz(CharmapTest.test_decode_with_int2str_map  st   !!/8&)cc":<	
 	!!/8&*t"=?	
 	!!/8&2ss"CE	
 	!!/8&)cb"9;	
 	,!!?H'*s#3	

 	,!!?H'*st#<	
 	,!!?H'*sx#@	

 	!!/9&)c"24	
 	!!/9&)cd";=	
 	!!/9&)ch"?A	
 	!!/3E&)c"24	
 	!!/3E&)cd";=	
 	!!/3E&)ch"?A	
 	!!/8&)c"24	
 	!!/8&)cd";=	
 	!!/8&)ch"?A	
 s$!!(Hb9X	

 	y>!!X34B'?	
 	y>!!X34I'F	
r   c           
         t        d      }t        d      }t        d      }| j                  t        j                  dd|||d      d       | j                  t        j                  ddd||d      d	       | j                  t        j                  ddt        j
                  ||d      t        t        j
                        d
z   df       | j                  t        t        j                  ddt        j
                  dz   ||d       | j                  t        t        j                  dd||d       | j                  t        t        j                  dd||dd       | j                  t        j                  dd||d      d       | j                  t        j                  dd||dd      d       | j                  t        j                  dd||d      d       | j                  t        j                  dd||dd      d       | j                  t        j                  dd||d      d       | j                  t        j                  dd||dd      d       y )Nr   r   rt   r  rh   r  r  i r  bcr{  rL   r  i  r   r  r   r  r   r  )
ordr
   rN   r  r  
maxunicodechrr   r  r   )r   r   r   rt   s       r   test_decode_with_int2int_mapz(CharmapTest.test_decode_with_int2int_map	  sV   HHH!!/8&'A!"46	
 	!!/8&.1";=	
 	!!/8&)nnq"AC 4'+	
 	)!!?H'*~~'9aA#F	

 	,!!?H'(Q<	

 	,!!?H'(Q6#:	

 	!!/9&'A,0	
 	!!/9&'A&"9;	
 	!!/3E&'A,0	
 	!!/3E&'A&"9;	
 	!!/8&'A,0	
 	!!/8&'A&"9;	
r   N)r(   r)   r*   r  r  r  r   r   r   r  r  V  s    5
nr
hI
r   r  c                       e Zd Zd Zd Zy)WithStmtTestc                     t        j                  d      }t        j                  |dd      5 }| j	                  |j                         d       d d d        | j                  |j                         y # 1 sw Y   %xY w)Nr  r  rs  r  )r{   r|   rN   r  r
   rH   rU   closedr  s      r   test_encodedfilezWithStmtTest.test_encodedfileO	  sX    JJ{#9g6"RWWY0 7! 76s   !A22A;c                    t        j                  d      }t        j                  d      }t        j                  ||j
                  |j                  d      5 }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nr  rs  rh      ü)	r{   r|   rN   r   r  streamreaderstreamwriterr
   rH   )r   r   r8   srws       r   test_streamreaderwriterz$WithStmtTest.test_streamreaderwriterU	  sn    JJ{#}}W%&&q$*;*;'+'8'8(DGJSXXZ0D D Ds   !BB
N)r(   r)   r*   r  r  r   r   r   r  r  N	  s    "1r   r  c                       e Zd Zd Zd Zy)	TypesTestc                 
   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g}t        t         d      r|j                  t         j                         |D ]  }| j!                  t"        |d        y )Nmbcs_decoder   )rN   r  utf_8_decoder^  ro  r  r  r"  r/  utf_32_ex_decodelatin_1_decodeascii_decoder  hasattrr   r  r   r  )r   decodersr  s      r   test_decode_unicodezTypesTest.test_decode_unicode^	  s     ######  ######!!!!
 6=)OOF../Gi%8  r   c                    | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j	                  t
        t        j                  d       | j                  t        j                  dd      d       | j                  t        j                  dd      d	       | j	                  t
        t        j                  d       | j                  t        j                  dd      d       | j                  t        j                  dd      d	       y )
Nz\u1234)u   ሴr   s   \u1234
   \U00110000z
\U00110000r   r   r   r   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r   )r
   rN   unicode_escape_decoderaw_unicode_escape_decoder   r   r   s    r   test_unicode_escapezTypesTest.test_unicode_escapes	  s%    	55i@-P55jA=Q99)DmT99*E}U,f.J.JN[55mYOQ_`55mEWXJ	L 	,f.N.NP^_99-SUcd99-I[\J	Lr   N)r(   r)   r*   r  r  r   r   r   r  r  ]	  s    9*Lr   r  c                   D    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)UnicodeEscapeTestzunicode-escapeNc                     | j                  t        j                  d      d       | j                  t        j                  d      d       y Nrf   r  r   rf   r   )r
   rN   unicode_escape_encoder  r   s    r   r  zUnicodeEscapeTest.test_empty	  s8    55b98D55c:GDr   c                     t         j                  }t        dd      D ]5  }|dk7  s	| j                   |t	        |            t        |g      df       7 y )Nr&     \   rL   )rN   r  rM   r
   r  rk   r   ra   r   s      r   test_raw_encodez!UnicodeEscapeTest.test_raw_encode	  sF    --r3AH}  A%*aA  r   c                     t         j                  }t        d      D ];  }|dk7  s	| j                   |t	        |g      dz         t        |      dz   df       = y )Nr  r  r  0r   )rN   r  rM   r
   rk   r  r	  s      r   test_raw_decodez!UnicodeEscapeTest.test_raw_decode	  sO    --sAH}  qc
T(9!:SVc\1<MN r   c                    t         j                  }t        | |      } |dd        |dd        |dd        |dd       t        d	      D ]3  }t	        |      d
vs |t	        |      d|z  j                                5 t        dd      D ]%  } |t	        |      d|z  j                                '  |dd        |dd       y )N	s   \tr   s   \nr   s   \r\s   \\r&  z	
r   r  r     €   \u20ac   𝄠
   \U0001d120)rN   r  r   rM   r  ra   r   ra   r   r   s       r   test_escape_encodez$UnicodeEscapeTest.test_escape_encode	  s    --tV,dFdFdFdFrA1vX%c!fy1}4467  sCA#a&9q=0023 !h
#lN+r   c                    t         j                  }t        | |      } |dd        |dd        |dd        |dd        |d	d
        |dd        |dd        |dd        |dd        |dd        |dd        |dd
        |dd        |dd        |dd        |dd        |d d!        |d"d        |d#d!        |d$d%        |d&d'       y )(Nr  r   r  z["]r  z[']r  z[\]r  z[]r  z[]r  z[	]r  z[
]r  z[]r  z[]r  z[]r  r  z[8]r  z[!]r  z[!8]r  z[A]r  z[A0]r  r  r  r   r  r  )rN   r  r   r   s      r   test_escape_decodez$UnicodeEscapeTest.test_escape_decode	  s    --tV,ihhhh!h!h!h!h!h!h!h!i#ij&!j% k6"j% k6"j(#nl+r   c           
         t         j                  }t        | |      }t        dd      D ]  }t	        |g      }|dvr:| j                  t        d|z        5   |d|z   dt        |      z          d d d        |j                         dvs`| j                  t        d|dz
  z        5   |d|j                         z   dt        |dz
        z          d d d         | j                  t        d	      5   |d
d       d d d        | j                  t              5   |dd       d d d        | j                  t        d      5 } |dd       d d d        t        dd      D ]9  }| j                  t        d|z        5   |d|z  t        |             d d d        ; | j                  t        d      5  | j                   |dd      d       d d d        | j                  t        d      5  | j                   |dd      d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr#  r$  s	   abfnrtuvxr%  r  r  s   UNr&  r'  r(  z\8r)  z\9r*  r+  u   \úr  r  r,  r-  r/  r0  r   )z\zr  r1  r2  )   Łr   )rN   r  r   rM   rk   r4  r5  r  r6  r7  r
   r8  s         r   test_decode_warningsz&UnicodeEscapeTest.test_decode_warnings	  sE   --tV,r3Aqc
A$**+=9A=?%!)TCF]3? wwy%**+=9QrTBD%!'')+TC"I-=>D D   ""#502&% 2 01&%  2""#5358:)X&5 uf%A&&'9;a?Agk3q6*A A &
 ""#502VHh7D2 ""#58:VJ9=I: :/? ?D D2 2 215 5A A2 2: :s`   H	%*H/
H#
H0>
H=8I	.I&I!	H	H 	#H-0H:=I	I	I!I*c           	      .   t         j                  }dD ]  \  }}t        |      D ]  }| j                  t        |d|z   d|z  z          | j                  t        |d|z   d|z  z   dz          d|z   d|z  z   dz   |z   d|z  z   }| j                   ||d      dt        |      f       | j                   ||d	      d
t        |      f         | j                  t        |d       | j                   |dd      d       | j                   |dd	      d       y )N))   xr      ur     Ur  r  r     [\   ]   ]\r   r   r      [�]�r  rf   r   r  )rN   r  rM   r   r   r
   r   r   rP   rt   rZ   rY   r   s         r   test_decode_errorsz$UnicodeEscapeTest.test_decode_errors	  s    --3DAq1X!!"4f"'!)d1f"46!!"4f"(1*tAv"5"<>zDF*V3a7$q&@  h!7$D	9JK  i!8"2CI!>@  4 	,fnE98D	:NKr   c                 ,    | j                  dg d       y )N    	
\ÿ￿𐀀) rf   rf   rf   r   r    	r   	
r   	
r   	
\r  r  r      	
\ÿr  r  r  r  r  
    	
\ÿ￿r  r  r  r  r  r  r  r  r  r  r   r   s    r   r   zUnicodeEscapeTest.test_partial	  r  r   )r(   r)   r*   rW   r   r  r  r  r  r  r
  r  r   r   r   r   r  r  	  s;    HEBO,,2JBL %
r   r  c                   >    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zy)
RawUnicodeEscapeTestzraw-unicode-escapeNc                     | j                  t        j                  d      d       | j                  t        j                  d      d       y r  )r
   rN   raw_unicode_escape_encoder  r   s    r   r  zRawUnicodeEscapeTest.test_empty 
  s8    99"=xH99#>Hr   c                     t         j                  }t        d      D ]/  }| j                   |t	        |            t        |g      df       1 y )Nr  rL   )rN   r#  rM   r
   r  rk   r  s      r   r  z$RawUnicodeEscapeTest.test_raw_encode$
  s=    11sAVCF^eQCj!_= r   c                     t         j                  }t        d      D ]5  }| j                   |t	        |g      dz         t        |      dz   df       7 y )Nr  r  r  r   )rN   r  rM   r
   rk   r  r	  s      r   r  z$RawUnicodeEscapeTest.test_raw_decode)
  sH    11sAVE1#J$56Q#q8IJ r   c                     t         j                  }t        | |      }t        d      D ])  }|dvs |dt	        |      z   dt        |g      z          +  |dd        |dd       y )	Nr     uUr  r  r   r  r  r  )rN   r#  r   rM   r  rk   r  s       r   r  z'RawUnicodeEscapeTest.test_escape_encode.
  sa    11tV,sA~dSVmUUA3Z%78  	h
#lN+r   c                     t         j                  }t        | |      }t        d      D ])  }|dvs |dt	        |g      z   dt        |      z          +  |dd        |dd       y )	Nr  r'  r  r  r  r   r  r  )rN   r  r   rM   rk   r  )r   rP   r   r   s       r   r  z'RawUnicodeEscapeTest.test_escape_decode7
  sa    11tV,sA~eeQCj($Q-8  	j(#nl+r   c           	      .   t         j                  }dD ]  \  }}t        |      D ]  }| j                  t        |d|z   d|z  z          | j                  t        |d|z   d|z  z   dz          d|z   d|z  z   dz   |z   d|z  z   }| j                   ||d      dt        |      f       | j                   ||d	      d
t        |      f         | j                  t        |d       | j                   |dd      d       | j                   |dd	      d       y )N)r  r  r  r  r  r  r  r   r   r   r  r  r  r  )rN   r  rM   r   r   r
   r   r  s         r   r  z'RawUnicodeEscapeTest.test_decode_errors@
  s    11(DAq1X!!"4f"'!)d1f"46!!"4f"(1*tAv"5"<>zDF*V3a7$q&@  h!7$D	9JK  i!8"2CI!>@  ) 	,fnE98D	:NKr   c                 ,    | j                  dg d       y )Nr  )r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   s    r   r   z!RawUnicodeEscapeTest.test_partialP
  s    .	
r   )r(   r)   r*   rW   r   r  r  r  r  r  r  r   r   r   r   r!  r!  
  s3    #HI>
K
,,L 
r   r!  c                       e Zd Zd Zy)EscapeEncodeTestc                 ^   g d}|D ]E  \  }}| j                  |      5  | j                  t        j                  |      |       d d d        G | j	                  t
        t        j                  d       | j	                  t
        t        j                  t        d             y # 1 sw Y   xY w)N))r   r  )   foobar)r.  r   )s	   spam eggs)s   spam\x00eggs	   )s   a'b)s   a\'br{  )s   b\c)s   b\\cr{  )s   c
d)s   c\ndr{  )s   de)s   d\rer{  )s   fg)s   f\x7fgr{  r  r   r  )r  r
   rN   escape_encoder   r  r  )r   r`  r   outputs       r   r  z#EscapeEncodeTest.test_escape_encodep
  s    	
 "LD&4(  !5!5d!;VD )( " 	)V%9%96B)V%9%99W;MN )(s   &B##B,	N)r(   r)   r*   r  r   r   r   r,  r,  n
  s    Or   r,  c                   $    e Zd Zd Zd Zd Zd Zy)SurrogateEscapeTestc                    | j                  dj                  dd      d       | j                  dj                  dd      d       | j                  dj                  dd      d       | j                  dj                  dd      d       y )N   foobarrs  r}  	   foobars   u	   r
   rP   ra   r   s    r   	test_utf8zSurrogateEscapeTest.test_utf8
  s    --g7HI'	)..w8IJ&	( 	//9JK-	/-44W>OP(	*r   c                     | j                  dj                  dd      d       | j                  dj                  dd      d       y )Nr5  r  r}  r6  r7  r   s    r   r  zSurrogateEscapeTest.test_ascii
  sD    --g7HI'	)..w8IJ&	(r   c                     | j                  dj                  dd      d       | j                  dj                  dd      d       y )Ns   foobarz
iso-8859-3r}  u	   foobarr7  r   s    r   test_charmapz SurrogateEscapeTest.test_charmap
  sD    --l<MN'	)..|=NO&	(r   c                 H    | j                  dj                  dd      d       y )Nu   r  r}  s   rt  r   s    r   test_latin1zSurrogateEscapeTest.test_latin1
  s$    9@@L]^0	2r   N)r(   r)   r*   r8  r  r;  r=  r   r   r   r3  r3  
  s    
*((2r   r3  c                       e Zd Zd Zy)BomTestc                 v   d}d}| j                  t        j                  t        j                         |D ]  }t	        j
                  t        j                  d|      5 }|j                  |       |j                  |       |j                  d       | j                  |j                         |dz         |j                  d       | j                  |j                         |dz         d d d        t	        j
                  t        j                  d|      5 }|j                  |d          | j                  |j                         d       |j                  d       |j                  |       |j                  d       | j                  |j                         |       d d d        t	        j
                  t        j                  d|      5 }|j                  j                  |d          | j                  |j                  j                         d       |j                  j                  d       |j                  j                  |       |j                  d       | j                  |j                         |       d d d        t	        j
                  t        j                  d|      5 }|j                  |       |j                  |j                                |j                  |       |j                  d       | j                  |j                         |dz         d d d        t	        j
                  t        j                  d|      5 }|j                  j                  |       |j                  j                  |j                  j                                |j                  j                  |       |j                  d       | j                  |j                         |dz         d d d         y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N
1234567890)r3  rU  rl  r   r  r+  r  r?  r   r   )r@  r   rA  rB  rN   rC  rC   r  r
   rH   assertNotEqualtellr   )r   r   r`  rW   r   s        r   
test_seek0zBomTest.test_seek0
  s    		(()*:*:;HY--thG1q	  4!84q	  4!84 H Y--thG1Q ##AFFHa0q	q	  40 H Y--thG1tAw'##AHHMMOQ7a t$q	  40 H Y--thG1qvvx q	  4!84 H Y--thG1t$ahhmmo.t$q	  4!84 HGO GG HG HG HG HGsA   BO:BPB0P,A6P!BP.:P	P	P	!P+	.P8	N)r(   r)   r*   rD  r   r   r   r?  r?  
  s    55r   r?  )base64_codecuu_codecquopri_codec	hex_codecbase64base_64uu)quopriquoted_printablequotedprintablehexrot13)rE  rF  rG  rH  rot_13
zlib_codecrj   zlib	bz2_codecbz2c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ej                  ed	      d
        Zd Zd Zd Zd Zy)TransformCodecTestc                    t        t        d            }t        D ]  }| j                  |      5   t	        j
                  |      |      \  }}| j                  |t        |              t	        j                  |      |      \  }}| j                  |t        |             | j                  ||       d d d         y # 1 sw Y   xY w)Nr  r?  )	rk   rM   bytes_transform_encodingsr  rN   r  r
   r   r  )r   binputrW   orF   rY   s         r   r  zTransformCodecTest.test_basics
  s    uSz"1Hx07F--h7?	D  s6{37F--h7:	D  s1v.  F+ 10 200s   BC  C		c                 4   t         D ]  }| j                  |      5  t        j                  d|      } t        j                  |      t        j                  |            }|j                         }| j                  |d       d d d         y # 1 sw Y   xY wNr?  r  )	rY  r  rN   ra   ri   r{   r|   rH   r
   r   rW   sinr   souts        r   	test_readzTransformCodecTest.test_read	  ss    1Hx0mmGX63))(3BJJsOD{{}  w/	 10 200   A'BB	c                 4   t         D ]  }| j                  |      5  t        j                  d|      } t        j                  |      t        j                  |            }|j                         }| j                  |d       d d d         y # 1 sw Y   xY wr]  )	rY  r  rN   ra   ri   r{   r|   r   r
   r^  s        r   r   z TransformCodecTest.test_readline  st    1Hx0mmGX63))(3BJJsOD(  w/	 10 200rb  c                    d}t         D ]  }| j                  |      5  |}t        |      }t        j                  ||      }t        j                  ||      }| j                  ||       t        |      }t        j                  ||      }| j                  ||       t        j                  ||      }| j                  ||       d d d         y # 1 sw Y   xY w)Ns   12345r?  )rY  r  
memoryviewrN   ra   r
   rP   )r   originalrW   r   viewview_encodedview_decodeds          r   test_buffer_api_usagez(TransformCodecTest.test_buffer_api_usage  s      1Hx0!$'}}T84%}}T8<  t4!$'}}T84  x0%}}T8<  t4 10 200s   B'CC	c                 T   d}t         D ]  }| j                  |      5  d}|j                  |      }| j                  t        |      5 }|j                  |       d d d        | j                  j                  j                         d d d         y # 1 sw Y   9xY w# 1 sw Y   xY w)Nzbad input typer?  zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	rY  r  formatrw  r  ra   assertIsNonerO  	__cause__)r   	bad_inputrW   fmtmsgfailures         r   /test_text_to_binary_denylists_binary_transformszBTransformCodecTest.test_text_to_binary_denylists_binary_transforms+  s    $	1Hx0Kjj*++K=$$X. >!!'"3"3"="=> 10 2
 >=	 10s#   *BB-BBBB'	c                     d}| j                  t        |      5  dj                  d       d d d        y # 1 sw Y   y xY w)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messagerQ  )rw  r  ra   r   rq  s     r   -test_text_to_binary_denylists_text_transformsz@TransformCodecTest.test_text_to_binary_denylists_text_transforms7  s4    C##K5%,,X6 655s   4=c                    d}t         D ]  }| j                  |      5  t        j                  ||      }d}|j	                  |      }| j                  t        |      5  |j                  |       d d d        | j                  t        |      5  t        |      j                  |       d d d        d d d         y # 1 sw Y   MxY w# 1 sw Y    xY w# 1 sw Y   xY w)Ns6   encode first to ensure we meet any format restrictionsr?  zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	rY  r  rN   ra   rl  rw  r  rP   r  )r   r   rW   encoded_datarp  rq  s         r   /test_binary_to_text_denylists_binary_transformszBTransformCodecTest.test_binary_to_text_denylists_binary_transforms>  s     I1Hx0%}}T8<Kjj*++K= ''1 >++K=l+228< > 10 2 >=== 10s<   A CB<0CC)C<CCCCC	c                 <   dt        d      fD ]t  }| j                  |      5  d}| j                  t        |      5 }|j	                  d       d d d        | j                  j                  j                         d d d        v y # 1 sw Y   9xY w# 1 sw Y   xY w)Ns	   immutables   mutable)ro  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsrQ  )r  r  rw  r  rP   rm  rO  rn  )r   ro  rq  rr  s       r   -test_binary_to_text_denylists_text_transformsz@TransformCodecTest.test_binary_to_text_denylists_text_transformsM  s    &	*(=>I	2K++K=$$X. >!!'"3"3"="=> 32 ? >= 32s"   BB-BBBB	zRequires zlib supportc                     d}| j                  t        j                        5 }t        j                  dd       d d d        | j                  |j                  j                  d          y # 1 sw Y   3xY w)Nz'decoding with 'zlib_codec' codec failed   hellorR  r   )r   rS  errorrN   rP   r
   rO  	__notes__)r   rq  rr  s      r   test_custom_zlib_error_is_notedz2TransformCodecTest.test_custom_zlib_error_is_notedW  sZ     8tzz*gMM(L1 +g//99!<= +*   A++A4c                     dd l }d}| j                  |j                        5 }t        j                  dd       d d d        | j                  |j                  j                  d          y # 1 sw Y   3xY w)Nr   z&decoding with 'hex_codec' codec failedr}  rH  )binasciir   ErrorrN   rP   r
   rO  r  )r   r  rq  rr  s       r   test_custom_hex_error_is_notedz1TransformCodecTest.test_custom_hex_error_is_noted_  s[    6x~~.'MM(K0 /g//99!<= /.r  c                 8   t         j                         D ]w  \  }}t        j                  |      j                  }|D ]N  }| j                  |      5  t        j                  |      }| j                  |j                  |       d d d        P y y # 1 sw Y   ]xY w)N)alias)transform_aliasesitemsrN   r   r  r  r
   )r   
codec_namealiasesexpected_namer  r8   s         r   test_aliaseszTransformCodecTest.test_aliasesh  sy    #4#:#:#<J"MM*5::M \\\.!==/D$$TYY> /. ! $= /.s   2BBc                     t        j                  dd      }| j                  |d       d}| j                  t        j                  |d      |       y )Ns   space tab	eol 
zquopri-codecs   space=20tab=09eol=20
s   space tab eol
)rN   ra   r
   rP   )r   rv   	unescapeds      r   test_quopri_statelessz(TransformCodecTest.test_quopri_statelessp  sD    -- 4nE";<&	y.A9Mr   c                 P    | j                  t        t        j                  dd       y )Nr   zuu-codec)r   rL  rN   rP   r   s    r   test_uu_invalidz"TransformCodecTest.test_uu_invalidx  s    *fmmS*Er   N)r(   r)   r*   r  ra  r   rj  rs  rv  ry  r{  r  
skipUnlessrS  r  r  r  r  r  r   r   r   rW  rW  
  sd    	,005$
?7=? X67> 8>>?NFr   rW  c                 ,    t         j                  |       S r	   )_TEST_CODECSget)r  s    r   _get_test_codecr    s    J''r   c                       e Zd Zd Zd Zd Zej                  d        Zd Z	e
fdZd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)ExceptionNotesTestc                     d| _         t        j                  t               | j	                  t        j
                  t               t        | _        y )Nexception_notes_test)r  rN   r  r  r@  r  RuntimeErrorobj_to_raiser   s    r   r  zExceptionNotesTest.setUp  s3    0())?; )r   c                     t         j                  | j                  d        t        j                  j                  | j                  d        y r	   )r  popr  r  _cacher   s    r   tearDownzExceptionNotesTest.tearDown  s0    $/T__d3r   c                 n    t        j                  ||| j                        }|t        | j                  <   y )N)r  )rN   r  r  r  )r   ra   rP   
codec_infos       r   	set_codeczExceptionNotesTest.set_codec  s+    %%ff+/??<
(2T__%r   c              #   2  K   dj                  || j                        }| j                  |      5 }| d d d        | j                  |j                  j
                  d          |j                  j
                  j                          y # 1 sw Y   WxY ww)Nz{} with {!r} codec failedr   )rl  r  r   rM  rO  r  clear)r   	operationexc_typerq  full_msgcaughts         r   assertNotedzExceptionNotesTest.assertNoted  sx     /66T__.x(FL )h 0 0 : :1 =>""((* )(s   .BBABBBc                     | j                   r	   )r  )r   argskwdss      r   	raise_objzExceptionNotesTest.raise_obj  s    r   c                    || _         | j                  | j                  | j                         | j                  d||      5  dj	                  | j
                         d d d        | j                  d||      5  t        j                  d| j
                         d d d        | j                  d||      5  dj                  | j
                         d d d        | j                  d||      5  t        j                  d| j
                         d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   y xY w)NrW   	str_inputdecoding   bytes input)r  r  r  r  ra   r  rN   rP   )r   r  rq  r  s       r   
check_notezExceptionNotesTest.check_note  s    (t~~t~~6j(C8t/ 9j(C8MM+t7 9j(C8!!$//2 9j(C8MM.$//: 98 98888888s0   D8!D!4D-+!D9D!D*-D69Ec                 0    | j                  t        d       y )Nrf   r  r  r   s    r   test_raise_by_typez%ExceptionNotesTest.test_raise_by_type  s    b)r   c                 >    d}| j                  t        |      |       y )NThis should be notedr  ru  s     r   test_raise_by_valuez&ExceptionNotesTest.test_raise_by_value  s    $S)3/r   c                 X    d} G d dt               }| j                   ||      ||       y )Nr  c                       e Zd ZdZy)TExceptionNotesTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorr   N)r(   r)   r*   	__slots__r   r   r   MyRuntimeErrorr    s    Ir   r  r  r  r   rq  r  s      r   )test_raise_grandchild_subclass_exact_sizez<ExceptionNotesTest.test_raise_grandchild_subclass_exact_size  s(    $	\ 	s+S.Ar   c                 X    d} G d dt               }| j                   ||      ||       y )Nr  c                       e Zd Zy)SExceptionNotesTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r(   r)   r*   r   r   r   r  r    s    r   r  r  r  s      r   (test_raise_subclass_with_weakref_supportz;ExceptionNotesTest.test_raise_subclass_with_weakref_support  s(    $	\ 	s+S.Ar   c                 F     G d dt               }| j                  |d       y )Nc                       e Zd Zd Zy)9ExceptionNotesTest.test_init_override.<locals>.CustomInitc                      y r	   r   r   s    r   r@   zBExceptionNotesTest.test_init_override.<locals>.CustomInit.__init__  s    r   N)r(   r)   r*   r@   r   r   r   
CustomInitr    s    r   r  rf   r  )r   r  s     r   test_init_overridez%ExceptionNotesTest.test_init_override  s    	 	 	
B'r   c                 F     G d dt               }| j                  |d       y )Nc                        e Zd Z fdZ xZS )7ExceptionNotesTest.test_new_override.<locals>.CustomNewc                 "    t         |   |       S r	   )r  __new__)clsr  s    r   r  z?ExceptionNotesTest.test_new_override.<locals>.CustomNew.__new__  s    ws++r   )r(   r)   r*   r  r  r  s   @r   	CustomNewr    s    , ,r   r  rf   r  )r   r  s     r   test_new_overridez$ExceptionNotesTest.test_new_override  s    	, 	, 		2&r   c                 n    d}t        |      }d|_        | j                  |dj                  |             y )Nr  rL   z^{}$)r  attrr  rl  )r   rq  r  s      r   test_instance_attributez*ExceptionNotesTest.test_instance_attribute  s/    $3V]]3/0r   c                 :    | j                  t        d      d       y )NrL   1r  r   s    r   test_non_str_argz#ExceptionNotesTest.test_non_str_arg  s    Q-r   c                 B    d}| j                  t        ddd      |       y )Nz^\('a', 'b', 'c'\)$r   r   rt   r  )r   msg_res     r   test_multiple_argsz%ExceptionNotesTest.test_multiple_args  s    'S#s3V<r   c                 ~   dj                  | j                        }| j                  t        |      5  dj	                  | j                         d d d        | j                  t        |      5  t        j                  d| j                         d d d        | j                  t        |      5  dj                  | j                         d d d        | j                  t        |      5  t        j                  d| j                         d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)Nz^unknown encoding: {}$z	str inputr  )rl  r  rw  r  ra   rN   rP   ru  s     r   test_codec_lookup_failurez,ExceptionNotesTest.test_codec_lookup_failure  s    &--doo>##K5t/ 6##K5MM+t7 6##K5!!$//2 6##K5MM.$//: 65 65555555s/   D,!D+D'%!D3DD$'D03D<c                    d }d }| j                  ||       t        j                  d | j                        }| j	                  |d       t        j
                  d | j                        }| j	                  |d       d}|j                  | j                        }| j                  t        |      5  dj                  | j                         d d d        d}|j                  | j                        }| j                  t        |      5  dj                  | j                         d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)	Nc                       y)N)
not bytes!r   r   r  r  s     r   encode_to_strzPExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str  s    "r   c                       y)N)   not str!r   r   r  s     r   decode_to_byteszRExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytes  s    !r   r  r  zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r  zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$r  )	r  rN   ra   r  r
   rP   rl  rw  r  )r   r  r  rv   decodedrp  rq  s          r   &test_unflagged_non_text_codec_handlingz9ExceptionNotesTest.test_unflagged_non_text_codec_handling  s    	#	"}o6--doo6,/--doo6+.Fjj)##Is3t/ 4Fjj)##Is3!!$//2 43 43
 43s   0D,D8,D58EN)r(   r)   r*   r  r  r  
contextlibcontextmanagerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    st    )4
3
 + +  6B 
;*0BB('1.=
	;3r   r  win32z"code pages are specific to Windowsc                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z ej                   ddd      d        Z ej                   ddd      d        Zy)CodePageTest  c                 4   | j                  t        t        j                  dd       | j                  t        t        j                  dd       | j                  t
        t        j                  dd       | j                  t
        t        j                  dd       y )Nr   r      ar$  )r   rL  rN   code_page_encodecode_page_decodeOSErrorr   s    r   test_invalid_code_pagez#CodePageTest.test_invalid_code_page  sj    *f&=&=r3G*f&=&=r4H'6#:#:CE'6#:#:CFr   c           	      
   | j                  t        dt        j                  dd       | j                  t        dt        j
                  dddd       | j                  t        dt        j
                  | j                  ddd       y )	NrC       ÿs    rh   TCP_UTF8r  )rw  r   rN   r  r   r  r  r   s    r   test_code_page_namez CodePageTest.test_code_page_name  sp    17##S&	217##S+x	G19##T\\7Hd	Lr   c                    |D ]  \  }}}|t	 t        j                  |||d      }| j	                  d   ||d|d|d	|d   d
|	       | j                  |d   d       | j                  |d   t        |             }| j                  t        t         j                  |||d        y # t        $ r'}| j                  d|d|d|d|       Y d }~d }~ww xY w)NTzUnable to decode z	 from "cp" with errors=: r   z.decode("cp", )= != rL   )	rN   r  r   failr
   assertGreaterEqualassertLessEqualr   r   )r   r5   r`  ra  rL  rb  r  errs           r   check_decodezCodePageTest.check_decode$  s    %*!C#H$55b#vtLG   XB
H>? ''
A6$$WQZS:!!"4++RfdD &+ * HII14b&#G H HHs   B++	C4CCc                    |D ]  \  }}}|^	 t        j                  |||      }| j	                  d   ||d|d|d|d   d	|	       | j	                  |d
   t        |             g| j                  t        t         j                  |||        y # t        $ r'}| j                  d|d|d|d|       Y d }~d }~ww xY w)NzUnable to encode z to "cpr  r  r   z.encode("cpr  r  r   rL   )rN   r  r   r  r
   r   r   )r   r5   r`  textrL  rb  rv   r  s           r   check_encodezCodePageTest.check_encode6  s    &+"D&(#I$55b$GG   XRX?@   SY7!!"4++Rv? ', * III15r63H I IIs   B	CB??Cc                 L    | j                  dd       | j                  dd       y )Nr  )r  rh   rz  )   ｄ騾rh      )r  rh   N)r  r   r  )r  r   s   [y])u   [€]r   s   [?])r  r   s   [\xff])r  r   s)   [\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r  r   s   [&#255;])u   rh   N)   []r}  r  )r  r   N)rz  rh   r  )r  rh   r  )r  rh   N)r  r   r   )r  r   u   [�])r  r   z[\xff])r  r}  r  )r  r   N)    abcrh   N)r  r   z abc)r  r   u   � abc)r  r   z\x81 abcr  r  r   s    r   
test_cp932zCodePageTest.test_cp932F  s.    #  
 	  	#  
 	r   c                 L    | j                  dd       | j                  dd       y )Ni  )r
  )   é€rh      )r  rh   r  )r	  rh   N)r	  r   r   )r	  r      L)   r}     )r  r   N)r  )r  rh   r  )r  rh   r  r  r   s    r   test_cp1252zCodePageTest.test_cp1252g  s.    $ 
!
 
	 	$ !
 	r   c                 P    d}| j                  |d       | j                  |d       y )N  )r
  )r  rh      +AOkgrA-)r  rh      +2//f/w-)r   rh      +3IA-)r   rh      +//0-)r  )r  rh   r  )r  rh   r  )r  rh   r   )r  rh   r   )s   [+/]rh   r   )r  rh   r  r  r   r5   s     r   test_cp_utf7zCodePageTest.test_cp_utf7y  s3    " 
 	 	" 	
 		r   c                     | j                  dd       | j                  | j                  d       | j                  | j                  d       y )Nr  ))   r      騾)r"  r   u   �騾))   􏿿r   r  )r$  r   u   �􏿿))	   [􏿿]r   s   [􏿿])r%  r   s   [􏿿?])r  r  r  r   s    r   test_multibyte_encodingz$CodePageTest.test_multibyte_encoding  sM    #  
 	 	$,, )
 	 	$,, )
 	r   c                    t         j                  rt        j                  j	                  d       ddddddgt        dd	      d
D ]W  }t        |      r+| j                  t        j                  |d      dd|        9t         j                  sJt        d|        Y | j                  t        j                  dd      d       y )Nr   i,  i-  i.  i1  i3  i5  i  i  r  rz  r  r5   z  skipping cp=r  )u	   r{  )r   verboser  stdoutrC   rM   r9   r
   rN   r  printr  s     r   test_code_page_decode_flagsz(CodePageTest.test_code_page_decode_flags  s     ??JJT"%ue 2%)2+02B $B'  !8!8V!DjTVWYVZR[\??N2$/02 	00V<2	4r   c                 T   t        j                  dddd      }| j                  |d       t        j                  dddd      }| j                  |d       t        j                  dddd      }| j                  |d	       t        j                  dd
dd      }| j                  |d       y )Nr     rh   Fr  s   )r#  r   s   )u   騾騾r  rz  r  )rN   r  r
   )r   r  s     r   test_incrementalzCodePageTest.test_incremental  s    ))#w%H'*))#*98*/1 	-0))#*=x*/1 	"56))#*0(*/1 	*-r   c                 .   d}d| }t        j                  d|      5  	 t        j                  |      }| j	                  |j
                  d       t        j                  |       	 d d d        y # t        j                  |       w xY w# 1 sw Y   y xY w)Ni r5   z_winapi.GetACP)return_valuer  )r   r  rN   r   r
   r  r  )r   	code_pager  codecs       r   test_mbcs_aliaszCodePageTest.test_mbcs_alias  s~     	I;ZZ(yA(d+  V4!!$' BA
 !!$' BAs"   B1A1B1BBBl           F)rF   memusedry_runc                 l   d|dz  dz
  z  dz   }| j                  t        |      |dz          t        j                  d|dd      }| j                  |d   t        |             ~| j                  t        |d	         |d          | j                  |d	   d d
 d       | j                  |d	   dd  d       y )Ns   01234567r<  rL   s
   r   r  r}  Tr   r   
0123456701iu(   6701234567r
   r   rN   r  r   rF   rv   r  s       r   test_large_inputzCodePageTest.test_large_input  s    
 47A+.>?WtAv.))#w8I4PS\2WQZ'!*5CR,7CD):	;r   r   c                 `   d|dz  z  }| j                  t        |      |dz  dz         t        j                  d|dd      }| j                  |d   t        |             ~| j                  t        |d         |       | j                  |d   d d d	       | j                  |d   d
d  d       y )Ns
   0123456턀r<  r   r  r   TrL   r   u   0123456턀01iu   56턀0123456턀r9  r:  s       r   test_large_utf8_inputz"CodePageTest.test_large_utf8_input  s    
 *T1W5Wtqy2~6))%(DIS\2WQZ$/CR*;<CD)+BCr   N)r(   r)   r*   r  r  r  r  r  r  r  r   r&  r+  r.  r3  r   
bigmemtestr;  r=  r   r   r   r  r    s     GGLD$? B$(4&.&
( WU1e<; =;" WU1e<D =Dr   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)	ASCIITestc                 F    | j                  dj                  d      d       y )Nr  r  s   abc123rt  r   s    r   rG  zASCIITest.test_encode  s    19=r   c                     dD ]E  \  }}}| j                  |||      5  | j                  |j                  d|      |       d d d        G y # 1 sw Y   RxY w)N))	   [ÿ€]r   r  )rC  r   s   [???])rC  r   s   [&#128;&#255;&#8364;])u   [ÿ€򫳞]r   s   [\x80\xff\u20ac\U000abcde]r~  r}  r|  r  r  r  r
   ra   r  s       r   test_encode_errorzASCIITest.test_encode_error  sb    .
)D- 4}'/  1  Wm!D!)+1 1.
1 1   #AA	c                 |    | j                  t              5  dj                  dd       d d d        y # 1 sw Y   y xY w)Nu   ÿr  r}  r   r   ra   r   s    r   !test_encode_surrogateescape_errorz+ASCIITest.test_encode_surrogateescape_error   s.    12):; 322   2;c                 F    | j                  dj                  d      d       y )Nrz  r  r  )r
   rP   r   s    r   rI  zASCIITest.test_decode  s    w/7r   c                     dD ]E  \  }}}| j                  |||      5  | j                  |j                  d|      |       d d d        G y # 1 sw Y   RxY w)Nr{  r  r  r  r  s       r   r  zASCIITest.test_decode_error  sb    .
)D- 4}'/  1  Wm!D!)+1 1.
1 1rG  N)r(   r)   r*   rG  rF  rJ  rI  r  r   r   r   r@  r@    s    >+<
8
+r   r@  c                   $    e Zd Zd Zd Zd Zd Zy)
Latin1Testc                     dD ]B  \  }}| j                  ||      5  | j                  |j                  d      |       d d d        D y # 1 sw Y   OxY w)N))r  rz  )u   éÿs   r   rb  r  rE  r   r   rb  s      r   rG  zLatin1Test.test_encode  N    
ND( 4(;  X!6A <;	
 <;   "A		A	c                     dD ]E  \  }}}| j                  |||      5  | j                  |j                  d|      |       d d d        G y # 1 sw Y   RxY w)N))   [€]r   r  )rV  r   s   [??])u	   [€򫳞]r   s   [\u20ac\U000abcde])rV  r   s   [&#8364;&#56448;]rD  r  r  rE  r  s       r   test_encode_errorszLatin1Test.test_encode_errors  sb    .
)D- 4}'/  1  X}!E!)+1 1.
1 1rG  c                 |    | j                  t              5  dj                  dd       d d d        y # 1 sw Y   y xY w)Nu   €r  r}  rI  r   s    r   rJ  z,Latin1Test.test_encode_surrogateescape_error,  s.    12!!(,=> 322rK  c                     dD ]B  \  }}| j                  ||      5  | j                  |j                  d      |       d d d        D y # 1 sw Y   OxY w)N))rz  r  )r|  u   [ÿ]rQ  r  r  rR  s      r   rI  zLatin1Test.test_decode1  rS  rT  N)r(   r)   r*   rG  rW  rJ  rI  r   r   r   rO  rO    s    B+?
Br   rO  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)StreamRecoderTestc                 v   t        j                         }t        j                  d      }t        j                  ||j
                  |j                  t        j                  j                  t        j                  j                        }|j                  ddg       | j                  |j                         d       y )Nr  r     bs   ab)r{   r|   rN   r   r  ra   rP   r  r  r  r  
writelinesr
   r   r   bior2  srs       r   test_writelinesz!StreamRecoderTest.test_writelines;  sy    jjlg&!!#u||U\\"+//">">	@\@\^
tTl#/r   c                    t        j                         }t        j                  d      }t        j                  ||j
                  |j                  t        j                  j                  t        j                  j                        }d}|j                  |j                  d             | j                  |j                         |j                  d             y )Nr  u   àñérs  )r{   r|   rN   r   r  ra   rP   r  r}  r  r  rC   r
   r   )r   r`  r2  ra  r  s        r   
test_writezStreamRecoderTest.test_writeC  s    jjlh'!!#u||U\\"+//">">	@\@\^ 
X&'W)=>r   c                    t        j                  dj                  d            }t        j                  |dd      }| j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       y )	Nzline1
line2
line3
rU  rs  s   line1
r   s   line2
s   line3
r   )r{   r|   ra   rN   r  r
   r   r  r   r`  ra  s      r   test_seeking_readz#StreamRecoderTest.test_seeking_readN  s    jj077DEWk:
3


3
3
3,r   c                    t        j                  dj                  d            }t        j                  |dd      }|j                  d       |j                  d       | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j                         d	       | j                  |j                         d       y )
Nz
123456789
rU  rs  r   s   
abc
s   789
r   s   1
s   abc
)	r{   r|   ra   rN   r  r  rC   r
   r   rf  s      r   test_seeking_writez$StreamRecoderTest.test_seeking_writeY  s    jj--k:;Wk: 	

1

/11r   c                    t        j                         }t        j                  d      }t        j                  ||j
                  |j                  t        j                  j                  t        j                  j                        }| j                  t        d      5  t        j                  |       d d d        | j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr  r  )r{   r|   rN   r   r  ra   rP   r  r  r  r  rw  r  r  r  r_  s       r   r  zStreamRecoderTest.test_copyg  s    jjlg&!!#u||U\\"+//">">	@\@\^ ##I?IIbM @##I?MM" @? @???s   C0C<0C9<Dc                    t        d      }t        j                  d      }t        j                  ||j                  |j
                  t        j                  j                  t        j                  j                        }t        t        j                  dz         D ]R  }| j                  |      5  | j                  t        d      5  t        j                   ||       d d d        d d d        T y # 1 sw Y   xY w# 1 sw Y   kxY w)Nr   r  rL   r  r  )r;   rN   r   r  ra   rP   r  r  r  r  rM   r  r  r  rw  r  r  )r   rq   r2  ra  r  s        r   r  zStreamRecoderTest.test_pickler  s    #Jg&!!!U\\5<<"+//">">	@\@\^ 622Q67Eu-++IGLLU+ H .- 8GG .-s$   /C<C0C<0C95C<<D	N)	r(   r)   r*   rb  rd  rg  ri  r  r  r   r   r   r[  r[  :  s     0	?	-2		,r   r[  zneed _testinternalcapi modulec                       e Zd Z	  ej                         ZdZdZdZddZ	d Z
d Zd Zd Zd	 Zdd
Zd Zd Zd Zd Zd Zy)LocaleCodecTest)r  u   ulatin1:§éu   u255:ÿu   UCS:é€􏿿u   surrogates:)s
   blatin1:s   b255:u   c                 0    t        j                  |d|      S rE   )_testinternalcapiEncodeLocaleEx)r   r  rL  s      r   ra   zLocaleCodecTest.encode  s     //a@@r   c           	         | j                   D ]^  }| j                  |      5  	 |j                  | j                  |      }| j                  ||      }| j	                  ||       d d d        ` y # t
        $ rg | j                  t              5 }| j                  ||       d d d        n# 1 sw Y   nxY wt        j                        }| j                  |d       Y zw xY w# 1 sw Y   xY w)N)r  z!encode error: pos=[0-9]+, reason=)STRINGSr  ra   ENCODINGr
   r   r   r  rN  rO  assertRegex)r   rL  r  rb  rv   rQ  errmsgs          r   check_encode_stringsz$LocaleCodecTest.check_encode_strings  s    LLD4(	8#{{4==&AH #kk$7G$$Wh7 )( ! * S**<8BD&1 988 .F$$V-QR	S )(sF   C"A/ $C"/CB)	 	C)B2..CC"CC""C+	c                 &    | j                  d       y Nrh   rv  r   s    r   test_encode_strictz"LocaleCodecTest.test_encode_strict      !!(+r   c                 &    | j                  d       y Nr}  ry  r   s    r   test_encode_surrogateescapez+LocaleCodecTest.test_encode_surrogateescape      !!"34r   c                     	 | j                  dd       | j                  d       y # t        $ r8}t        |      dk(  r| j                  | j                  d       n Y d }~Nd }~ww xY w)Nrf   r   unsupported error handlerz4 encoder doesn't support surrogatepass error handler)ra   rL  rN  skipTestrs  rv  r   r  s     r   test_encode_surrogatepassz)LocaleCodecTest.test_encode_surrogatepass  sm    	KKO, 	!!/2  	3x66 1 2< = > >	   & 	A'.A""A'c                     | j                  t              5 }| j                  dd       d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nrf   r   r  )r   rL  ra   r
   rN  rO  r   rQ  s     r   %test_encode_unsupported_error_handlerz5LocaleCodecTest.test_encode_unsupported_error_handler  sI    z*bKK./ +R\\*,GH +*   AA c                 0    t        j                  |d|      S rE   )ro  DecodeLocaleEx)r   rv   rL  s      r   rP   zLocaleCodecTest.decode  s     //FCCr   c           	      P   | j                   dk(  }|rd}nd}t        | j                        }| j                  D ]j  }	 |j	                  | j                   |      }||vr|j                  |       |s8|j	                  | j                   d      }||k7  sZ|j                  |       l |D ]^  }| j                  |      5  	 |j                  | j                   |      }| j                  ||      }	| j                  |	|       d d d        ` y # t        $ r d }Y w xY w# t        $ rv | j                  t              5 }
| j                  ||       d d d        n# 1 sw Y   nxY wt        
j                        }| j                  |j!                  d      |       Y w xY w# 1 sw Y   xY w)Nrs  r}  rh   r   )rv   zdecode error: )rs  r  BYTES_STRINGSrr  ra   r   r   r  rP   r
   r   r   r  rN  rO  rU   
startswith)r   rL  is_utf8encode_errorsstringsr  rv   encoded2rb  r  rQ  ru  s               r   check_decode_stringsz$LocaleCodecTest.check_decode_strings  su   ==G+-M$Mt))*LLD++dmm]C')NN7+ ;;t}}oFw&NN8, ! Gg.	8&~~dmmVDH #kk'6:G$$Wh7 /.  &  * Q**<8BGV4 988 .FOOF$5$56F$GP	Q /.sY   1D	<F>D$F	DDF8E		FE=FFFFF%	c                 &    | j                  d       y rx  r  r   s    r   test_decode_strictz"LocaleCodecTest.test_decode_strict  r{  r   c                 &    | j                  d       y r}  r  r   s    r   test_decode_surrogateescapez+LocaleCodecTest.test_decode_surrogateescape  r  r   c                     	 | j                  dd       | j                  d       y # t        $ r8}t        |      dk(  r| j                  | j                  d       n Y d }~Nd }~ww xY w)Nr   r   r  z4 decoder doesn't support surrogatepass error handler)rP   rL  rN  r  rs  r  r  s     r   test_decode_surrogatepassz)LocaleCodecTest.test_decode_surrogatepass  sm    	KK_- 	!!/2  	3x66 1 2< = > >	r  c                     | j                  t              5 }| j                  dd       d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nr   r   r  )r   rL  rP   r
   rN  rO  r  s     r   %test_decode_unsupported_error_handlerz5LocaleCodecTest.test_decode_unsupported_error_handler  sI    z*bKK/0 +R\\*,GH +*r  Nrg   )r(   r)   r*   r  getfilesystemencodingrs  rr  r  
SURROGATESra   rv  rz  r~  r  r  rP   r  r  r  r  r  r   r   r   rm  rm  ~  sm     )s((*H*G 8MJA8,5
3I
D 8D,5
3Ir   rm  c                   &    e Zd Z	 d Zd Zd Zd Zy)	Rot13Testc                 T    t        j                  dd      }| j                  |d       y )NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)rN   ra   r
   )r   
ciphertexts     r   rG  zRot13Test.test_encode  s$    ]]#98D
%;<r   c                 T    t        j                  dd      }| j                  |d       y )NzRg gh, Oehgr?r  zEt tu, Brute?)rN   rP   r
   )r   	plaintexts     r   rI  zRot13Test.test_decode  s"    MM/8<	O4r   c                 ~     t        j                  d             }|j                  d      }| j                  |d       y )Nr  zABBA nag Cheryl BakerzNOON ant Purely Onxre)rN   r`   ra   r
   )r   r  r  s      r   r  z!Rot13Test.test_incremental_encode  s7    8&..x8:^^$;<
%<=r   c                 ~     t        j                  d             }|j                  d      }| j                  |d       y )Nr  zterra Ares envy thazgreen Nerf rail gun)rN   rO   rP   r
   )r   r  r  s      r   r  z!Rot13Test.test_incremental_decode  s7    8&..x8:NN#89	$9:r   N)r(   r)   r*   rG  rI  r  r  r   r   r   r  r    s    ,=5>
;r   r  c                       e Zd Z	 d Zy)Rot13UtilTestc                     ddl m} t        j                  d      }t        j                         } |||       |j	                  d       |j                         }| j                  |d       y )Nr   )rP  z)Gb or, be abg gb or, gung vf gur dhrfgvbaz)To be, or not to be, that is the question)encodings.rot_13rP  r{   r  r  rH   r
   )r   rP  infileoutfile
plain_texts        r   test_rot13_funczRot13UtilTest.test_rot13_func
  sS    *HI++-fgQ\\^
7	9r   N)r(   r)   r*   r  r   r   r   r  r    s    	9r   r  c                       e Zd Z	 d Zd Zy)CodecNameNormalizationTestc                 j   ddfd}t        j                  |       | j                  t         j                  |       | j	                  t        j
                  d             | j	                  t        j
                  d             | j	                  t        j
                  d             | j	                  t        j
                  d             | j	                  t        j
                  d             | j	                  t        j
                  d	             | j	                  t        j
                  d
             | j	                  t        j
                  d             | j	                  t        j
                  d             | j	                  t        j
                  d             y )N)rL   r   r{  r  )NNNNc                     | dk(  rS S )Naaa_8r   )rW   FOUND	NOT_FOUNDs    r   r  zFCodecNameNormalizationTest.test_codecs_lookup.<locals>.search_function  s    7"  r   r  zAAA-8zAAA---8zAAA   8u
   aaaé€-8zAAA.8zAAA...8zBBB-8zBBB.8u   aé€-8)rN   r  r@  r  r
   r   )r   r  r  r  s     @@r   test_codecs_lookupz-CodecNameNormalizationTest.test_codecs_lookup  s/   ,		! 	())?;g 67g 67i 89i 89.? @AFMM'$:;FMM)$<=FMM'$:;FMM'$:;FMM/$BCr   c                 D   t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       y )Nr}  u   utfé€􏿿-8zutf   8zUTF 8UTF_8zutf.8zutf...8)r  normalize_encodingr
   )r   	normalizes     r   !test_encodings_normalize_encodingz<CodecNameNormalizationTest.test_encodings_normalize_encoding.  s    00	7+W5#>?I9-w7 	7+W57+W59-y9r   N)r(   r)   r*   r  r  r   r   r   r  r    s    'D,
:r   r  __main__)WrN   r  r  r{   r  r  r  r  r   testr   test.supportr   r  ImportErrorro  r2   sizeofc_wcharSIZEOF_WCHAR_Tr   r9   r  r;   rJ   rd   TestCaser   r  r*  r2  rT  rk  rr  r  r  r  r  r  rB  rY   r   r*  reprr>  r_  r[  rg  r  r  r	  r  r  r  r  r   r  r  r  r  r  r  r!  r,  r3  r?  rY  r  rS  rU  rW  r  r  r  r  platformr  r@  rO  r[  r  rm  r  r  r  r(   mainr   r   r   <module>r     s      	  
     "3
 #V]]6>>2N$(F *- -DQ=& Q=h
]>(++ ]>@+>(H-- +>\+>(H-- +>\`-(++ `-F*'(H-- *'X*'(H-- *'X[Hx** [H|CKx** CKL>(## >CX&& C S-(H-- S-lLHx(( LH`e N 
A
1vqyd1g 

P8$$ PBVrP8$$ P(Z6H%% Z6zx)x(( x)v+x(( +2+x(( +(+X.. +*
0h'' 
0f P 6=!  (
6<   '   
_Rx((*A _RDu
(## u
p18$$ 1&L!! &LRS
("3"3 S
jP
8X%6%6 P
fOx(( O(2(++ 2D65h 65r  y)Ei 6 $$\2',fol#- $$[1&+Wk"~F** ~FL (E3** E3R S\\W,9;XD8$$ XD;XDv$+!! $+N"B"" "BJA,)) A,H "d*,KLnIh'' nI MnIb;!! ;*9H%% 9"":!2!2 ":J zHMMO Wq  I  
  FNjV  D  		sW   S S S' )S7 T SSS$#S$'	S43S47TTTT