
    daf                        d Z ddlZddlm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
 G d d      Z G d d      Z G d d	      Z G d
 deeej                        Z G d d      Z G d deeeej                        Z G d deej                        Z G d de      Z G d de      Z G d de      Zedk(  r ej.                          yy)zdUnit tests for memory-based file-like objects.
StringIO -- for unicode strings
BytesIO -- for bytes
    N)supportc                       e Zd Zd Zd ZeZy)IntLikec                     || _         y N_num)selfnums     -/root/Python-3.12.4/Lib/test/test_memoryio.py__init__zIntLike.__init__   s	    	    c                     | j                   S r   r   r
   s    r   	__index__zIntLike.__index__   s    yyr   N)__name__
__module____qualname__r   r   __int__ r   r   r   r      s    Gr   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)MemorySeekTestMixinc                 H    | j                  d      }| j                  |      }y N
1234567890)buftypeioclassr
   bufbytesIos      r   testInitzMemorySeekTestMixin.testInit   s    ll<(,,s#r   c                 t   | j                  d      }| j                  |      }| j                  |d d |j                  d             | j                  |dd |j                  d             | j                  |dd  |j                  d             | j                  | j                  |j                                y )Nr              r   r   assertEqualreadEOFr   s      r   testReadzMemorySeekTestMixin.testRead   s    ll<(,,s#Ra',,q/2Qq7<<?3QR',,s"347<<>2r   c                     | j                  d      }| j                  |      }| j                  ||j                                | j                  | j                  |j                                y r   r'   r   s      r   testReadNoArgsz"MemorySeekTestMixin.testReadNoArgs&   sN    ll<(,,s#glln-7<<>2r   c                 v   | j                  d      }| j                  |      }|j                  d       |j                  d       | j	                  ||j                                |j                  d       | j	                  |dd  |j                                | j                  t        |j                  d       y )Nr   r$   r              )r   r   r)   seekr(   assertRaises	TypeErrorr   s      r   testSeekzMemorySeekTestMixin.testSeek-   s    ll<(,,s#QQglln-QQR',,.1)W\\37r   c                 L   | j                  d      }| j                  |      }| j                  d|j                                |j	                  d       | j                  d|j                                |j	                  d       | j                  d|j                                y Nr   r   r$   i'  )r   r   r(   tellr1   r   s      r   testTellzMemorySeekTestMixin.testTell9   sw    ll<(,,s#GLLN+QGLLN+U/r   N)r   r   r   r!   r+   r-   r4   r8   r   r   r   r   r      s    $33
80r   r   c                       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d Zd Zd Zd Zd Zd Zd Zd Zy)MemoryTestMixinc                 p    | j                         }| j                  | j                  |j                         y r   )r   r2   UnsupportedOperationdetachr
   r   s     r   test_detachzMemoryTestMixin.test_detachF   s'    lln$33SZZ@r   c                    | j                  |j                   |d            d       | j                  |j                  d      d       | j                  |j                   |d            d       | j                  |j                         d       | j                  |j                  d      d       | j                  |j                         d       | j                  |j                   |d            d       | j                  |j                  d      d       | j                  |j                   |d            d	       | j                  |j	                  d
      d
       | j                  |j                         d	       y )Nzblah.r$   r   zHello.   z	 world


	   hr#      )r(   writer1   r7   truncate)r
   fts      r   	write_opszMemoryTestMixin.write_opsJ   s   7,a0A&8-q11%A&1%>!23Q7A&3!,B,1%r   c                    | j                  d      }| j                  |      }| j                  || j                          | j                  |j	                         |       | j                         }| j                  || j                          | j                  |j	                         |       | j                  t        |j                  d        |j                          | j                  t        |j                  | j                  d             y )Nzhello world
 )
