o
    /h7                     @   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	   M/var/www/html/myenv/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   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   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   _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   r2   "%s"encodinggetincrementaldecoderr)   )codecs
getdecoderr   r4   hasattrr   r;   join
iterdecoder   	getreaderr   appendr   )	r:   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 )Nr7   r!   r    r   r9   r;   r)   )r<   r=   r   r>   r   r;   r?   r@   r   rA   r   rB   r   )	r:   rC   rE   rD   rF   rG   rH   rI   rJ   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{}r7   Nr6   )rN   )pytestraises
ValueErrordecode)r   rK   rO   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.encoderr6   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    r7   r2   r8   r   r9   getincrementalencoderr)   )r<   
getencoderr4   rW   r>   r   rY   r?   
iterencoder   	getwriterr   r   )
r:   rC   rD   e	inputdecl
outputdeclierG   swrJ   r	   r	   r
   check   s6   


z%TestCodec.test_encoder.<locals>.checkr!   r#   rL   rM   r$   r(   r&   r    rP   u   @charset "x";gürk{}rQ   rR   z@charset "css";div{}r7   NrS   )rT   rU   rV   r   )r   rb   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)r7   c                    s    d | fi |d S )N   r   r	   )rC   kwargsinfor	   r
   	decodeall>  s   z.TestCodec.test_decode_force.<locals>.decodeallc                    s    j di |}|| S )Nr	   )incrementaldecoderrW   )rC   re   decoderrf   r	   r
   	incdecodeB  s   
z.TestCodec.test_decode_force.<locals>.incdecodec                    s"   t | } j|fi |}| S r   )iostreamstreamreaderr   )rC   re   streamreaderrf   r	   r
   streamdecodeF  s   z1TestCodec.test_decode_force.<locals>.streamdecodeu   @charset "utf-8"; ÿu   @charset "iso-8859-1"; Ã¿rP   T)r:   force   ÿu   Ã¿FN)r<   lookupr   )r   rh   rk   rp   rE   rC   outputr	   rf   r
   test_decode_force:  s$   
zTestCodec.test_decode_forceN)	r   r   r   r-   r1   r5   rX   rc   ru   r	   r	   r	   r
   r   )   s    Nl=r   )
r   r<   iorT   cssutilsr   BytesIOrl   r   r   r	   r	   r	   r
   <module>   s    