o
    Q+ i7                     @   sN   d Z ddlZddlZddlZddlmZ ejZG dd dZG dd dZ	dS )zTestcases for cssutils.codec    N)codecc                   @   s*   e Zd ZdZdd Zdd Zd
ddZd	S )QueuezF
    queue: write bytes at one end, read bytes from the other end
    c                 C   s
   d| _ d S )N    _bufferself r	   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/cssutils/tests/test_codec.py__init__   s   
zQueue.__init__c                 C   s:   t |tr
| }n
t |trt|g}|  j|7  _d S N)
isinstancestrencodeintbytesr   )r   charsr	   r	   r
   write   s
   



zQueue.writec                 C   s:   |dk r| j }d| _ |S | j d | }| j |d  | _ |S )Nr   r   r   )r   sizesr	   r	   r
   read   s   z
Queue.readN)r   )__name__
__module____qualname____doc__r   r   r   r	   r	   r	   r
   r      s
    	r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )	TestCodecc                 C   s  t ddks	J t ddksJ t d dksJ t d dks(J t ddks1J t d dks<J t d	d
dksHJ t ddksQJ t d dks\J t ddkseJ t dddksqJ t ddkszJ t dddksJ t dddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t dddksJ t d dksJ t d!dksJ t d"dksJ t d#dksJ t d$dksJ t d%dksJ t d&d'ks J t d(dks*J t d)dks4J t d*dks>J t d+dksHJ t d,dksRJ t d-dks\J t d.dksfJ t d/dkspJ t d0dkszJ t d1dksJ t d2d3ksJ t d4d5ksJ t d d6dksJ t d d7dksJ t d(d6dksJ t d(d7dksJ d8S )9zcodec.detectencoding_str()r   NF   u   ï3utf-8Fu   Ã¯3s   u   ï»3u   ï»¿	utf-8-sig)r!   T   u   ÿ3s   u   ÿþ3utf-16)r#   Ts    u   ÿþ 3u   ÿþ  utf-32)r$   T    s    3s     s     3s     s      3s      @)	utf-32-beFu     þÿ   @s   @3s   @ s   @ 3s   @  s   @  3s   @   )	utf-32-leFs   @cs   @chs   @chas   @chars   @charss   @charses   @charsets	   @charset s
   @charset "s   @charset "xs   @charset "") Ts   @charset "x"xTFTN)r   Zdetectencoding_strr   r   r	   r	   r
   test_detectencoding_str*   sZ   z!TestCodec.test_detectencoding_strc                 C   sN   t ddks	J t ddksJ t dddksJ t ddks%J dS )	zcodec.detectencoding_unicode()@charset "xr   za {}r   T@charset "x"r*   N)r   Zdetectencoding_unicoder   r	   r	   r
   test_detectencoding_unicodex   s   z%TestCodec.test_detectencoding_unicodec                 C   s   d}t |ddu sJ d}t |ddu sJ d}t |dd|ks%J d}t |d|ks1J d}t |d|dd	ksAJ dS )
zcodec._fixencoding()z
@charset "r    Nr-   Tz
@charset xr.   "x"z"utf-8")r   Z_fixencodingreplace)r   r   r	   r	   r
   test_fixencoding   s    zTestCodec.test_fixencodingc                 C   s   ddd}|d |d |d |d |d |d	 |d
 ddd}|d |dd |d |d t t dd W d   dS 1 sMw   Y  dS )zcodecs.decoder   @charset "x";gürk€{}c           	      S   s  | }|dkrd}t d}||| d |dd| ks J ||| | dd |dd| ks5J ttdrrt d }d	||| |dd| ksUJ t d| d}d	||| |dd| ksrJ t	 }t 
d|}g }|| D ]}|| ||  qd	||dd| ksJ t	 }t 
d|| d}g }|| D ]}|| ||  qd	||dd| ksJ d S )
Nr!   r    cssr   r0   "%s"encodinggetincrementaldecoderr)   )codecs
getdecoderr   r1   hasattrr   r8   join
iterdecoder   	getreaderr   appendr   )	r7   inputoutputencodingdidqsrresultcr	   r	   r
   	checkauto   sB   