r   r   rI   r(   getvaluer2   r3   rE   close
ValueErrorr
   r   memios      r   
test_writezMemoryTestMixin.test_writeW   s    ll?+S!udll+)3/udll+)3/)U[[$7*ekk4<<3CDr   c                    | j                  d      }| j                         }| j                  |j                  |gdz        d        | j                  |j	                         |dz         |j                  g        | j                  |j	                         |dz         | j                         }| j                  t        |j                  |gdgz          | j                  |j	                         |       | j                  t        |j                  d        |j                          | j                  t        |j                  g        y )Nr   d   r#   )	r   r   r(   
writelinesrL   r2   r3   rM   rN   rO   s      r   test_writelineszMemoryTestMixin.test_writelinesd   s    ll<())3%#+6=)395)395)U%5%5us{C)3/)U%5%5t<*e&6&6;r   c                 |      j                         } fd} j                  t        |j                   |              y )Nc               3   >   K    j                  d       t        w)Nspam)r   KeyboardInterruptr   s   r   	error_genz8MemoryTestMixin.test_writelines_error.<locals>.error_genu   s     ,,v&&##s   )r   r2   rY   rT   )r
   rP   rZ   s   `  r   test_writelines_errorz%MemoryTestMixin.test_writelines_errors   s0    	$ 	+U-=-=y{Kr   c                    | j                  d      }| j                  |      }| j                  t        |j                  d       | j                  t        |j                  t        d             |j                  d       | j                  |j	                  t        d            d       | j                  |j                         |d d        | j                  |j	                         d       | j                  |j                         |d d        | j                  |j	                  d      d       | j                  |j                         |d d        | j                  |j                         d       |j                  dd       |j                  |       | j                  |j                         |d d |z          |j                         }| j                  |j	                  d       |       | j                  |j                         |       | j                  t        |j                  d       |j                          | j                  t        |j                  d       | j                  t        |j                  t        d             y )	Nr   rA      r%   r      0)r   r   r2   rN   rF   r   r1   r(   rL   r7   rE   r3   rM   )r
   r   rP   poss       r   test_truncatezMemoryTestMixin.test_truncate{   s   ll<(S!*ennb9*enngbkB

1
3Q7)3r73)1-)3r73*A.)3r73q)

1aC)3r7S=9jjl-s3s+)U^^S9*enna8*enngajAr   c                    | j                  d      }| j                  |      }| j                  |j                         |       | j                  d       }| j                  |j                         | j                         |j                  |dz         | j                  |j                         |dz         |j                  |       | j                  |j                         |       | j                  t        |j
                  g        y )Nr   r_   )r   r   r(   rL   r*   r   r2   r3   rO   s      r   	test_initzMemoryTestMixin.test_init   s    ll<(S!)3/T")4884sQw)373s)3/)U^^R8r   c                 	   | j                  d      }| j                  |      }| j                  |j                  d      | j                         | j                  |j                  d      |d d        | j                  |j                  d      |dd        | j                  |j                  d      |dd         | j                  |j                         | j                         |j                  d       | j                  |j                  t        d            | j                         | j                  |j                  t        d            |d d        | j                  |j                  t        d            |dd        | j                  |j                  t        d            |dd         |j                  d       | j                  |j                         |       | j                  |j                         | j                         | j                  |j                         d       |j                  d       | j                  |j                  d      |       |j                  d       | j                  |j                  t        d            |       |j                  d       | j                  t        |j                               t        |             |j                  d	       | j                  t        |j                               t        |             |j                  d       | j                  |j                  d       |       | j                  t        |j                  d
       |j                  t        |      dz          | j                  |j                  d      | j                         |j                  t        |      dz          | j                  |j                  t        d            | j                         |j                  t        |      dz          | j                  |j                         | j                         |j                          | j                  t        |j                         y )Nr   r   r#   r%   r$   r&   
   r]   rS   rK   )r   r   r(   r)   r*   r1   r   r7   typer2   r3   lenrM   rN   rO   s      r   	test_readzMemoryTestMixin.test_read   s   ll<(S!A1ABQ0AAa1C#ab'2txx0

1GAJ/:GAJ/Ra9GAJ/Qq:GCL13qr7;

1s+txx0r*

1B-

1GBK0#6

1ejjl+T#Y7

3ejjl+T#Y7

1D)3/)UZZ4

3s8a< A1

3s8a< GAJ/:

3s8a< txx0*ejj1r   c                 *	   | j                  d      }| j                  |dz        }| j                  |j                  d      | j                         | j                  |j                  t        d            | j                         | j                  |j                         |       | j                  |j                         |       | j                  |j                         | j                         |j                  d       | j                  |j                  d      |d d        | j                  |j                  d      |dd        | j                  |j                  d      |dd        |j                  d       | j                  |j                  t        d            |d d        | j                  |j                  t        d            |dd        | j                  |j                  t        d            |dd        |j                  d       | j                  |j                  d      |       |j                  d       | j                  |j                  t        d            |       |j                  d       | j                  |j                  d      | j                         | j                  |j                  t        d            | j                         |j                  t        |      dz  dz          | j                  |j                         | j                         | j                  d      }| j                  |d	z  d d       }| j                  |j                         |       | j                  |j                         |       | j                  |j                         |d d        | j                  |j                         | j                         |j                  d       | j                  t        |j                               t        |             | j                  |j                         |       | j                  t        |j                  d
       |j                          | j                  t        |j                         y )N1234567890
r_   r   r$   rf      r]   r#   r/   rK   )r   r   r(   readliner*   r   r1   rh   rg   r2   r3   rM   rN   rO   s      r   test_readlinezMemoryTestMixin.test_readline   sO   ll>*S1W%*DHH5
3TXX>)3/)3/)4884

1*CG4*C"I6*C2J7

1
3S!W=
3S2Y?
3SBZ@

1+S1

14c:

1*DHH5
3TXX>

3s8a<!#$)4884ll>*cAgs^,)3/)3/)3s84)4884

1enn./c;)3/)U^^R8*u~~6r   c                 l   | j                  d      }| j                  |dz        }| j                  |j                         |gdz         |j	                  d       | j                  |j                         |dd  g|gdz  z          |j	                  d       | j                  |j                  d      |gdz         |j	                  d       | j                  |j                  d      |gdz         |j	                  d       | j                  |j                  d      |gdz         |j	                  d       | j                  t        |j                         d         t        |             |j	                  d       | j                  |j                  d       |gdz         | j                  t        |j                  d	       |j	                  t        |      dz  d
z          | j                  |j                         g        |j                          | j                  t        |j                         y )Nrk   rf   r$   rB   r   rl   r_   r]   rK   r#   )r   r   r(   	readlinesr1   rg   r2   r3   rh   rM   rN   rO   s      r   test_readlineszMemoryTestMixin.test_readlines   s   ll>*S2X&*SEBJ7

1*SWI	,AB

1,seai8

1,sebj9

1+cURZ8

1eoo/23T#Y?

1.
;)U__b9

3s8b=1$%*B/*eoo6r   c                    | j                  d      }| j                  |dz        }| j                  t        |      |       | j	                  t        |d             | j	                  t        |d             d}|D ]  }| j                  ||       |dz  } | j                  |d       |j                  d       d}|D ]  }| j                  ||       |dz  } | j                  |d       |j                  t        |      dz  dz          | j                  t        |      g        | j                  |dz        }|j                          | j                  t        |j                         y )Nrk   rf   __iter____next__r   r#   r_   )r   r   r(   iter
assertTruehasattrr1   rh   listrM   r2   rN   rt   )r
   r   rP   ilines        r   test_iteratorzMemoryTestMixin.test_iterator  sA   ll>*S2X&ee,z23z23 	DT3'FA	 	B

1 	DT3'FA	 	B

3s8b=1$%eb)S1W%*enn5r   c                 Z   | j                  d      }| j                  |      }| j                  |j                         |       |j	                          | j                  |j                         |       | j                  t        |j                               t        |             | j                  |dz        }| j                  |j                         dd  | j                  d             | j                  |      }|j                          | j                  t        |j                         y )Nr     890)	r   r   r(   rL   r)   rg   rM   r2   rN   rO   s      r   test_getvaluezMemoryTestMixin.test_getvalue   s    ll<(S!)3/

)3/enn./c;S4Z()"#.U0CDS!*enn5r   c                    | j                  d      }| j                  |      }|j                  d       | j                  t        |j
                  d       | j                  t        |j
                  dd       | j                  t        |j
                  dd       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j                         |       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j                         |dd         | j                  |j                  t        |            t        |             | j                  |j                         | j                         |j                  t        |      dz          | j                  |j                         | j                         | j                  |j                  dd      t        |             | j                  |j                         | j                         |j                          | j                  t        |j
                  d       y )Nr   r$   r]   r#   r/   r   r_   )
r   r   r)   r2   rN   r1   r(   rh   r*   rM   rO   s      r   	test_seekzMemoryTestMixin.test_seek.  s   ll<(S!

1*ejj"5*ejj!R8*ejj!Q7A*Aq)1-s+A*Aq)1-s12w/CH-s3x8txx0

3s8a< txx0Aq)3s84txx0*ejj!4r   c                 x   | j                  d      }| j                  |      }| j                  |j                  t	        |      dz         d       | j                  |j                         | j                         | j                  |j                         d       | j                  |j                         |       |j                  | j                         | j                  |j                         |       |j                  |       | j                  |j                         || j                  d      z   |z          y )Nr   r#       )
r   r   r(   r1   rh   r)   r*   r7   rL   rE   rO   s      r   test_overseekzMemoryTestMixin.test_overseekE  s    ll<(S!CHqL126txx0r*)3/DHH)3/C)3d1C+Cc+IJr   c                    | j                  d      }| j                  |      }| j                  |j                         d       |j	                  d       | j                  |j                         d       |j	                  d       | j                  |j                         d       |j                          | j                  t        |j                         y r6   )r   r   r(   r7   r1   rM   r2   rN   rO   s      r   	test_tellzMemoryTestMixin.test_tellR  s    ll<(S!q)

1q)

5u-*ejj1r   c                     | j                  d      }| j                  |      }| j                  |j                         d        y r   )r   r   r(   flushrO   s      r   
test_flushzMemoryTestMixin.test_flush^  s4    ll<(S!-r   c                    | j                         }| j                  |j                         d       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       | j                  |j                  d       |j                          | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j
                         | j                  |j                  d       y )NTF)
r   r(   writablereadableseekableisattyclosedrM   r2   rN   r
   rP   s     r   
test_flagszMemoryTestMixin.test_flagsd  s    )40)40)40/u-*enn5*enn5*enn5*ell3t,r   c                       j                  d       fd} fd} j                   |               j                   |              y )Nr   c                  ^     G d dj                         }  |       }|j                         S )Nc                       e Zd Zy)>MemoryTestMixin.test_subclassing.<locals>.test1.<locals>.MemION)r   r   r   r   r   r   MemIOr   v  s    r   r   r   rL   r   mr   r
   s     r   test1z/MemoryTestMixin.test_subclassing.<locals>.test1u  s(     c
A::<r   c                  d     G fddj                         }  | d       }|j                         S )Nc                       e Zd Z fdZy)>MemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIOc                 >    j                   j                  | |       y r   )r   r   )meabr
   s      r   r   zGMemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIO.__init__|  s    LL))"a0r   Nr   r   r   r   r   s   r   r   r   {  s    1r   r   r   r   s     r   test2z/MemoryTestMixin.test_subclassing.<locals>.test2z  s-    1 1 c4 A::<r   )r   r(   )r
   r   r   r   s   `  @r   test_subclassingz MemoryTestMixin.test_subclassings  sA    ll<(	 
	  	#&#&r   c                 R    t        d      D ]  }| j                         }d|_         y )NrS   r#   )ranger   foo)r
   _rP   s      r   test_instance_dict_leakz'MemoryTestMixin.test_instance_dict_leak  s)     s 	ALLNEEI	r   c                      j                  d      } j                  |      }d|_        |j                  d        G  fdd j                        }dd l}d|_        |j                  |_        ||_         ||d      }|j                  d       t        dt        j                  d	z         D ]  }||fD ]  }t        j                  t        j                  ||
            } j                  |j                         |j                                 j                  |j                   |j                           j                  |j                  |j                          j                  |j#                         |j#                                |j%                           j'                  t(        t        j                  ||         |`y )Nr   *   r_   c                       e Zd Z fdZy)6MemoryTestMixin.test_pickling.<locals>.PickleTestMemIOc                 L    j                   j                  | |       || _        y r   )r   r   r   )r   	initvaluer   r
   s      r   r   z?MemoryTestMixin.test_pickling.<locals>.PickleTestMemIO.__init__  s    %%b)4r   Nr   r   s   r   PickleTestMemIOr     s    r   r   r   __main__P   r#   )protocol)r   r   r   r1   r   r   r   r   r   r   pickleHIGHEST_PROTOCOLloadsdumpsr(   rL   	__class__r7   rM   r2   rN   )	r
   r   rP   r   r   submemioprotoobjobj2s	   `        r   test_picklingzMemoryTestMixin.test_pickling  sa   ll<(S!	

1	dll 	 	%/"'6'?'?$#2 "3+a 1f559: 	IEx( I||FLLu$EF  A  ?  $((3  TYY[9

!!*fllD%HI	I $r   N)r   r   r   r?   rI   rQ   rU   r[   rb   rd   ri   rn   rq   r{   r   r   r   r   r   r   r   r   r   r   r   r   r:   r:   D   sm    A&E<LB2
9$2L'7R706265.K
2.-' #%r   r:   c                       e Zd Zej                  Zed        Zej                  ZdZ	d Z
d Zd Zd Zd Zd Zd	 Zd
 Zd Zy)PyBytesIOTestc                 $    | j                  d      S )Nascii)encode)ss    r   r   zPyBytesIOTest.buftype  s    xx  r   r   c                    | j                  d      }|j                         }| j                  t        |      d       |j	                  d       |j                         }| j                  t        |      d       | j                  t        |j                  d       | j                  t        |j                         | j                  t        |j                         | j                  |j                         d|dd | j                  t        |      d       | j                  |j                         d       ~t        j                          |j                          |j                          | j                  t        |j                         y )N
   1234567890r$   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs   abcr/   rA   s
   123abc7890)r   	getbufferr(   bytesr1   r2   BufferErrorrE   rF   rM   assertFalser   rL   r   
gc_collectrN   )r
   rP   r   s      r   test_getbufferzPyBytesIOTest.test_getbuffer  s   ]+oos]3

1oos]3 	+u{{J?+u~~6+u{{3&Aas]3)=9 *eoo6r   c                    | j                         }|j                         }| j                  t        |      d       | j	                  t
        |j                  d       |j                         }| j	                  t
        |j                  d       |j                          | j	                  t
        |j                  d       |j                          |j                  d       y )Nr      x)r   r   r(   r   r2   r   rE   release)r
   rP   r   buf2s       r   test_getbuffer_emptyz"PyBytesIOTest.test_getbuffer_empty  s    oosS) 	+u{{D9 +u{{D9+u{{D9Dr   c                    | j                  d      }|j                         }t        j                  |      }t        j                  |      }|g}|j	                  |       t        j                         5  ~d d d        ~~t        j                         5  t        j                          d d d        | j                   |              | j                   |              y # 1 sw Y   ixY w# 1 sw Y   BxY w)Nr   )
r   r   weakrefrefappendr   catch_unraisable_exceptiongccollectassertIsNone)r
   rP   r   memiowrbufwrr   s         r   test_getbuffer_gc_collectz'PyBytesIOTest.test_getbuffer_gc_collect  s    ]+oo++e$C E	//1 		//1 	JJL	')$%'"	 	
	 	s   4CC*C'*C3c                     | j                  d      }| j                  | j                  |      j                         |       | j                  | j                  |      j                  d      |       y )Nr   r]   )r   r(   r   read1r>   s     r   
test_read1zPyBytesIOTest.test_read1  sV    ll<(c*002C8c*004c:r   c                    | j                  d      }| j                  |      }t        d      }| j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       t        d      }|j                  d       | j                  |j	                  |      d       | j                  |d	       t        d
      }|j                  d       | j                  |j	                  |      d       | j                  |d
       | j                  t        |j                  d       dd l}|j                  dd      }| j                  |      }|j	                  |       | j                  |j                         d	       |j                          | j                  t        |j                  |       | j                  d      }t               }|j                  d       |j	                  |       | j                  |d
       y )Nr   s   hellor$   s   12345s   67890r   s   hello worldrf   s   1234567890dr   rK   r   s   123r   )r   r   	bytearrayr(   readintor1   r2   r3   arraytobytesrM   rN   )r
   r   rP   r   r   r   s         r   test_readintozPyBytesIOTest.test_readinto  s   ll<(S!h*A.H%*A.H%*A.H%n%

1*B/N+cN

1*A.C )U^^R8KK^,S!qn5*enna8V$K

2qC r   c                    | j                  d      }| j                  |      }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d	       | j                  |j                  dd      d
       |j                  dd       | j                  |j	                         |dd         |j                  d       |j                  dd       | j                  |j	                         |dd         y )Nr   r]   r#   r   r/   r_   rB   rf   r   r~   )r   r   r(   r1   r)   rO   s      r   test_relative_seekz PyBytesIOTest.test_relative_seek  s   ll<(S!B*A.Aq)1-B*A.B*A.Aq)2.Aq)2.

2qs23x0

1

1as12w/r   c                     | j                         }| j                  t        | j                   d       | j                  t        |j                  d       | j                  t        |j                  dg       y r   )r   r2   r3   rE   rT   r   s     r   test_unicodezPyBytesIOTest.test_unicode+  sS    )T\\<@)U[[,?)U%5%5~Fr   c                 *   d}dd l }|j                  dt        |            }| j                  |      }| j                  |j	                         |       | j                  |j                  |      d       | j                  |j	                         |       y )Nr   r   r   rf   )r   rx   r   r(   rL   rE   )r
   r   r   r   rP   s        r   test_bytes_arrayzPyBytesIOTest.test_bytes_array2  sq    KKT#Y'Q)3/Q,)3/r   c                     | j                  d      }| j                  |       | j                  t        | j                  |d        y )Nr   )initial_bytes)r   )r   r   r2   r3   r>   s     r   test_issue5449zPyBytesIOTest.test_issue5449;  s9    ll<(3')T\\3DAr   N)r   r   r   pyior<   staticmethodr   BytesIOr   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s`      44! !llG
C72#&;
!B0 G0Br   r   c                   N    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y)TextIOTestMixinc                    | j                  d       fd}| j                  j                  d        j                  d        |        | j                  j                  d       j                  d        |        | j                  j                  d       j                  d        |        | j                  j                  d       y )	Nnewlinec                  H     j                  d        j                          y )Nr   )r1   r)   rP   s   r   force_decodez<TextIOTestMixin.test_newlines_property.<locals>.force_decodeH  s    JJqMJJLr   a

b
)r   
cd)r   r   )r   r(   newlinesrE   )r
   r   rP   s     @r   test_newlines_propertyz&TextIOTestMixin.test_newlines_propertyC  s    T*	 	.E.G8F)=>r   c                    | j                         }| j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       y )Nr]   r#   r/   r~   r_   )r   r2   OSErrorr1   r   s     r   r   z"TextIOTestMixin.test_relative_seekV  s    '5::r15'5::q!4'5::r15'5::r15'5::q!4'5::q!4r   c                     | j                         }| j                  |j                         | j                  |j                         | j	                  |j
                         y r   )r   r   encodingerrorsr   line_bufferingr   s     r   test_textio_propertiesz&TextIOTestMixin.test_textio_properties`  sG     	%..)%,,'--.r   c                    | j                  d      }| j                  t        |      g d       | j                  |j                         d       | j                         }| j                  |j	                  d      d       |j                  d       | j                  t        |      g d       | j                  |j                         d       y )Na
b
cdr   r   r   r^   r   r   r(   rx   rL   rE   r1   r   s     r   test_newline_defaultz$TextIOTestMixin.test_newline_defaulti  s    ^,e&>?)>:^4a8

1e&>?)>:r   c                    | j                  dd       }| j                  t        |      g d       |j                  d       | j                  |j	                  d      d       | j                  |j	                  d      d       | j                  |j	                  d      d	       | j                  |j	                  d      d
       | j                  |j                         d       | j                  d       }| j                  d|j                  d             | j                  d|j                  d             | j                  d|j                  d             |j                  d       | j                  |j	                         d       | j                  |j                         d       | j                  dd       }| j                  |j	                  d      d       y )Nr  r   )r   zb
zc
dr   r#   r   r_   z
b
cr   za
b
c
dr   r/   r   r   za
bza
br   r(   rx   r1   r)   rL   rE   r   s     r   test_newline_nonez!TextIOTestMixin.test_newline_nonet  sh   ^T:e&@A

1A,A.A.A-)<8T*EKK./EKK01EKK/0

1|4)<8Xt4A/r   c                 T   | j                  dd      }| j                  t        |      g d       |j                  d       | j                  |j	                  d      d       | j                  |j	                  d      d	       | j                  |j	                  d
      d       | j                  |j                         d       | j                  d      }| j                  d|j                  d             | j                  d|j                  d             | j                  d|j                  d	             | j                  d|j                  d             |j                  d       | j                  t        |      g d       | j                  |j                         d       y )Nr  rK   r   )r   r   cr  r   r%   za
br_   r  r#   r  r   bzdr  r   s     r   test_newline_emptyz"TextIOTestMixin.test_newline_empty  s>   ^R8e&BC

1A1A.A-)>:R(EKK./EKK./EKK./EKK./

1e&BC)>:r   c                    | j                  dd      }| j                  t        |      g d       | j                  |j                         d       | j                  d      }| j                  |j	                  d      d       |j                  d       | j                  t        |      g d       | j                  |j                         d       y )Nr  r   r   r  r^   r   r  r   s     r   test_newline_lfzTextIOTestMixin.test_newline_lf  s    ^T:e&>?)>:T*^4a8

1e&>?)>:r   c                 n   | j                  dd      }| j                  |j                         d       |j                  d       | j                  t	        |      g d       | j                  |j                         d       | j                  d      }| j                  |j                  d      d       |j                  d       | j                  t	        |      g d       |j                  d       | j                  |j                         g d       | j                  |j                         d       y )Nr  r  r   zabcdr   )zar  r  r  r  r^   )r   r(   r)   r1   rx   rL   rE   rp   r   s     r   test_newline_crzTextIOTestMixin.test_newline_cr  s    ^T:~6

1e&FG)>:T*^4a8

1e&FG

1*,LM)>:r   c                 n   | j                  dd      }| j                  |j                         d       |j                  d       | j                  t	        |      g d       |j                  d       | j                  |j                         g d       | j                  |j                         d       | j                  d      }| j                  |j                  d      d       |j                  d       | j                  t	        |      g d       | j                  |j                         d       y )Nr  r   r   z
a
b
cdr   )za
zb
r   r^   )r   r(   r)   r1   rx   rp   rL   rE   r   s     r   test_newline_crlfz!TextIOTestMixin.test_newline_crlf  s    ^V<'9:

1e&BC

1*,HI)+=>V,^4a8

1e&BC)+=>r   c                     | j                  dd       }| j                  |j                  d      d       | j                  |j                         d       y )Nza
b
r   r$   za
b
)r   r(   r)   rL   r   s     r   test_issue5265zTextIOTestMixin.test_issue5265  sC    \48A1)84r   c                     | j                  t        | j                  d       | j                  t        | j                  d       dD ]  }| j                  |        y )N   
r   error)NrK   r   r  r   )r2   r3   r   rN   )r
   r   s     r   test_newline_argumentz%TextIOTestMixin.test_newline_argument  sQ    )T\\5A*dllGD5 	*GLLL)	*r   N)r   r   r   r  r   r
  r  r  r  r  r  r  r   r$  r   r   r   r   r   A  s9    ?&5/	;0,;&
;; ? 5*r   r   c                   J    e Zd ZeZej                  Zej                  ZdZ	d Z
y)PyStringIOTestrK   c                     | j                  d      }| j                  |j                         d       | j                         }|j                  d       | j                  |j	                         d       y )Nu   )r   r(   r)   rE   rL   r   s     r   test_lone_surrogatesz#PyStringIOTest.test_lone_surrogates  sT    X&x0H)84r   N)r   r   r   strr   r   StringIOr   r<   r*   r(  r   r   r   r&  r&    s&    GmmG44
C5r   r&  c                   Z    e Zd ZdZeZej                  ZdZ G d dej                        Z
y)PyStringIOPickleTestzETest if pickle restores properly the internal state of StringIO.
    rK   c                       e Zd Zd Zd Zy)PyStringIOPickleTest.ioclassc           	      x    t        j                  t        j                  t        j                  |i |            S r   )r   r   r   r   r*  clsargskwargss      r   __new__z$PyStringIOPickleTest.ioclass.__new__  s(    <<T]]D-KF-K LMMr   c                      y r   r   r
   r2  r3  s      r   r   z%PyStringIOPickleTest.ioclass.__init__      r   Nr   r   r   r4  r   r   r   r   r   r.    s    	N	r   r   N)r   r   r   __doc__r)  r   r   r<   r*   r*  r   r   r   r   r,  r,    s-    G44
C$-- r   r,  c                      e Zd Zej                  Zej                  Zd Zd Ze	j                  Z
e	j                  d        Zd Ze	j                  d        Ze	j                  d        Ze	j                  d        Ze	j                  d        Zy	)
CBytesIOTestc                 d   | j                         }|j                         }| j                  t        |      d       t	        |d          | j                  |d   t               |d   | j                  |d   t               |j                          | j                  t        |j                         y )Nr/   r   r#   r_   )r   __getstate__r(   rh   r   assertIsInstanceintdictrM   r2   rN   r
   rP   states      r   test_getstatezCBytesIOTest.test_getstate  s    ""$UQ'%(eAh,8!!%(D1*e&8&89r   c                    | j                         }|j                  d       |j                  t        d      dd f       |j                  ddddif       | j                  t        |j                  d       | j                  t
        |j                  d       | j                  t
        |j                  d       | j                  t
        |j                  d	       | j                  t
        |j                  d
       | j                  t
        |j                         | j                  t
        |j                  d       |j                          | j                  t        |j                  d       y )N)   no errorr   NrE  r   rX   r/   )r   r]   N)unicoder   N)r   r0   N)r   r   r   )s   len-testr   )s   closedr   N)r   __setstate__r   r2   rN   r3   rM   r   s     r   test_setstatezCBytesIOTest.test_setstate  s   12Ik2At<=KVQK89*e&8&8/J)U%7%79MN)U%7%79IJ)U%7%7E)U%7%79IJ)U%7%78)U%7%7;*e&8&8:NOr   c                 ^   t        j                  d      }| j                  }| j                  t        j                  t        j                               |        |t        j                         |       d} |t        j                  d|z        |t        j                  d|z        z          y )NP2n2Pnr}      a)
r   calcobjsizecheck_sizeofr(   object
__sizeof__ior   sys	getsizeof)r
   basesizecheckns       r   test_sizeofzCBytesIOTest.test_sizeof  s|    &&x0!!**2::<8(CbjjlH&bjj"Hs}}TAX/F$FGr   c                     d}t        j                  |      }| j                  |      }| j                  t        j                  |      |dz           ||       | j                  t        j                  |      |       y )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r#   )rQ  getrefcountr   r(   )r
   mutationimmold_rcrP   s        r   _test_cow_mutationzCBytesIOTest._test_cow_mutation"  s`    %S!-vz:-v6r   c                 ,    d }| j                  |       y )Nc                 &    | j                  d       y )Nr#   )rF   r   s    r   rY  z0CBytesIOTest.test_cow_truncate.<locals>.mutation.  s    NN1r   r\  r
   rY  s     r   test_cow_truncatezCBytesIOTest.test_cow_truncate+  s    	)r   c                 ,    d }| j                  |       y )Nc                 H    | j                  d       | j                  d       y )Nr   s   foo)r1   rE   r   s    r   rY  z-CBytesIOTest.test_cow_write.<locals>.mutation5  s    JJqMKKr   r_  r`  s     r   test_cow_writezCBytesIOTest.test_cow_write2  s    	  	)r   c                 t    | j                  d      }|j                         fd}| j                  |       y )Ns   fooooooc                 (    | j                         y r   )rG  )rP   rB  s    r   rY  z0CBytesIOTest.test_cow_setstate.<locals>.mutation?  s    u%r   )r   r=  r\  )r
   rP   rY  rB  s      @r   test_cow_setstatezCBytesIOTest.test_cow_setstate:  s4     Z(""$	&)r   c                     t        d      }t        j                  |      }| j                  |      }| j	                  t        j                  |      |       y )Ni   )r   rQ  rX  r   r(   )r
   bar[  rP   s       r   test_cow_mutablezCBytesIOTest.test_cow_mutableC  sB    
 t_$R ,f5r   N)r   r   r   rP  r   r   r<   rC  rH  r   rM  cpython_onlyrV  r\  ra  rd  rg  rj  r   r   r   r;  r;    s    jjG22	:P  ''LH H7 * * * * * * 6 6r   r;  c                   N    e Zd Zej                  Zej                  Zd Zd Zd Z	y)CStringIOTestc                 `   | j                  d      }| j                  |      }| j                  |j                         |       | j                  |j	                  |      t        |             | j                  |j                         t        |             | j                  |j                         |       | j                  |j	                  |      t        |             | j                  |j                         t        |      dz         | j                  |j                         ||z          y )Nu   𠌊𠍇r_   )r   r   r(   rL   rE   rh   r7   rO   s      r   test_widecharzCStringIOTest.test_widecharS  s    ll12S!)3/S)3s84s3x0)3/S)3s84s3x!|4)395r   c                    | j                         }|j                         }| j                  t        |      d       | j	                  |d   t
               | j	                  |d   t
               | j	                  |d   t               |d   | j	                  |d   t               |j                          | j                  t        |j                         y )Nr%   r   r#   r_   r/   )r   r=  r(   rh   r>  r)  r?  r@  rM   r2   rN   rA  s      r   rC  zCStringIOTest.test_getstate_  s    ""$UQ'eAh,eAh,eAh,8!!%(D1*e&8&89r   c                 &   | j                         }|j                  d       |j                  dddddif       | 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                         | j                  t        |j                  d       |j                          | j                  t        |j                  d       y )N)no errorr   r   Nrr  rK   r   rX   r/   )rK   rG   r   N)rK   rK   r]   N)r   rK   r   N)rK   r   r   N)rK   rK   r0   N)rK   rK   r   r   )zlen-testr   )r   rK   r   N)r   rG  r2   rN   r3   rM   r   s     r   rH  zCStringIOTest.test_setstatek  s4   67JA{;<*e&8&8:LM*e&8&8:LM)U%7%79KL)U%7%79KL)U%7%79LM)U%7%7H)U%7%7I)U%7%78)U%7%7;*e&8&8:QRr   N)
r   r   r   rP  r*  r   r<   ro  rC  rH  r   r   r   rm  rm  M  s'    kkG22
6
:Sr   rm  c                   N    e Zd Zej                  Z G d dej
                        Zy)CStringIOPickleTestc                       e Zd Zd Zd Zy)CStringIOPickleTest.ioclassc           	      x    t        j                  t        j                  t        j                  |i |            S r   )r   r   r   rP  r*  r0  s      r   r4  z#CStringIOPickleTest.ioclass.__new__  s(    <<R[[$-I&-I JKKr   c                      y r   r   r6  s      r   r   z$CStringIOPickleTest.ioclass.__init__  r7  r   Nr8  r   r   r   r   rv    s    	L	r   r   N)r   r   r   rP  r<   r*  r   r   r   r   rt  rt  }  s    22"++ r   rt  r   )r9  unittesttestr   r   rP  _pyior   r   rQ  r   r   r   r:   TestCaser   r   r&  r,  r;  rm  rt  r   mainr   r   r   <module>r~     s   
   	 	   
  *0 *0Zi% i%XNBO%8(:K:K NBbS* S*l5_&9$h&7&75"?H,=,= U6= U6n-SN -S`.  zHMMO r   