"z)TestCodec.test_decoder.<locals>.checkautor!   r#   	utf-16-le	utf-16-ber$   r(   r&      @charset "%s";gürk{}c           	      S   sf  t d}||  }| }|dkrd}||| d |ksJ ||| | dd |ks-J ttdr]t d }d||| |ksGJ t d| }d||| |ks]J t }t 	d|}g }|| D ]}|
| ||  qnd||ksJ t }t 	d|| d}g }|| D ]}|
| ||  qd||ksJ d S )Nr4   r!   r    r   r6   r8   r)   )r9   r:   r   r;   r   r8   r<   r=   r   r>   r   r?   r   )	r7   r@   rB   rA   rC   rD   rE   rF   rG   r	   r	   r
   	checkdecl   s4   



z)TestCodec.test_decoder.<locals>.checkdeclr    
iso-8859-1u   @charset "%s";gürkiso-8859-15cp1252s   @charset "css";div{}r4   Nr3   )rK   )pytestraises
ValueErrordecode)r   rH   rL   r	   r	   r
   test_decoder   s    
0
(
"zTestCodec.test_decoderc                 C   s   ddd}|d |d |d |d |d |d	 |d
 |d |dd |d |d t t dd W d   dS 1 sHw   Y  dS )zcodec.encoderr3   c           
      S   sp  | }|dkrd}t d}|dd|  }|dd| }||d | |ks*J ||| dd | |ks9J ttdrjt d }d	||| |ksSJ t d| d}d	||| |ksjJ t	 }t 
d|}|D ]}	||	 qv| | |dd| ksJ t	 }t 
d|| d}|D ]}	||	 q| | |dd| ksJ d S )
Nr!   r    r4   r0   r5   r   r6   getincrementalencoderr)   )r9   
getencoderr1   rT   r;   r   rV   r<   
iterencoder   	getwriterr   r   )
r7   r@   rA   eZ	inputdeclZ
outputdeclierD   swrG   r	   r	   r
   check   s6   


z%TestCodec.test_encoder.<locals>.checkr!   r#   rI   rJ   r$   r(   r&   r    rM   u   @charset "x";gürk{}rN   rO   z@charset "css";div{}r4   NrP   )rQ   rR   rS   r   )r   r]   r	   r	   r
   test_encoder   s   
*
"zTestCodec.test_encoderc                    s   t d  fdd} fdd} fdd}|||fD ]C}d }d}|||ks,J d }d	}||d
dd|ks=J d }d}||d
dd|ksNJ d }d}||d
dd|ks_J qdS )zcodec.decode (force)r4   c                    s    d | fi |d S )N   r   r	   )r@   kwargsinfor	   r
   	decodeall>  s   z.TestCodec.test_decode_force.<locals>.decodeallc                    s    j di |}|| S )Nr	   )incrementaldecoderrT   )r@   r`   decoderra   r	   r
   	incdecodeB  s   
z.TestCodec.test_decode_force.<locals>.incdecodec                    s"   t | } j|fi |}| S r   )iostreamstreamreaderr   )r@   r`   streamreaderra   r	   r
   streamdecodeF  s   z1TestCodec.test_decode_force.<locals>.streamdecodeu   @charset "utf-8"; ÿu   @charset "iso-8859-1"; Ã¿rM   T)r7   force   ÿu   Ã¿FN)r9   lookupr   )r   rc   rf   rk   rB   r@   outputr	   ra   r
   test_decode_force:  s$   
zTestCodec.test_decode_forceN)	r   r   r   r,   r/   r2   rU   r^   rp   r	   r	   r	   r
   r   )   s    Nl=r   )
r   r9   iorQ   Zcssutilsr   BytesIOrg   r   r   r	   r	   r	   r
   <module>   s    